通过IP进行通信时,需要在数据的前面加入IP首部信息。IP首部中包含着用于IP协议进行发包控制时所有的必要信息。
# IP数据报格式(IPv4)
Version版本 | IHL首部长度 | Type Of Service区分服务 | Total Length总长度
Identification标识 | Flags标志 | Fragment Offset片偏移
Time To Live生存时间 | Protocol协议 | Header Checksum首部校验和
Source Address源地址
Destination Address目标地址
Options可选字段 | Padding填充
Data数据部分
区分服务(TOS:Type Of Service)
由8比特构成,用来表明服务质量。
# 服务类型中各比特的含义
0 1 2 优先度
3 最低延迟
4 最大吞吐
5 最大可靠性
6 最小代价
(3~6) 最大安全
7 未定义
用0、1、2这三位表示0~7的优先度。从0到7表示优先度从低到高。
DSCP段与ECN段
DSCP段 | ECN段
DSCP
(Different Services Codepoint, 差分服务代码点)是TOS的一部分,现在统称为DiffServ
,用来进行质量控制。如果3~5
位的值为0,0~2
位则被称作类别选择代码点。对于每一种级别所采取的措施则由提供DiffServ的运营管理者制定,为了与TOS保持一致,值越大优先级也越高。如果第5位为1,表示实验或本地使用的意思。
ECN
(Explicit Congestion Notification, 显式拥塞通告)用来报告网络拥堵情况,由两个比特构成。
# ECN域
6 ECT ECN-Capable Transport
7 CE Congestion Experienced
第6位的ECT用以通告上层TCP协议是否处理ECN。当路由器在转发ECN为1的包的过程中,如果出现网络拥堵的情况,就将CE位设置为1。
标志(Flags)
由3比特构成,表示包被分片的相关信息。
# 标志段各位含义
0 未使用,现在必须是0。
1 指示是否进行分片。0-可以分片、1-不能分片
2 包在分片的情况下,是否表示最后一个包。0-最后一个分片的包、1-分片中段的包
生存时间(TTL:Time To Live)
由8比特构成,最初的意思是以秒为单位记录当前包在网络上应该生存的期限,而在实际中它是指可以中转多少个路由器的意思。每经过一个路由器,TTL会减少1,直到变成0则丢弃该包。
首部校验和(Header Checksum)
由16比特构成,也叫IP首部校验和。该字段只校验数据报的首部,不校验数据部分,它主要用来确保IP数据报不被破坏。
校验和的计算过程:
-
将该校验和的所有位置设置为0
-
以16比特为单位划分IP首部,并用1补数计算所有的16位字的和
-
将所得到这个和的1补数赋给首部校验和字段
(最近更新:2019年09月18日)