linux网络编程中嵌教育嵌入式linux开发课件_第1页
linux网络编程中嵌教育嵌入式linux开发课件_第2页
linux网络编程中嵌教育嵌入式linux开发课件_第3页
linux网络编程中嵌教育嵌入式linux开发课件_第4页
linux网络编程中嵌教育嵌入式linux开发课件_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、www.chinaeda.cnlinux网络编程1.tcp/ip协议概述2.网络编程基础3.网络高级编程www.chinaeda.cn1、tcp/ip协议概述协议概述1.1 osi参考模型与tcp/ip参考模型应用层表示层会话层传输层网络层数据链路层物理层应用层传输层网络层网络接口层osi参考模型tcp/ip参考模型图1 osi参考模型与tcp/ip参考模型对应关系www.chinaeda.cn图2 osi参考模型与tcp/ip参考模型对应关系www.chinaeda.cn1.2 tcp/ip协议族协议族tcp/ip 实际上一个一起工作的通信家族,为网际数据通信提供通路。为讨论方便可将tcp/

2、ip 协议组大体上分为三部分:1internet 协议(ip)2传输控制协议(tcp)和用户数据报文协议(udp)3处于tcp 和udp 之上的一组协议专门开发的应用程序。它们包括:telnet,文件传送协议(ftp),域名服务(dns)和简单的邮件传送程序(smtp)等许多协议。www.chinaeda.cn1.2.1 网络层第一部分也称为网络层。包括internet 协议(ip)、网际控制报文协议(icmp)和地址识别协议(arp).n internet 协议(ip)。该协议被设计成互联分组交换通信网,以形成一个网际通信环境。它负责在源主机和目的地主机之间传输来自其较高层软件的称为数据报文

3、的数据块,它在源和目的地之间提供非连接型传递服务。n 网际控制报文协议(icmp)。它实际上不是ip层部分,但直接同ip层一起工作,报告网络上的某些出错情况。允许网际路由器传输差错信息或测试报文。n 地址识别协议(arp)。arp 实际上不是网络层部分,它处于ip和数据链路层之间,它是在32位ip地址和48位局域网物理地址之间执行翻译的协议。www.chinaeda.cn1.2.2 传输层协议第二部分是传输层协议。包括传输控制协议和用户数据报文协议。n 传输控制协议(tcp)。由于ip 提供非连接型传递服务,因此tcp应为应用程序存取网络创造了条件,使用可靠的面向连接的传输层服务。该协议为建立

4、网际上用户进程之间的对话负责。此外,还确保两个以上进程之间的可靠通信。它所提供的功能如下。1监听输入对话建立请求。2请求另一网络站点对话。3可靠的发送和接收数据。4适度的关闭对话。www.chinaeda.cn1.2.3 应用程序部分n 用户数据报文协议(udp)。udp 提供不可靠的非连接型传输层服务,它允许在源和目的地站点之间传送数据,而不必在传送数据之前建立对话。此外,该协议还不使用tcp使用的端对端差错校验。当使用udp时,传输层功能全都发挥,而开销却比较低。它主要用于那些不要求tcp协议的非连接型的应用程序。例如,名字服务、网络管理、视频点播和网络会议等。www.chinaeda.c

5、n最后是应用程序部分。这部分包括telnet,文件传送协议(ftp 和tftp),简单的文件传送协议(smtp)和域名服务(dns)等协议。tcp/ip 使用了主干网络,能连接各种主机和lan 的多级分层结构,局部用户能方便的联网,不致影响到整个网络系统。此外这种结构还有利于局部用户控制操作和管理。tcp/ip 具有两个主要功能。第一是ip在网络之间(有时在个别网络内部)提供路由选择。第二是tcp将tp传递的数据传送的接收主机那的适当的处理部件。www.chinaeda.cn1.3 internet 协议(协议(ip)ip主要有以下四个主要功能: (1)数据传送 (2)寻址 (3)路由选择 (

6、4)数据报文的分段www.chinaeda.cn1.3.1 ip功能功能ip的主要目的是为数据输入/输出网络提供基本算法,为高层协议提供无连接的传送服务。这意味着在ip将数据递交给接收站点以前不在传输站点和接收站点之间建立对话(虚拟链路)。它只是封装和传递数据,但不向发送者或接收者报告包的状态,不处理所遇到的故障。www.chinaeda.cnip协议不注意包内的数据类型,它所知道的一切是必须将某些称为ip 帧头的控制协议加到高层协议(tcp 或者udp)所接受的数据上。图3 封装在ethernet 帧中的ip 头www.chinaeda.cn1.3.2 ip 地址在在tcp/iptcp/ip

7、网络中,每个主机都有唯一的地址,网络中,每个主机都有唯一的地址,它是通过它是通过ipip协议来实现的。协议来实现的。ipip协议要求在每次与协议要求在每次与tcp/iptcp/ip网络建立连接时,每台主机都必须为这个网络建立连接时,每台主机都必须为这个连接分配一个唯一的连接分配一个唯一的3232位地址,因为在这个位地址,因为在这个3232位位ipip地址中,不但可以用来识别某一台主机,而且地址中,不但可以用来识别某一台主机,而且还隐含着网际间的路径信息。需要强调指出的,还隐含着网际间的路径信息。需要强调指出的,这里的主机是指网络上的一个节点,不能简单地这里的主机是指网络上的一个节点,不能简单地

8、理解为一台计算机,实际上理解为一台计算机,实际上ipip地址是分配给计算地址是分配给计算机的网络适配器(即网卡)的,一台计算机可以机的网络适配器(即网卡)的,一台计算机可以有多个网络适配器,就可以有多个有多个网络适配器,就可以有多个ipip地址,一个地址,一个网络适配器就是一个节点。网络适配器就是一个节点。www.chinaeda.cnipip地址为地址为3232位地址,一般以位地址,一般以4 4个字节表个字节表示。每个字节的数字又用十进制表示,即示。每个字节的数字又用十进制表示,即每个字节的数的范围是每个字节的数的范围是02550255,且每个数字,且每个数字之间用点隔开,例如:之间用点隔开

9、,例如:1212,这,这种记录方法称为种记录方法称为“点点- -分分”十进制记号法。十进制记号法。ipip地址的结构如下所示:地址的结构如下所示:网络类型网络id主机idwww.chinaeda.cn1.3.3 ip地址的分类地址的分类internet地址可分成5类: a、b、c三类由internic(internet网络信息中心)在全球范围内统一分配,d、e类为特殊地址。 www.chinaeda.cn0 1 7 8 310网络地址id主机地址ida类ip地址10网络地址id主机地址id0 1 2 15 16 31b类ip地址110网络地址id主机

10、地址id012 3 23 24 31c类ip地址www.chinaeda.cn1110广播地址id0 1 2 3 4 31d类ip地址11110保留用于将来和试验使用 0 1 2 3 4 5 31e类ip地址www.chinaeda.cna 类网络地址有128 个(支持127)个网络,占有最左边的一个字节(8 位)。高位(0)表示识别这种地址的类型。b 类地址使用左边两个8 位用来网络寻址。两个高位(10)用于识别这种地址的类型,其余的14 位用作网络地址,右边的两个字节(16 位)用作网络节点。c 类地址是最常见的internet 地址。三个高位(110)用于地址类型识别,左边三个字节的其余

11、21 位用于寻址。c 类地址支持1046个网络,每个网络可多达256 端点。d 类地址是相当新的。它的识别头是1110,用于组播,例如用于路由器修改。e 类地址为时延保留,其识别头是11110。www.chinaeda.cn1.4 传输控制协议(传输控制协议(tcp)tcp(传输控制协议transmission control protocol)是重要的传输层协议,传输层软件tcp的目的是允许数据同网络上的另外站点进行可靠的交换。它能提供端口编号的译码,以识别主机的应用程序,而且完成数据的可靠传输。tcp 协议具有严格的内装差错检验算法确保数据的完整性。tcp 是面向字节的顺序协议,这意味着包

12、内的每个字节被分配一个顺序编号,并分配给每包一个顺序编号。www.chinaeda.cn图4 tcp 头信息www.chinaeda.cn1.5 用户数据报文协议用户数据报文协议udp(用户数据报协议user datagram protocol)也是tcp/ip 的传输层协议,它是无连接的,不可靠的传输服务。当接收数据时它不向发送方提供确认信息,它不提供输入包的顺序,如果出现丢失包或重份包的情况,也不会向发送方发出差错报文。udp 的主要作用是分配和管理端口编号,以正确无误的识别运行在网络站点上的个别应用程序。由于它执行功能时具有较低的开销,因而执行速度比tcp快。它多半用于不需要可靠传输的应

13、用程序,例如网络视频点播和视频会议等。www.chinaeda.cn图5 udp 头信息www.chinaeda.cn1.6 tcp/ip 协议分组服务协议分组服务1.控制数据的协议ntcp以连接为基础,即两台电脑必须先建立一个连接,然后才能传输数据。事实上,发送和接受的电脑必须一直互相通讯和联系。nudp是一个无连接服务,数据可以直接发送而不必在两台电脑之间建立一个网络连接。它和有连接的tcp相比,占用带宽少,但是无法确认数据是否真正到达了客户端,而客户端收到的数据也不知道是否还是原来的发送顺序。www.chinaeda.cn2. 数据路由协议路由协议分析数据包的地址并且决定传输数据到目的电

14、脑最佳路线。他们也可以把大的数据分成几部分,并且在目的地再把他们组合起来。ip处理实际上传输数据。nicmp(网络控制信息协议internet control message protocol)处理ip的状态信息,比如能影响路由决策的数据错误或改变。nrip(路由信息协议routing information protocol)它是几个决定信息传输的最佳路由路线协议中的一个。nospf(open shortest path first)一个用来决定路由的协议。narp(地址解析协议address resolution protocol)确定网络上一台电脑的数字地址。ndns(域名系统domai

15、n name system)从机器的名字确定一个机器的数字地址。nrarp(反向地址解析协议reverse address resolution protocol)确定网络上一台计算机的地址,和arp正好相反。www.chinaeda.cn3.用户服务nbootp(启动协议boot protocol) 由网络服务器上取得启动信息,然后将本地的网络计算机启动。nftp(文件传输协议file transfer protocol)通过国际互连网从一台计算机上传输一个或多个文件到另外一台计算机。ntelnet(远程登陆)允许一个远程登陆,使用者可以从网络上的一台机器通过telnet连线到另一台机器,就

16、像使用者直接在本地操作一样。negp(外部网关协议exterior gateway protocol)为外部网络传输路由信息。nggp(网关到网关协议gateway-to-gateway protocol)在网关和网关之间传输路由协议。nigp(内部网关协议interior gateway protocol)在内部网络传输路由信息。www.chinaeda.cn5.其他协议(也为网络提供了重要的服务)nnfs(网络文件系统network file system)允许将一台机器的目录被另一台机器上的用户安装(mount)到自己的机器上,就像是对本地文件系统进行操作一样进行各式各样的操作。nnis

17、(网络信息服务network information service)对整个网络用户的用户名、密码进行统一管理,简化在nis 服务下整个网络登陆的用户名密码检查。nrpc(远程过程调用remote procedure call)通过它可以允许远程的应用程序通过简单的、有效的手段联系本地的应用程序,反之也是。nsmtp(简单邮件传输协议simple mail transfer protocol)一个专门为电子邮件在多台机器中传输的协议,平时发邮件的smtp 服务器提供的必然服务。nsnmp(简单网络管理协议simple network management protocol)这是一项为超级用户准

18、备的服务,超级用户可以通过它来进行简单的网络管理。www.chinaeda.cn2、网络编程基础网络编程基础2.1 socket概述 linux中的网络编程通过socket接口实现。socket既是一种特殊的io,它也是一种文件描述符。一个完整的socket 都有一个相关描述协议,本地地址,本地端口,远程地址,远程端口;每一个socket 有一个本地的唯一socket 号,由操作系统分配。www.chinaeda.cn套接字有三种类型:n 流式套接字(sock_stream) 流式的套接字可以提供可靠的、面向连接的通讯流。它使用了tcp协议。tcp 保证了数据传输的正确性和顺序性。n 数据报套

19、接字(sock_dgram) 数据报套接字定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠,无差错。使用数据报协议udp协议。n 原始套接字。 原始套接字允许对低层协议如ip或icmp直接访问,主要用于新的网络协议实现的测试等。www.chinaeda.cn2.2 套接字套接字地址结构地址结构struct sockaddr unsigned short sa_family; /* address族, af_xxx */char sa_data14; /* 14 bytes的协议地址 */; sa_family 一般来说, ipv4使用“af_inet”。 sa_

20、data 包含了一些远程电脑的地址、端口和套接字的数目,它里面的数据是杂溶在一起的。www.chinaeda.cnstruct sockaddr_in short int sin_family; /* internet地址族 */unsigned short int sin_port; /* 端口号 */struct in_addr sin_addr; /* internet地址 */unsigned char sin_zero8; /* 添0(和struct sockaddr一样大小)*/;这两个数据类型是等效的,可以相互转换,通常使用sockaddr_in更为方便www.chinaeda.

21、cn2.3 字节序列转换字节序列转换因为每一个机器内部对变量的字节存储顺序不同(有的系统是高位在前,底位在后,而有的系统是底位在前,高位在后 ),而网络传输的数据大家是一定要统一顺序的。所以对与内部字节表示顺序和网络字节顺序不同的机器,就一定要对数据进行转换。www.chinaeda.cn下面给出套接字字节转换程序的列表:n htons()“host to network short” 主机字节顺序转换为网络字节顺序(对无符号短型进行操作2bytes)n htonl()“host to network long”主机字节顺序转换为网络字节顺序(对无符号长型进行操作4bytes)n ntohs()“network to host short”网络字节顺序转换为主机字节顺序(对无符号短型进行操作2bytes)n ntohl()“network to host long ”网络字节顺序转换为主机字节顺序(对无符号长型进行操作4bytes)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论