IP协议Internet两个核心协议:IP/TCP作用IP协议是TCP/IP协议簇中的核心协议,提供数据传输的最基本服务,是实现网络互联的基本协议。位置IP协议位于网络层,位于同一层次的协议还有下面的ARP和RARP以及上面的因特网控制报文协议ICMP和因特网组管理协议IGMP。关系ARP和RARP报文不被封装在IP数据报中,而ICMP和IGMP的数据则要封装在IP数据报中进行传输。IP协议具有以下特点1是点对点协议进行数据传输时的对等实体一定是相邻设备中的对等实体提供无连接数据报服务,各个数据报独立传输,可能沿着不同的路径到达目的地,也可能不会按序到达目的地3不保证传输的可靠性不对数据进行差错校验和跟踪,当数据报发生损坏时不向发送方通告,如果需要数据传输具有可靠性,TCP协议加以保证。2正因为IP协议采用了尽力传输的思想,所以使得IP协议的效率非常高,实现起来也较简单。IP层通过IP地址实现了物理地址的统一;通过IP数据报实现了物理数据帧的统一。IP层通过对以上两个方面的统一达到了向上屏蔽底层差异的目的。IP数据报数据报总长度服务类型(TOS)数据0816431版本标识片偏移源IP地址IP选项(可选、变长)首部长度标志生存时间(TTL)协议首部校验和目的IP地址首部数据20字节IP数据报格式19IP数据报固定部分可变部分04816192431版本标志生存时间协议标识服务类型总长度片偏移填充首部检验和源地址目的地址可选字段(长度可变)比特首部长度01234567DTRC未用优先级数据部分比特数据部分首部传送首部IP数据报IP数据报可变部分首部04816192431版本标志生存时间协议标识服务类型总长度片偏移填充首部检验和源地址目的地址可选字段(长度可变)比特首部长度01234567DTRC未用优先级数据部分比特数据部分首部传送固定部分IP数据报IP数据报首部04816192431版本标志生存时间协议标识服务类型总长度片偏移填充首部检验和源地址目的地址可选字段(长度可变)比特首部长度01234567DTRC未用优先级数据部分比特数据部分首部传送IP数据报固定部分可变部分IP数据报首部04816192431版本标志生存时间协议标识服务类型总长度片偏移填充首部检验和源地址目的地址可选字段(长度可变)比特首部长度01234567DTRC未用优先级数据部分比特固定部分可变部分版本——占4bit,指IP协议的版本目前的IP协议版本号为4(即IPv4)IP数据报首部04816192431版本标志生存时间协议标识服务类型总长度片偏移填充首部检验和源地址目的地址可选字段(长度可变)比特首部长度01234567DTRC未用优先级数据部分比特固定部分可变部分首部长度——占4bit,可表示的最大数值是15个单位(一个单位为4字节)因此IP的首部长度的最大值是60字节。IP数据报首部04816192431版本标志生存时间协议标识服务类型总长度片偏移填充首部检验和源地址目的地址可选字段(长度可变)比特首部长度01234567DTRC未用优先级数据部分比特固定部分可变部分服务类型——占8bit,用来获得更好的服务,这个字段以前一直没有被人们使用IP数据报服务类型规定对本数据报的处理方式优先级表示本数据报的重要程度(从0到7)越来越重要1D代表最小延迟2T代表最大吞吐率3R代表最高可靠性4C代表最低成本5IP数据报TOS协议D、T、R、C0000ICMP、BOOTP、DNS(TCP)Normal0001NNTPC0010IGP、SNMPR0100FTP(数据)、SMTP(数据)T1000Telnet、FTP(控制)、TFTPDD、T、R、C这4个参数每次只能设置其中的一个IP数据报首部04816192431版本标志生存时间协议标识服务类型总长度片偏移填充首部检验和源地址目的地址可选字段(长度可变)比特首部长度01234567DTRC未用优先级数据部分比特固定部分可变部分总长度——占16bit,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为65535字节。总长度必须不超过最大传送单元MTU。IP数据报首部04816192431版本标志生存时间协议标识服务类型总长度片偏移填充首部检验和源地址目的地址可选字段(长度可变)比特首部长度01234567DTRC未用优先级数据部分比特固定部分可变部分标识(identification)占16bit,它是一个计数器,用来产生数据报的标识。IP数据报首部04816192431版本标志生存时间协议标识服务类型总长度片偏移填充首部检验和源地址目的地址可选字段(长度可变)比特首部长度01234567DTRC未用优先级数据部分比特固定部分可变部分标志(flag)占3bit,后2位有意义MF:MF=1表示后面还有分片,为零表示最后一个DF:不能分片。只有当DF=0时才允许分片。IP数据报首部04816192431版本标志生存时间协议标识服务类型总长度片偏移填充首部检验和源地址目的地址可选字段(长度可变)比特首部长度01234567DTRC未用优先级数据部分比特固定部分可变部分片偏移(13bit)指出:较长的分组在分片后某片在原分组中的相对位置。片偏移以8个字节为偏移单位。数据分片与重组IP数据报在从信源到信宿的传输过程中要穿过多个不同的网络。由于各种物理网络存在着差异,对帧的最大长度有不同的规定,因此,各个物理网络的最大传输单元MTU可能不同。物理网络的MTU是由硬件决定的。通常,网络的速度越高,MTU也就越大。TCP/IP协议的封装:将数据报以从信源到信宿路径上的最小MTU进行封装将数据报先以信源网络的MTU进行封装,在传输过程中再根据需要对数据报进行动态分片数据分片当数据报被分片时,每个分片都会得到一个首部。分片首部的大部分内容和原数据报相同,如IP地址、版本号、协议和数据报标识等,所不同的是标志字段、数据报总长度和片偏移。分片既可以带也可以不带原数据报的选项.在IP数据报中与分片相关的字段是标识字段、标志字段和片偏移字段。1)数据报标识是分片所属数据报的关键信息,是分片重组的依据。2)标志字段由3位构成,低两位有效,最高位未用;D位表示是否允许该数据报分片;M位表示该片是否是分片的最后一片。3)片偏移字段指出本片数据在原始数据报数据区中的偏移量。由于各分片独立传输,其到达信宿机的顺序无法保证,需要片偏移为重组提供顺序信息。标志DMIP数据报标志字段D:不分片1:不允许分片0:允许分片M:片未完1:非最后一片0:最后一片未用偏移=0/8=0偏移=0/8=0偏移=1400/8=175偏移=2800/8=350140028003799279913993799需分片的数据报数据报片1首部数据部分共3800字节首部1首部2首部3字节0数据报片2数据报片314002800字节0数据分片举例数据分片的重组分片可以在信源机或传输路径上的任何一台路由器上进行,而分片的重组只能在信宿机上进行。信宿机在进行分片的重组时,采用了一组重组定时器。开始重组时,启动定时器,如果重组定时器超时时,仍然未能完成重组(由于某些分片未及时到达信宿机),信宿机的IP层将丢弃该数据报,并产生一个超时错误,报告给信源机。片重组的控制主要根据数据报首部中的标识、标志和片偏移字段。数据报的分片和重组操作对用户和应用程序的编程人员都是透明的,分片和重组操作由网络操作系统自动完成IP数据报首部04816192431版本标志生存时间协议标识服务类型总长度片偏移填充首部检验和源地址目的地址可选字段(长度可变)比特首部长度01234567DTRC未用优先级数据部分比特固定部分可变部分生存时间(8bit)记为TTL(TimeToLive)数据报在网络中的寿命,其单位为秒。IP数据报首部04816192431版本标志生存时间协议标识服务类型总长度片偏移填充首部检验和源地址目的地址可选字段(长度可变)比特首部长度01234567DTRC未用优先级数据部分比特固定部分可变部分协议(8bit)字段指出此数据报携带的数据使用何种协议以便目的主机的IP层将数据部分上交给哪个处理过程IP数据报运输层网络层首部TCPUDPICMPIGMPOSPF数据部分IP数据报协议字段指出应将数据部分交给哪一个进程协议名ICMPIGMPTCPEGPIGPUDPIPv6OSPF协议字段值12689174189IP数据报首部04816192431版本标志生存时间协议标识服务类型总长度片偏移填充首部检验和源地址目的地址可选字段(长度可变)比特首部长度01234567DTRC未用优先级数据部分比特固定部分可变部分首部检验和(16bit)字段只检验数据报的首部不包括数据部分。这里不采用CRC检验码而采用简单的计算方法IP数据报首部校验发送端接收端16bit字116bit字2置为全0检验和16bit字n16bit算术运算求和……取反码数据报首部IP数据报16bit检验和16bit字116bit字216bit检验和16bit字n16bit算术运算求和16bit结果……取反码数据部分若结果为0,则保留;否则,丢弃该数据报数据部分不参与检验和的计算IP数据报首部校验发送方用1的补码计算和数时,首部校验和字段被设置为0,等于没有参加计算,求补后的校验和与和数各位正好相反。接收方用1的补码计算和数时,新的首部校验和字段已经被加入,正确情况下所得的和数应该为0xffff,因此,求补后的结果应该为0x0000。校验和的生成与校验第1块IP数据报首部第2块校验和…0x0000…第n块和数第1块第2块校验和……第n块校验和求补第1块第2块校验和……第n块和数校验和求补0x0000接收方发送方传输IP数据报首部校验举例本例中没有IP选项,所以首部长度为5,数据总长度为128字节,数据报的标识为1,未分片,TTL值为4,封装的是TCP协议数据,源地址和目的地址分别为:192.168.20.86和192.168.21.20。计算中要注意加上进位。生成的校验和为3005。接收方对同一数据报首部进行校验:求补后得到的校验和值为0,表明IP数据报首部在传输过程中没有出现差错。IP数据报首部校验举例标识图5-6生成IP数据报首部校验和45012810046019216820861921682120数据报总长度版本、首部长度、服务类型标志、片偏移TTL、协议首部校验和源IP地址目的IP地址01000101000000000000000010000000000000000000000100000000000000000000010000000110000000000000000011000000101010000001010001010110110000001010100000010101000101001111010001000001111110100010000100000101110111101加进位和数求补得校验和45012810046300519216820861921682120加入校验和前的数据报首部加入校验和后的数据报首部计算校验和3005IP数据报首部校验举例标识图5-7接收方进行IP数据报首部校验45012810046300519216820861921682120数据报总长度版本、首部长度、服务类型标志、片偏移TTL、协议首部校验和源IP地址目的IP地址01000101000000000000000010000000000000000000000100000000000000000000010000000110000010111011110111000000101010000001010001010110110000001010100000010101000101001111111111111110111111111111111110000000000000000加进位和数求补得校验和计算校验和IP数据报首部校验IP层不对数据进行校验。原因:上层传输层是端到端的协议,进行端