通信网络程序的设计第6章-TCP-IP网络编程课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《通信网络程序的设计第6章-TCP-IP网络编程课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通信 网络 程序 设计 TCP IP 编程 课件
- 资源描述:
-
1、1 1第6章 TCP/IP网络编程6.1 TCP/IP协议概述协议概述6.3 TCP编程编程6.4 UDP编程编程6.5 组播编程组播编程6.6 WinSock I/O模型模型小结小结2 2基于TCP/IP协议的网络程序是当前网络通信的主要方式,TCP/IP协议目前也处于鼎盛时期。随着TCP/IP由IPv4向IPv6过渡,可以预见,这种通信协议还会使用很长时间。因此,基于TCP/IP协议的编程方法也是本书所介绍的重点内容之一。本章首先简要地介绍TCP/IP协议的基本内容,然后介绍TCP/IP在Windows操作系统下网络编程的重要编程接口WinSock,基于WinSock进行TCP/IP传输层
2、两种通信方式(即TCP和UDP)的编程,接着介绍基于WinSock的TCP/IP组播编程。为了使网络编程更加具有灵活性,本章介绍了三种I/O控制方法。3 36.1.1 基本概念基本概念TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是一系列协议,或者说是一个协议族,它定义了数据传输如何通过因特网进行交换。TCP/IP起源于20世纪60年代末美国政府资助的一个分组交换网络研究项目,到20世纪90年代已发展成为计算机之间最常用的组网协议。6.1 TCP/IP协议概述协议概述4 4TCP/IP允许分布在各地安装着完
3、全不同系统的计算机互相通信,是一个真正的开放系统。TCP/IP是根据它最主要的两个协议命名的,已经实际应用了许多年,并在世界范围内证明了它的有效性。5 51协议栈结构协议栈结构TCP/IP模型进一步提炼与合并了OSI模型,它取消了OSI模型中的表示层和会话层,并合并了数据链路层和物理层(由于主要与连接有关并依赖于阐述介质,因此TCP/IP参考模型实际上对物理层并没有定义),使得逻辑更加简洁明晰,在此基础上逐步实现了各种子协议。TCP/IP模型与OSI模型的比较如图6-1所示。6 6TCP/IP模型每一层所负责的功能如下:链路层:有时被称做数据链路层或网络接口层,通常包括操作系统中的设备驱动程序
4、和计算机中对应的网络接口卡,它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。网络层:有时也被称为互连网层,负责分组在网络中的活动,包括IP(网际协议)、ICMP(Internet互联网控制报文协议)以及IGMP(Internet组管理协议)。这一层TCP/IP有两个基本组件:一个是IP协议,另一个是路由协议。7 7图6-1 TCP/IP模型与OSI模型的比较8 8传输层:该层主要为两台主机上的应用程序提供端到端的数据通信,它分为两个不同的协议,即TCP(传输控制协议)和UDP(用户数据报协议)。TCP提供端到端的保证质量的数据传输,该层负责数据的分组、质量控制和超时重发等,对于应用层来
5、说,就可以忽略这些工作。UDP则只简单地把数据报从一端发送到另一端,至于数据是否到达或按时到达、数据是否损坏,这都必须由应用层来做。这两种协议各有用途,前者可用于面向连接的应用,而后者则在及时性服务中有着重要的用途,如网络多媒体通信等。9 9应用层:该层负责处理实际的应用程序细节,包括Telnet、HTTP、SMTP、FTP、DNS和SNMP等协议和应用。层与层之间的联系与逻辑分离是利用封装与分用过程分别实现的。10 102协议封装协议封装当应用程序传送数据时,数据按自上而下的方向被送入协议栈中,然后逐个通过每一层直到被当做一串比特流送入网络。其中,每一层对收到的上一层数据都要增加一些首部信息
6、(有时还要增加尾部信息),通过层层包裹完成数据的封装过程,使之适合网络传输,这相当于完成了1.1.2节提及的数字通信中的信道编码。以应用程序通过TCP协议传输数据为例,该过程如图6-2所示。11 11图6-2 应用程序通过TCP协议传输数据封装过程12 12用户数据首先被添加应用首部,传给TCP层;在TCP层,数据被再安装TCP首部后,传给IP层(TCP传给IP的数据单元称作TCP报文段或简称为TCP段);在IP层,数据被再次安装IP首部后,传给链路层(IP传给网络接口层的数据单元称作IP数据报);在链路层,数据再被安装以太网首部,并添加以太网尾部,形成适合网络(光、电信号)传输的数据比特流,
7、该比特流称做帧(Frame)。读者可能对首部和尾部的概念还不太了解。实际上,首部和尾部是一种协议指定的数据结构,按照一定的顺序规则填写数据。关于各种首部中的字段含义、用途将在后面章节进行详细介绍。13 133协议分用协议分用网络接口分别发送和接收IP、ARP和RARP数据。IP层接口负责发送ICMP、IGMP、TCP、UDP数据包,因此必须在以太网的帧首部、IP特定字段中加入某种形式的标识,以指明生成数据的网络协议。例如:以太网的帧首部有一个16bit的帧类型域,当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议上加的报文首部。每层协议都要检查报文协议标识,以确
8、定接收数据的上层协议。这个过程称做分用(Demultiplexing),它解决了数据包接收时协议解析的问题,从而保证了各种不同的TCP/IP子协议能够被组合成一个整体(图6-3显示了该过程)。14 14图6-3 TCP/IP协议分用过程15 156.1.2 常用协议常用协议如前所述,TCP/IP协议是一个协议族,下面对常用的协议分别进行介绍。1MAC协议协议MAC(Media Access Control,媒体访问控制)协议最重要的功能是确定谁占有信道,即信道分配问题,其主要作用是保证信道的公平性和有效的资源共享。MAC的机制分为两类,即基于竞争的信道协议和无竞争的信道协议。基于竞争的信道协议
9、是假定网络中没有中心实体来分配信道资源,16 16每个节点必须通过竞争媒体资源来进行传送,当超过一个节点同时尝试发送时,碰撞就会发生(见7.1.1节所介绍的CSMA/CD协议)。相反,无竞争的信道协议为每个需要通信的节点分配专用的信道资源。无竞争的信道协议能够有效地减少冲突,其代价是突发数据业务的信道利用率可能会比较低。不同的传输介质决定了所使用的MAC标准,如:以太网遵循IEEE 802.3标准,令牌总线遵循IEEE 802.4标准,令牌环网遵循IEEE 802.5标准,等等。本书重点关心的IEEE 802.3标准定义了一种具有七个字段的MAC帧,包括:17 17前导符P、帧起始分界符SFD
10、、目的地址DA、源地址SA、表示数据字段字节数长度的字段LEN、要发送的数据字段、填充字段PAD和帧校验序列FCS等8个字段,这8个字段中除了数据字段和填充字段外,其余的长度都是固定的。图6-4就是以太网帧的结构,其首部由5个字段组成,包括前导符、起始帧分界符、目标地址、源地址、长度/类型构成;尾部由一个字段构成(CRC);上层协议的首部及数据夹在首部与尾部之间的数据字段里。18 18图6-4 以太网帧结构19 19这里使用的地址无论是DA还是SA,都是硬件地址,或称为MAC地址。MAC地址由网卡的生产厂商唯一设定给每一块不同的网卡。一块网卡依据数据帧的包头信息中是否写有它的MAC地址来决定是
11、否接受并上传该帧。查阅本机MAC地址的方法很多,如Windows的ipcongfig命令、NetBIOS的Astatus命令等。需要注意的是,IEEE 802.3标准的MAC帧不提供任何对收到的帧进行确认的机制,其通信确认在高层完成,这表明它是一种不可靠的介质。以太网MAC协议承载了其他TCP/IP上层子协议。20202IP协议协议IP协议负责在TCP/IP主机之间提供数据报服务,进行数据封装,产生协议头。由于在以太网中帧的大小受限制,并且不同的帧可能由不同的网络路径传送,因此IP协议需要将较大的数据报文分割,并在目的主机处按正确顺序组合。另外,IP协议不负责包的校验,它是一种无连接、不可靠的
12、传输。如果发生任何错误,IP协议则丢弃该数据报,然后发送ICMP消息报给信源端。数据报的检测校验是由上层协议如TCP等提供的。无连接数据报并不维护任何关于后续数据报的状态,每个数据报的处理是相互独立的,即IP数据报可以不按发送顺序接收。21 21IP协议还需要负责寻找路由,因此它需要配一个确定的IP地址。在IP报文的包头中包含了源与目的的IP地址。一般来说,不会有应用程序直接访问IP协议。IP数据报是Internet上数据通信的基本单元,这些数据报不超过1000字节长,当人们打开Web页、下载文件或者发送E-mail时,这些数据报就在世界各地来回传输。IP协议包裹的协议有:ARP、RAPRP、
13、ICMP、IGMP、路由协议。2222网络互联的目的是提供一个无缝的通信系统,为此,互联网协议必须屏蔽物理网络的具体细节,并提供一个虚拟网络的功能,使设计者可以在不考虑物理硬件细节的情况下自由地选择地址。在TCP/IP栈中,编址由IP协议规定,IP标准分配给每台主机一个32位的二进制数作为该主机的IP地址。在2019年6月即将正式投入运行的IPv6中,IP地址升至128位,这样IP资源变得更加丰富。IP协议将每个IP地址分割成前缀和后缀两部分。前缀用于确定计算机从属的物理网络,后缀则用于确定网络上一台单独的计算机。互联网中的每一个物理网络都有一个唯一的值作为网络号(Network Number
14、)。2323IP地址的层次性设计保证了以下两个重要性质:每台计算机分配一个唯一的地址;网络号分配全球统一,但后缀可本地分配,无需全球统一。IP地址共分五类:A类、B类、C类、D类和E类。其中,A类、B类和C类为基本类;D类用于多播传送;E类属于保留类,现在不用。这种地址分配方法的优点是,通过判断从左到右第一个0出现的位置就可以区分地址类型。它们的格式如表6-1所示(其中,*代表网络号位数,X代表主机号位数)。2424表6-1 IP地址分类2525IP地址一般采用点分十进制的方法表示,例如10000001 00110100 00000110 00000000129.52.6.0。此外,需要特别注
15、意以下几个特殊的IP地址:(1)网络地址:IP中主机地址为0,表示网络地址,如128.211.0.0。(2)广播地址:网络号后跟一个所有位全是1的后缀,即直接广播地址。(3)回送地址:127.0.0.1用于测试。2626(4)内网地址:B类地址中的10.0.0.010.255.255.255、172.16.0.0172.31.255.255,C类地址中的192.168.0.0192.168.255.255等三个地址段内的IP习惯上经常作为内部网络地址使用。除了给每个主机分配一个IP地址外,IP协议也规定给每个路由器分配IP地址。事实上,每个路由器会被分配了两个或更多个IP地址。一个路由器连接到
16、多个物理网络,每一个IP地址包含一个特定物理网络的网络号。这个IP地址并不标识一台特定的计算机,而是标识一台计算机和一个网络间的一个连接。2727现在所有的主机都要求支持子网编址(RFC950,J.Mogul and J.Postel,1985),该功能要求,不仅要把IP地址看成由单纯的一个网络号和一个主机号组成,还要把主机号再分成一个子网号和主机号。这样做是因为A类和B类地址为主机号分配了太多空间,但事实上在一个网络中并不会有这么多主机,因此在NIC(Network Information Center)获得某个IP网络号后,就由系统管理员来决定是否建立子网,以及分配多少位给子网号和主机号。
17、例如,这里有一个B类地址(140.252.0.0),在剩下的16位中,8位用于子网号,8位用于主机号,其格式如图6-5所示。这样就允许有254个子网,每个子网可有254台主机。2828图6-5 B类地址的子网编址举例2929除了地址类型以外,主机还需要知道地址中分别有多少位用于子网号与主机号。这是在引导过程中由子网掩码所确定的。这个掩码是一个32位的值,其中值为1的位留给网络号和子网号,为0的位留给主机号。在上面的例子中,子网掩码就是255.255.255.0。通常规定,具有相同网络号的主机属于网内关系,不同网络号的主机属于网间关系。IP协议包裹或承载了ARP/RARP、ICMP、IGMP、O
18、SPF等TCP/IP子协议。30303ARP/RARP协议协议ARP(Address Resolution Protocol,地址解析协议)和RARP(Reverse Address Resolution Protocol,逆向地址解析协议)是某些网络接口(如以太网和令牌环网)使用的特殊协议,用来转换IP层和MAC层使用的地址。由于IP地址只对TCP/IP有效,MAC地址只对网络访问层有意义,因此分配给主机使用的IP地址和它固有的MAC地址是互不相干的。31 31在物理网络上的数据帧交换依赖于MAC地址,而在网络层层面的IP地址赋予用户设定逻辑地址的权利,要使二者配合工作必须进行正确的转换。A
19、RP实现了从IP地址到MAC地址的映射,而RARP负责根据NIC硬件地址去查询对应的IP地址。ARP要求网络接口有一个硬件地址。在硬件上进行的数据帧交换必须要有正确的接口地址。TCP/IP的地址是32位的IP地址。仅知道主机的IP地址并不能让内核(如以太网驱动程序)发送数据帧给主机,内核必须知道目的端的硬件地址才能发送数据。3232假设在一个以太网中,客户端要将一个IP报文发送到服务器端,那么客户端就必须把32位的IP地址转换成48位的以太网地址。ARP获取IP的过程可分为以下三个步骤:(1)ARP以广播的方式发送ARP Request数据帧给以太网的每个主机。ARP请求数据帧中包含目的主机的
20、IP地址,意思是“如果你是这个IP地址的拥有者,请回答你的硬件地址”。(2)目的主机的ARP层收到这份广播报文后,识别出这是发送端在询问它的IP地址,于是发送一个ARP应答。这个ARP应答包含IP地址及对应的硬件地址。3333(3)发送端收到ARP应答后,主机间通过使用ARP协议获得的硬件地址进行通信。ARP中规定了两种信息的基本类型:请求(Request)和应答(Response)。在以太网上解析IP地址时,ARP请求和应答分组的格式如附录4中的附表4-6所示(ARP亦可用于解析其他类型网络的IP地址以外的地址,紧跟着帧类型字段的前四个字段决定了最后四个字段的类型和长度)。34344ICMP
21、协议协议ICMP(Internet Control Message Protocol)是Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着至关重要的作用。ICMP协议是一种面向非连接的协议,用于传输出错报告控制信息。它是一个非常重要的协议,对网络安全具有极其重要的意义。3535它是TCP/IP协议族的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到
22、IP数据无法访问目标、IP路由器无法按当前的传输速度转发数据包等情况时,IP路由器会自动发送ICMP消息。ICMP提供一致易懂的出错报告信息。发送的出错报文返回到发送原数据的设备,因为只有发送设备才是出错报文的逻辑接受者。发送设备随后可根据ICMP报文确定发生错误的类型,并确定如何才能更好地重发失败的数据报。但是ICMP唯一的功能是报告问题而不是纠正错误,纠正错误的任务由发送方完成。36365IGMP协议协议Internet 组管理协议(IGMP)是因特网协议家族中的一个组播协议,用于 IP 主机向任一个直接相邻的路由器报告它们的组成员情况。IGMP信息封装在IP报文中,其IP的协议号为2,用
23、来在IP主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。IGMP不包括组播路由器之间的组成员关系信息的传播与维护,这部分工作由各组播路由协议完成。所有参与组播的主机必须实现IGMP。参与IP组播的主机可以在任意位置、任意时间、成员总数不受限制地加入或退出组播组。3737组播路由器不需要也不可能保存所有主机的成员关系,它只是通过IGMP协议了解每个接口连接的网段上是否存在某个组播组的接收者,即组成员。而主机方只需要保存自己加入了哪些组播组。IGMP在主机与路由器之间是不对称的:主机需要响应组播路由器的IGMP查询报文,即以IGMP membership report报文响应;路由器周
24、期性发送成员资格查询报文,然后根据收到的响应报文确定某个特定组在自己所在子网上是否有主机加入,并且当收到主机的退出组的报告时,发出特定组的查询报文(IGMP版本2),以确定某个特定组是否已无成员存在。38386路由协议路由协议当数据跨网传输时需要进行路由,通常路由包括两个基本的动作:确定最佳路径和让信息群(或称为分组)通过网络传输。通过网络传输分组相对较简单,而路径的确定却相对复杂,一般采用的方法就是查询路由表。路由表保存了通过路由器可能到达的目标网络以及如何到达该目标网络的信息,基本项包括目标网络地址、子网掩码以及到达目标网络的下一站路由器的地址,简介记录了网络间的位置关系。路由表由路由协议
25、维护和更新,此外,路由协议还完成发送路由更新信息且基于路由算法决定路由的功能,常见的路由协议有RIP、OSPF、BGP等。3939RIP协议使用V-D算法在局域网上实现,它将参加者分为主动机和被动机两种。主动机主动地向外广播路径刷新报文,被动机被动地接受路径刷新报文。一般情况下,网关作主动机,主机作被动机。RIP规定一条路径的距离为该路径(从信源机到信宿机)上的网关数。为防止寻径回路的长期存在,RIP规定,长度为16的路径为无限长路径,即不存在路径。所以一条有限的路径长度不得超过15。正是这一规定限制了RIP的使用范围,使RIP局限于小型的局域网中。4040OSPF(Open Shortest
展开阅读全文