IP数据包格式
本文最后更新于 926 天前,其中的信息可能已经有所发展或是发生改变。

一:一个IP数据包包含的内容

 

版本字段:这个ip包里的IP地址是ipv4还是ipv6,0100表示IPv4,如果为0110表示IPv6

首部长度字段:表示IP首部的总长度,其中包括选项字段(如果有)。该字段的表示的长度单位为32bit(4 bytes),因此首部长度最大为15(1111)*32bit=60bytes。在没有选项时,该字段的值为5,表示普通的IP包头长度20bytes。

优先级与服务类型:8bit的服务器类型(TOS)字段,其中前3个bit表示优先权(现在已经忽略该字段),随后的4个bit表示服务类型,按顺序分别表

示为最小时延、最大吞吐量、最高可靠性、最小费用四种。这个4个bit中最多只能有1个bit置位,如果全是0则表示一般服务。最有1个bit为未用位,必须置0。

总长度:

6个bit的总长度字段表示整个IP数据包的长度,以字节为单位。所以IP数据报的最大长度为16个1=65535bytes。

此处的总长度字段与MTU是密切相关的,MTU表示IP数据报的最大传输单元的大小,我们知道一般默认的MTU值为1500,也就是说单个IP数据报的最大长度为1500bytes。常规的无选项的IP包头长度为20bytes,可以通过MTU计算出DATA数据字段的最大长度为1480bytes。不仅如此,MTU还与TCP协议报头中的MSS有关联,MSS表示TCP数据报的最大传输长度,常规的TCP报头长度为20bytes,又因为TCP报头是封装在IP包头上的,所以MSS一般为1460bytes=MTU1500-IP包头20-TCP报头20。(其中关于MSS字段的详细解释请参见《TCP协议文档》)。由于默认MTU为1500bytes,所以网卡发送的数据帧的大小为1518bytes,多了18bytes分别为:目的MAC(6bytes)、源MAC(6bytes)、type(2bytes)、CRC(4bytes)

分片:默认MTU为1500bytes,所以网卡发送的数据帧的大小为1518bytes,但是超过了1500bytes,即会切片

 

标识:

16bit的标识字段唯一的标识主机发送的每一份数据报,由主机生成具有唯一性。通常每发送一份报文该值加1。该值在数据包分片时,会复制到每一个片中。所以在重组分片包的时候会观察该值,把该值相同的分片收集到一起重组。

标志:

3bit的标识字段每一位都有特定的含义,该字段主要用来分片和重组。第1个bit为保留位(Reserved Bit),一般置位0。第2个bit为不分片位(Don’t Fragment),该位在置1时表示不分片。第3个bit为更多片位(More Fragment),该位表示后面是否还有更多的分片,置位1时表示后面还有,所以除了最后一片报文,其他分片报文该位全部置。

 

段偏移量:

一个分片最长为1480,从0开始,如图

TTL(生成时间)

8bit的生成时间字段表示该IP数据包可以经过的路由器的最大数量。最大为256表示可以穿越256台路由,该字段采用减法的方式赋值,比如在开始时8个bit全部置位1,每经过一台路由器该字段的值减1。如果该字段的值减到了0还没有送达目的地,那么该IP数据包将被丢弃。最初设计这个字段是为了防止IP报文在网络中循环无限传输,占用带宽等问题。

 

协议(Protocol):

8bit的协议字段表示在IP上层承载的是什么协议。比如:0x01表示ICMP协议、0x06表示TCP协议、0x11表示UDP协议等。

 

首部校验和(Header Checksum)

16bit的首部校验和字段用来使接收端检验收到的报文是否正确。该字段只对IP首部计算校验和不包含后面的数据字段。原因是IP的上层协议比如ICMP、IGMP、TCP、UDP协议的各自首部中均含有同时覆盖首部和数据的校验和。

选项(Option)

一般不使用该字段,该字段的值以32bit为单位,不足时以0补充。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇