Linux网络开发基础.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux网络开发基础

Linux网络协议开发基础 第 1 节 基于BSD的Linux网络体系结构 BSD是UNIX系统中通用的网络接口,支持多种网络协议类型,也是一种内部进程的通信机制。Linux系统实现BSD socket的标准,支持多种网络协议。常用的协议如下表所示 协议名称 描述 UNIX UNIX域套接口 INET Internet地址族TCP/IP协议支持通信 IPX Novell IPX PPLE TALK Appletalk DDP TALK Appletalk DDP TALK Appletalk DDP Linux内核网络协议架构 基于服务器/客户机的通信模式 bsd socket采用服务器/客户机的通信模式服务器可以同时与多个客户机建立连接,但每一时刻只能处理一个客户机的请求。由于tcp和udp协议的不同特点,在通信方式上也有一定的不同. Tcp/Ip协议的体系结构 Tcp/ip协议是Linux内核所支持协议中的重要组成部分,是目前主流的网络协议,在Internet中得到广泛应用。Tcp/Ip协议分为四个层次。分别为数据链路层、网络层、传输层和应用层。数据链路层包括网络设备驱动程序和网卡;网络协议用于处理数据包的路由;传输层为上层应用提供可靠的面向字符流接口;应用层处理特定的网络应用,例如:ftp、文本和ngs等.Tcp/Ip协议的体系结构如下图所示. Tcp/Ip协议中数据包的封装过程 数据在从上层逐层发送至下层的过程,每经过一层次,都需要在数据前封装协议头,其中几率了与该层功能和管理相关的信息,在从下层协议向上层传送的而过程,正好相反,讲逐层去除协议头,将数据最终传送至接受者,其过程如下图所示。 第 2 节 BSD socket 的编程模式与借口 Tcp/ip协议向应用程序提供了两种类型的服务访问接口,即面向连接的Tcp协议和无连接的Udp协议. 基于tcp协议的服务器/客户机通信模式 同城瓶协议是一种面向连接的字符流协议,为上层应用提供可靠的通信服务。 服务器接收到客户机发送的连接请求,在与客户机建立连接后,双方便可进行数据收发,其通信模式如下图所示。 基于udp协议的服务器/客户机通信模式 udp协议是一种面向无连接的通信协议,发送方不能保证数据一定到达对方,因此,udp协议是一种不可靠的通信协议,但在可靠性较高的网络中具有很高的可靠性,同时,udp协议所占用的系统开销比较小,因此在很多场合,udp协议也得到了广发应用。其服务器/客户机通信模式如下图所示、 字节序 当某数据类型的值需要多个字节时,例如,对于占用两个字节的整数类型。将涉及带字节在内存中的存放次序,这和处理器有关,不同的处理器所采用的存储模式未必相同,但不外乎两种方式,即:小端模式和大端模式。 小端模式 小端模式是将最小的数据字节存放在内存的低地址处,Intel 80x86 处理器就采用这种字节序模式。 大端模式 大端模式正好与小端模式相反,将表高数据位的字节存放在内存的低字节处, Motorola处理器就采用这种模式,网络字节序就采用大端模式,这三者的关系如下图所示 由于进行通信的两端采用不同的处理器,因此为了保证数据传送的正确性,在传输时,树妖将数据转换为网络序,当数据传送至某端,在转换为本地的字节序模式。 地址存取/转换 1. struct hostent* gethostbyname (const char* hostname); 将主机名称转换为IP地址,通过/etc/hosts实现, 可用于DNS 2. struct hostent* gethostbyaddr (const char* addr, size_t len, int family); 将IP地址转换为主机名 3. char* inet_ntoa (struct in_addr inaddr); 将IP地址转换为以.分割的ASCII形式,例如:8 4. int gethostname (char* name, size_t namelen); 获取主机名 数据结构 struct hostent { char* h_name; /* official name of host */ char** h_aliases; /* NULL-terminated alias list */ int h_addrtype /* address type (AF_INET) */ int h_length; /* length of addresses (4B) */ char** h_addr_list; /* NULL-terminated address li

文档评论(0)

jiqinyu2015 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档