这里特意强调以下几个字段
4位头部长度字段,1位代表4个字节,4位最大为15,表示最长为60字节,也就是选项字段有40字节。
8位的服务类型字段,前3位通常被忽略,紧接着的4位TOS字段分别表示最小延时,最大吞吐量,最高可靠性和最小费用。最后一位保留字段置0。
3位标志字段,第一位保留,第二位DF(Don’t Fragment)表示“禁止分片”,如果设置了这个位就表示不进行分片,假如在这种情况下,数据包长度超过MTU,则会丢弃该包并发送一个ICMP差错报文。第三位MF(More Fragment)表示“更多分片”,表示还有其它分片。除了数据包的最后一个分片外,其它分片第三位都要置1.
8位协议字段区分是哪个上层协议传递下来的包,1是ICMP,6是TCP,17是UDP。
16位头部校验和字段利用CRC检验头部在传输过程中是否损坏。32位的源IP地址和目的IP地址在整个数据报的传输中都不变,即使经过了多次转发。
选项字段一般包括:记录路由(记录途径的所有路由器的IP地址)、时间戳(记录每次经过一个路由器时的转发的时间)、松散源路由选择(一个路由器IP地址表,途径过程中应当包括其所有的路由器)、严格源路由选择(一个路由器IP地址表,途径过程只能是地址表中的路由器)。
2、路由转发和选址主要的硬件设备是路由器,路由器当中有个路由表对接收到的IP数据包进行分类,主要和IP数据包的目标IP地址有关。路由机制如下:
(1)查找路由表中和数据包的目标IP地址完全匹配的主机IP地址。如果找到,就使用该路由项。如没有找到,进行步骤2
(2)查找路由表中和数据包的目标IP地址的网络ID匹配的网络IP地址,如果找到,就使用该路由项。如没有找到,进行步骤2
(3)选择默认路由项,这通常意味着数据包的下一跳为默认网关。3、当需要对一个数据包进行转发时,应当执行如下操作
(1)检查头部的TTL值,为0则丢弃
(2)查看数据头部的严格源路由选项,假如该选项被设置,则检测数据包的目标IP地址是否为本机的某个IP地址,若不是,则发送一个ICMP源站选路失败报文给发送端,并且有必要的的话,发送一个ICMP重定向报文,告诉源端合理的下一跳IP地址
(3)TTL值减1,处理IP头部选项,假如有必要,对其进行分片再转发。
4、IPV6与IPV4不同,其用十六进制字符串表示而不是点分十进制。例如:FE80:0000:0000:0000:1234:5678:0000:0012。每个部分2个字节。一般情况下,对于多个连续的0000可以省略,因此上述可变成:FE80::1234:5678:0000:0012。全0压缩只能使用一次,否则不知道中间省略了多少个全0组。