现在的位置: 首页 > 综合 > 正文

IPv4 header 分析

2014年01月18日 ⁄ 综合 ⁄ 共 1125字 ⁄ 字号 评论关闭

IPv4 数据报的 header 格式如下:

Ipv4 Header

下面解释一下每个字段的含义:
Version
IP 协议的版本号,4个bit。目前只支持版本4和版本6。由于 IPv4 的 header 格式和 IPv6 的不一样,所以 Version 字段放在 header 的最前面,根据这个值就能知道怎么解释后面的字段。

Header Length (IHL)
IP header 的长度,包括 IP Options
的长度,但不包括所负载的数据长度。这个字段占4个bit,每一个bit表示4个字节(units of 32
bits),这个字段最大值是0xFFFF (15),所以 IPv4 Header 最长占60个字节,去掉IP Header
中固定的20个字节的长度,剩下可有40个字节的长度留给 IP Options。

Type of Service (TOS)
服务类型,占8个bit。这个字段标明这个数据报属于何种类型的应用,需要网络层上的路由器怎么处理。它关系到优先级和拥塞控制等,比如是要尽量低延迟的还是高吞吐型的。这个字段又分几个子字段,而且其间的组合和含义又被 IETF 改变过。

Total Length
整个IP数据报的长度,以字节为单位,包括 IP Header
的长度和所负载的数据的长度,占16个bit。那一般情况下实际的所负载的数据的长度就是这个字段的值减去4倍的Header
Length的值。当IP数据报的总长度小于链路层所规定的最小长度时,链路层协议就会自动填充数据报的长度(但不会改变Total
Length这个字段),所以通过这个字段,上层协议就可以知道这个IP数据报中实际有效的数据量了。IP数据报所负载的数据长度最小为0,最大为64K
字节。

Identification, DF (Don't Fragment), MF (More Fragments), Fragment Offset
这几个字段都是在 IP 分片中会用到。

Time To Live (TTL)
IP数据报在网络上存活的时间,其实是数据报在网络上路由器间转发的次数。每个路由器在接受到一个数据报时都会把它的TTL值减1,当TTL值为0时就会
被路由器丢弃,并会向IP数据报中 source IP 发送一个 ICMP 的错误信息。TTL占8个bit,最大跳数为255。

Protocol
传输层协议字段,这个字段表明这个IP数据报是使用 L4 中哪一种协议的,常见的值有 IPPROTO_ICMP = 1,IPPROTO_TCP = 6, IPPROTO_UDP = 17 等。

Header Checksum
IP数据报头的校验码,不包含其所负载的数据的校验,那是 L4 的事。

Source Address, Destination Address
IP数据报的发送和接受IP地址

Options
IP数据报选项字段,长度介于0到40字节之间。

抱歉!评论已关闭.