IP报文头部详解
记不住?多记几遍,记不死它!
报头长度:
20-60字节bytes(固定长度+可选部分)
20+(0~40)
固定长度:
计算:
分五层,0~31,一层32比特bit
32*5 = 160bit = 20byte;
1、Version(版本):
用于区分不同IP版本。如IPv4、IPv6,用4bit表示,IPV4=0100
2、headerLength(头长度):
该字段用四位表示,表示整个ip包头的长度,其中数的单位是4字节。即二进制数0000-1111(十进制数0-15),其中一个最小长度为0字节,最大长度为60字节。一般来说此处的值为0101,表示头长度为20字节。
3、Differentiated Services Field (区分服务领域):
DS Field的两个部分DSCP和CU组合成一个可扩展性相对较强的方法以此来保证IP的服务质量。
发展历程
4、Total length(总长度):
该字段表示整个ip报文的长度,单位是1字节。 IP数据报(首部+数据)整体占多少字节。该字段为16位,所以数据报最大长度为 2^16−1=65535字节。不过由于链路层的MTU限制。超过1480字节后就会被分片(以太帧MTU为1500的情况下,除去20字节的包头)
5、identification(标识符):
唯一的标识主机发送的报文。
通常与标记字段和分片偏移字段一起用于IP报文的分片。IP软件在储存器中维护一个计数器,每产生一个数据报,计数器就+1,并将此值赋值给标识字段。当数据报长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报片的标识字段中。
当原始报文大小超过MTU,那么就必须将原始数据进行分片。每个被分片的报文大小不得超过MTU,而这个字段还将在同一原始文件被分片的报文上打上相同的标记,一边接收设备可以识别出属于同一个报文的分片,“类似于进程号”,有时候电信会用他来识别流量是否是同一台主机(因为做了PAT后源ip都是一样的)
6、flags(标记):
该字段是与ip分片有关的。其中有三位,但只后有两位是有效的,分别为MF,DF。
第1位没有被使用
第2位D是不分片位(DF),Do not fragment,顾名思义,不要分片,当DF位设置为1时,表示路由器不能对报文进行分片处理
第3位M表示还有后继分片(MF),More fragment,多分片,当路由器对报分进行分片时,除了最后一个分片的MF位设置为0外,其他所有分片的MF位均设置1,以便接收者直到收到MF位为0的分片为止
7、fragmentfation offset(分片偏移):
该字段是与ip分片后,相应的ip片在总的ip片的位置。
8、time to live(生存时间):
数据报到达目的地的最大报文跳数,一般是64。每经过一个路由,TTL 就会 -1,一直减到0还没有到达,那就丢弃了。这个字段主要是防止出现路由循环。
linxu为TTL=255,win98为TTL=128,win7为TTL=64这都是由应用程序*决定的。
9、protocol(协议):
标识上层的协议,占8位。
其中1,标识ICMP、
2标识IGMP、
6标识TCP、
17标识UDP、
89标识OSPF。
10、header checksum(头部校验和):
1)只校验头部,数据部分由高层协议校验
2)无需重复校验数据部分
3)缩短了路由器转发分组时的处理时间,把工作交给终端主机使用高层的协议校验数据
11、source ip address(源地址):
源IP地址,32bit
12、destination ip address(目标地址):
目的IP地址,32bit
ip option:
就是一个选项长度,大小从1字节到40字节不等
t
12、destination ip address(目标地址):
目的IP地址,32bit
ip option:
就是一个选项长度,大小从1字节到40字节不等
Option字段很少使用,用于控制、转发要求、测试等