IP头情景分析
Ip网络应用广泛普及了,我本人和ip接触很多年,闲暇之余,想来ip头设计有哪些特点,作文分享。
Ip头
这些字段分为三大类:分片重组(ip len,ipid,DF,MF,ip off)、地址(src addr,dst addr)、tos,其它。下面逐个介绍一下。
Version
现网使用的协议ipv4 /v6, ipv1 v2 v3仅仅存在实验室,v5为流媒体预留。Version字段总共4个bit,可以支持15个版本,还好ip是基础协议,版本不会太多,四个够用了。
本文仅讨论ipv4。
Ip hdr len
对于ipv4,这个字段默认是5,最小值5,数值代表4个字节的倍数,比如5,ip头长度5*4 = 20字节。
和ip类似,其它协议多四字节对齐,比如udp头8字节,tcp头20字节。
另外,4个bit,最大值是15,ip 头最大60字节,ip头最大40字节可选项。
tos
qos、dscp相关的。
ip len
整个ip报文的长度,最大65536字节,但是你很少见到这么长的报文。
ttl
防止环路用的。windows默认128,linux默认64
pro
协议类型,比如tcp=6,udp=17,gre=47
IP cksum
ip报文的校验和,16bit为单位计算
addr
ipv4报文地址是4字节
分片相关
IP id
DF
MF
offset
分片
分片示意图
如图,分片对“udp+payload”进行分片(包括udp头)。
报文分片,DF(don’t fragment)必为0。
MF(more fragment)=1表示当前报文后续还有分片包,置0表示后续没有分片了。
Offset表示当前的分片在分片前报文中的字节偏移(除以8后的值,分片以8字节为对齐)。
分片三元组
一组分片包,由三元组src addr+dst addr+ ip id唯一确定,在特定的分片服务器和重组服务器下(src addr和dst addr确定情况下),ip id用来标识不同分片组。这个标识16bit,取值范围65536,一般递增。
ipid标识分片分组
在一个网元或服务器内,Ipid用来标识不同分片组。如果多个服务器(或网元)的分片在一个服务器(网元)重组,它们的ipid有可能出现相同的情况(比如图中ipid1=ipid2=ipid3),这种情况下,src addr用来标识不同服务器。如下图。
Src addr区分不同服务器
Tcp一般不分片
值得注意的是,分片一般为udp报文,而tcp为了估算路径拥塞,一般不会分片。所以tcp报文的ip头里DF一般置位1。
Tcp的路径拥塞估算
如上图,tcp一般使用t1(发送data的时刻t1)和t2(接收对应ack的时刻)差来估算路径是否拥塞。如果tcp分片后,时间估算会不准确,如下图。
第1步(t1时刻)和第6步(t2时刻)的时间差会比较大(估算为路径拥塞),这是由于第3步的“拥塞路径”造成,这样tcp估算路径是拥塞的,而图中分片第2步的路径是非拥塞,分片后,实际的路径拥塞估算出现了偏差。
Ipid的划分
有些框式网元中,ipid要避免设备内冲突。比如下图框式设备,一个框中插满线卡,这些线卡同为一个网元,也就是一个设备。
在这种设备中,一般ipid的赋值采用分段划分。如下图。
网元内ipid分段配置
以上为ip头某些字段情景讲解,待续。
领取专属 10元无门槛券
私享最新 技术干货