第2章TCPIP协议分析-3网际协议.ppt_第1页
第2章TCPIP协议分析-3网际协议.ppt_第2页
第2章TCPIP协议分析-3网际协议.ppt_第3页
第2章TCPIP协议分析-3网际协议.ppt_第4页
第2章TCPIP协议分析-3网际协议.ppt_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

1、网 络 协 议,第2章 TCP/IP协议分析,TCP/IP协议族 编址与地址解析 网际协议 网际控制消息协议 IP路由协议 IP组播协议 传输层协议 应用层协议,2.3 网 际 协 议,网际协议(IP)负责通过相互连接的一组网络传送数据块(数据报)。IP接受来自TCP或用户数据报(UDP)等更高层次协议的这些数据块,然后再转发给网络接口层,并通过Internet传送这些数据块。 IP是TCP/IP协议族中最为核心的协议。所有的TCP、UDP、ICMP及IGMP数据都以IP数据报格式传输。,1 网际协议概述,向网络接口层传输数据; 在端站之间提供无连接(数据报)传送服务。每个数据报携带一个完整的

2、目的地址,并独立于其他数据报在系统内进行路由,此时不需要建立连接和逻辑链路。 为那些最大数据报长度小于数据包长度的网络进行数据传送提供一种数据报分段和重组机制。,(1)IP的功能,(2) IP特性,无连接传递数据报独立传输、IP不维护通信双方之间的连接细节。 不能保证数据传输的可靠性。IP提供了一个16位报头校验和,用于接收节点验证数据包传送是否正确。 “尽力而为”的传递机制不提供确认功能,不提供对丢失或破坏数据的重传机制,不提供流量控制或数据包排序机制。,2 多路分解传送协议,3 IP数据报,目前,已经有2种IP版本成为标准,它们分别是IPv4和IPv6,后者是前者的升级。现在网络正在使用的

3、是IPv4。,0,4,8,16,19,24,31,版 本,标志,生存时间,协 议,标 识,服 务 类 型,总 长 度,片 偏 移,填 充,首 部 检 验 和,源 站 IP 地 址,目 地 站 IP 地 址,长 度 可 变 的 可 选 字 段,比特,首部长度,20个 字节 固定 长度,可变 长度,0,1,2,3,4,5,6,7,D,T,R,C,未用,优 先 级,数 据,IP数据报的格式,版本(version):说明数据报属于哪一个协议版本,以便可以在运行不同版本协议的机器之间进行版本转换。 IPv4和IPv6即在此标示,当该域值为4时,表示IPv4。 首部长度(Header Length):说明

4、报头的长度(单位:32位字长,4字节),最小为5,最大为15。头部最长为60字节,可选部分最大为40字节。该域值变化1,表示报头长度变化32个字节。此外,对于有些可选项,例如记录分组已经走过路由的源路由选项,40字节就显得太短了。,服务类型(type of service): 允许主机告诉子网它需要什么类型的服务,可能是可靠程度和传输速率的各种组合。 例如,对数字话音要求快速传递;而对文件传输无差错比快速更重要。该域中,左起3位为优先级(precedence)字段,从0(正常)到7(网络控制分组)。后跟3个标识(flag)位分别表示延迟、吞吐量和可靠性,它们允许主机指明在以上三项指标中它最关心

5、什么。最后两位没有定义。 实际上,目前的路由器都不支持服务类型字段。,CISCO提出的服务类型组件:,总长度(total length): 指头部和正文部分的长度之和,最大为65535字节。(目前允许这一上限,但将来的千兆位网络将要求更长的数据报。) 数据报总长 = 报头长度 + 数据长度 标识(identification):由信源机产生,每次自动加1。用来让目的主机确定新到达的分段(fragment)属于哪一个数据报。同一数据报的所有分段包含相同的标识值。 :该域没有定义。,DF:置“1”表示不要分段(dont fragment),它命令路由器不要将数据报分段。置“0”表示需要的话数据就会

6、被分段。 MF:表示当前分段后面是否还有更多的分段(more fragment)。除了最后一个分段外,所有同一数据报的各分段中该位都要置位“1”。,分段偏移量(fragment offset):告知本分段在当前数据报的位置。除了最后一个分段以外,一个数据报的所有分组必须是8字节的倍数,即8字节为一个基本分段单位。该域有13位,所以每个数据报最多有8192个分段,数据报长度最大可达到65536字节,比总长度域的最大值大1个字节。,生存期TTL(time to live):是用来限制分组寿命的计数器,最长生存期为255秒。该域在每条链路上都必须递减。若在某个路由器中排了长时间的队,则要以倍数递减。

7、实际上,它只计算链路上的时间。当该域减为0时,就将这一分组丢弃,并向源主机发送一告警分组。,运输层,网络层,首部,TCP,UDP,ICMP,IGMP,OSPF,数 据 部 分,IP 数据报,协议字段指出应将数据 部分交给哪一个进程,协议(protocol):告诉网络层把收到的数据报送给哪一个传输层进程,可能是TCP,也可能是UDP或其他。协议编号在整个Internet中是全局唯一的,定义参考RFC 1700。,Protocol Keyword Protocol,0 1 2 3 4 5 6 8 9 17 29 41 55-60 80 92 101-254 255,ICMP IGMP GGP IP

8、 ST TCP EGP IGP UDP ISO-TP4 SIP ISO-IP MTP,Reserved Internet Control Message Internet Group Management Gateway-to-Gateway IP in IP (encasulation) Stream Transmission Control Exterior Gateway Protocol any private interior gateway User Datagram ISO Transport Protocol Class 4 Simple Internet Protocol U

9、nassigned ISO Internet Protocol Multicast Transport Protocol Unassigned Reserved,报头校验和(header checksum): 只验证IP报头。每条链路中该域都必须重新计算,因为至少有一个域(生存期域)的值是一直在变化的。 校验和不计算被封装的数据,UDP、TCP和ICMP都有各自的校验和。 按照IP校验和算法的定义,头部被分成16位的字进行1的补码相加求和,计算中要注意加上进位。 发现校验和错时: 数据报必须立即丢弃,不作进一步的处理。,(原文)The checksum algorithm is simply

10、to add up all the 16-bit words in ones complement and then to take the ones complement of the sum. (译文)校验和的算法是简单地将所有16位字以1的补码形式相加,然后再对相加和求1的补码。 ones complement 就是反码。,在发送数据时,按如下步骤: (1)把IP数据报的首部校验和字段置为0。 (2)把首部看成以16位为单位的数字组成,依次进行二进制反码求和。 (3)把得到的结果存入校验和字段中。 在接收数据时,按如下步骤: (1)把首部看成以16位为单位的数字组成,依次进行二进制反码求

11、和,包括校验和字段。 (2)检查计算出的校验和的结果是否等于零。 (3)如果等于零,说明被整除,校验是和正确。否则,校验和就是错误的,协议栈要抛弃这个数据包。,计算方法描述,USHORT checksum(USHORT *buffer, int size) unsigned long cksum=0; while (size 1) cksum+=*buffer+; size -=sizeof(USHORT); if (size ) cksum += *(UCHAR*)buffer; cksum = (cksum 16) + (cksum ,& 按位与 | 按位或 按位异或 取反 右移,C语言实

12、现,01000101 /*ver_hlen*/ 00000000 /*tos*/ 00000000 00000010 /*len*/ 00000000 00000000 /*id*/ 00000000 00000000 /*offset*/ 00000100 /*ttl*/ 00010001 /*type*/ 00000000 00000000 /*cksum(0)*/ 01111111 00000000 00000000 00000001 -/*sip*/ 01111111 00000000 00000000 00000001 -/*dip*/,发送端的IP报头数据:,1 01000111

13、00010101 cksum 00000000 00000001 (cksum16) 01000111 00010101 (cksum&0 xffff) - 01000111 00010110 10111000 11101001 cksum,计算校验和:,01000101 /*ver_hlen*/ 00000000 /*tos*/ 00000000 00000010 /*len*/ 00000000 00000000 /*id*/ 00000000 00000000 /*offset*/ 00000100 /*ttl*/ 00010001 /*type*/ 10111000 11101001

14、/*cksum(0)*/ 01111111 00000000 00000000 00000001 /*sip*/ 01111111 00000000 00000000 00000001 /*dip*/,接受端的IP报头数据:,1 11111111 11111110 cksum 00000000 00000001 (cksum16) 11111111 11111110 (cksum&0 xffff) - 11111111 11111111 00000000 00000000 cksum,计算校验和:,源地址(source address)和目的地址(destination address):指明

15、发送数据报的源和目的的网络号和主机号。 选项(options):用来提供一种余地,使协议的后来版本可以包含原有设计中没有的信息,也可以使试验者能尝试他的新想法。选项域的长度是可变的,每个选项都以一个字节表明内容。某些选项还跟有一个字节的选项长度字段,其后是一个或多个数据字节。选项域以4个字节的倍数来安排。,Option Type,Option Type,Option length,data,Copy Class number,1B,1B,1B,1b,2,5,Option Type,IP数据报选项 (长度可变,默认是0字节,最大值是40字节),Copy,1 该选项应被拷 贝到所有段中 0 该选项

16、仅被拷 贝到第一分段中,Class,0 数据报用于 网络控制 1 保留 2 调试和测量 3 保留,目前定义了5种选项,列表如下:,安全性(security),指明数据报的机密程度(IPSec),严格的源路由选择(strict source routing),指定一个IP地址列表,不能和指定的路径有任何背离,松散的源路由选择(loose source routing),指定一个IP地址列表,指定的路径可以发生变化,记录路由(record route),路由器执行数据报路径的跟踪任务,存储动态增长的路由列表,时间戳(time stamp),是每个路由器都附上它的地址和时间标记, 记录路由选项,源主

17、机生成一个IP地址的空表,由所有处理过该数据报的路由器把它们的IP地址(最多9个)填入表中。,分段时记录路由选项只拷贝到其中一个段中, 源路由选项,严格源路由:发送端指明IP数据报所必须采用的确切路由。 松散源路由:发送端指明了一个数据报经过的IP地址清单,但是数据报在清单上指明的任意两个地址之间可以通过其他路由器。,分段时,源路由选项必须拷贝到所有段中,0 仅记录时间戳;忽略IP地址 1 在每个时间戳之前记录IP地址 3 由发方指定IP地址; 如表中下一个IP地址与路由器的IP地址匹配, 则路由器仅记录时间戳。,Flag meaning, 时间戳选项,4 数据报转发和路由,路由表和转发表的数

18、据结构不同,实现也不同,路由更新,路由更新,一组输入端口 Phy,DL,Net 排队,查表,转发,一组输出端口 Net,DL,Phy 排队,缓存,发送,存储器,总线,互联网络,(1)数据报传输与帧,当主机或路由器处理一个数据报时,首先选择数据报发往的下一跳N,然后通过物理网络将数据报传送给N。但是,网络硬件并不了解数据报格式或Internet寻址。 相反,每种硬件技术定义了自己的帧格式和物理寻址方案,硬件只接收和传送那些符合特定帧格式以及使用特定的物理寻址方案的包。由于一个Internet可能包含异构网络,穿过当前网络的帧格式与前一个网络的帧格式可能是不同的。,5 IP封装、分段和重组,为了解

19、决上述问题,引入了封装技术。即将一个IP数据报封装进一个帧中,这时整个数据报被放进帧的数据区。网络硬件象对待普通帧一样对待包含一个数据报的帧。事实上,硬件不会检测或改变帧的数据区内容。 由于每个网络可能使用一种不同于其他网络的硬件技术,因此帧的格式也相应地不同。,(2)封装(encapsulation),每一种硬件技术都规定了一帧所能携带的最大数据量。这一限制称为最大传输单元(Maximum Transmission Unit,MTU)。网络硬件在设计上不能接受或传输数据量大于MTU的帧。因而一个数据报必须小于或等于一个网络的MTU。,() 分段(fragmentation),选择合适的分组长

20、度适应不同的MTU 选择网络中最小的MTU 在MTU较大的网络传输会造成硬件能力浪费 选择网络中最大的MTU 在MTU较小的网络不能实现数据报到帧的封装 分组长度的定义原则 与硬件无关 以“方便”为原则(取本地网络的MTU),当一个数据报的尺寸大于将发往的网络的MTU值时,路由器会将数据报分成若干较小的段(fragment),然后再将每段独立的进行发送。每个段与原数据包具有同样的格式,只是头部的稍有不同。 标志域中有一位标识了一个数据报是一个段还是一个完整的数据报。段的头部中的其他域中包含有其他一些信息,以便用来重组这些段,重新生成原始数据报。另外,头部的段偏移(fragment offset

21、)域指出该段在原始数据报中的位置。,图中IP数据报被分成三段。每段携带着原始数据报的一部分数据,并有类似于原始数据报的IP头部。每个段尺寸小于它所经网络的MTU。,在何处实行分段?,R1,R2,网络2 MTU=620,网络1 MTU=1500,网络3 MTU=1500,主机A,主机B,实行分段,无须分段,从大到小,从小到大,分段方法,TCP segment,IpH,主机A,20 1300Bytes,R1,FraH1,Fragment1,FraH2,FraH3,Fragment2,Frag3,MTU=1500,20 600,MTU=620,片1偏移(offset)=0,片2偏移(offset)=600,片3偏移(offset)=1200,分段头(复制IP报头),段的传输和控制,传输 每个分段独立选择传输路径,“尽力传递” 控制(定义分段头参数),信源机赋予数据报的标识, 识别此片所属分组,用于 分组重组。,“000”,片未完; “001”,不分片。,提供分段顺序信息,在所有的段的基础上重新产生原数据报的过程叫重组(reassembly)。由于每个段都以原数据报头部的一个副本作为开始,因此都有与原数据报同样的目的地址。 含有最后一块数据的段在头部设置有一个特别的位(MF),因此,执行重组的接收方能报告是否所有的段都成功地到达。 只有最终

温馨提示

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

评论

0/150

提交评论