这里对IPv4和IPv6头部的一些常用的重要字段进行整理总结,没做出解释的是一些不常用到的字段,有兴趣可以自行查阅。
MAC header |
IPv4 header |
Data ::: |
1. IPv4 header:
00 |
01 |
02 |
03 |
04 |
05 |
06 |
07 |
08 |
09 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
· Version:IP版本号4 ;
· IHL: IP 头部长度,以字节表示;
· Total Length:整个IP报长度,包含IP头部和数据,以字节表示 ;结合IP头部长度便可确定IP报数据部分的开始和结束;
· TTL:IP数据包生存周期,通常每经过一次路由该值就会被减一;
· Protocol:表示传输层是哪种协议,该值有IANA统一规定(http://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml)
· Source/Destination IP address: 消息的源/目的IP地址,这两地址不会随着消息的路由而发生变化。
和IPv4数据报分片相关的Field:
首先接受为何要分片,以太网规定网络间传输的MTU为1500个字节,超过1500个字节的IP报就需要被分片;此外不同的链路层(Token Ring,FDDI…)规定的MTU值是不同的,在一个IP报从源地址送到目的地的过程中可能需要经过各种不同的网络,所以即使在以太网里面不分片,在其他网络里面可能被分片。
· Identification: 源主机每发出一个数据包就会为该数据包分配一个唯一的Identification值,通常是依次递增的方式分配;加入IP报在某个路由上需要分片,则 Identification会被复制到每一个分片的IP头中。
· Flags:一共有三个bit,第一个bit目前不用,始终为0;第二个bit为0表示允许分片;为1表示不允许分片;第三个bit为0表示这是最后一个IP报分片,为1表示后面还有更多的IP报分片;
· Fragement Offset:表示该分片距离原始IP数据包的偏移字节数;
· Total Length:IP报被分片后,该值需要被更新为新分片的总长度;
MAC header |
IPv6 header |
Data ::: |
2. IPv6 header:
00 |
01 |
02 |
03 |
04 |
05 |
06 |
07 |
08 |
09 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
|