IPv4首部包含14个字段(fields),13是必需的,最后一个可选。
1、版本(Version)
4 bits,IPv4分组的version值为0100
2、首部长度(Internet Header Length,IHL)
4 bits,单位是4 bytes。最小值为5,此时首部不包含可选项(options),长度为20 bytes。最大值为15,此时IHL为60 bytes。
3、服务类型(Differentiated Service Code Point,DSCP)
8 bits,指定packet的优先级、延迟、吞吐率、可靠性要求等。
4、明确的拥塞通告(Explicit Congestion Notification,ECN)
教材上没有提及
5、总长度(Total Length)
16 bits,分组的总长度,包括首部和数据。分组最小值为IHL的最小值20 bytes,最大值为65535bytes。
6、标识(Identifier)
16 bits,同一IP分组的数据片(fragments)具有相同的标识。
7、标志(Flags)
3 bits,第0位是保留位(resvered),必需为0. 第1位=1时,表示不分片(Don’t fragment, DF),为0表示可分片。第2为=1时,表示该后续有其他分片(More fragmetns, MF)。
!!!描述“第一位”是用第0位
8、片偏移(Fragment Offset)
13 bits,以8 bytes为单位给出当前数据片在原IP分组中的位置。最大偏移(2^13 - 1)* 8 bytes = 65528 bytes,加上首部的20 bytes已超出IP分组的最大总长度。
9、生存时间(Time To Live,TTL)
8 bits,限制IP分组在网络中存在时间的计数器,TTL的单位为秒(second) 。
实际上,TTL作为路由(router)的最大跳数(hop count)使用初始值有发送终端设定。,每到达一个路由,TTL的值减一,值为0时,router丢弃该分组,并向sender发送ICMP时间超时(ICMP Time Exceeded)的消息。
10、协议(Protocol)
8 bits,指示IP分组数据部分使用的协议,可用的协议列表,常见的如TCP(6)、UDP(17)、ICMP(2),括号内为协议号(Protocol Number)。
联想记忆:TCP可靠,很溜(6);UDP会遗弃(17)
11、首部校验和(Header Checksum)
16 bits,仅验证首部。分组到达router后,router计算首部的checksum,和该字段比较,不匹配则丢弃该分组。
12、源地址(Source Address)和目的地址(Destination Address)
在传输过程中,有可能被(Network address translation,NAT)设备改变。
13、可选项(Options)
联想记忆【单位】:1种8片首饰
1-总长度,8-片偏移,4-首部长度