您的位置:首页 > 理论基础 > 计算机网络

网络详解 - 网络层(3)IPv4数据报格式

2018-01-03 16:56 369 查看
IP数据报的格式可以说明有哪些功能,通常都是一行32位、4字节来表示数据包的格式,如下图。



Version :版本号现在简介的IPv4,所以版本号固定为4,即0100

IHL:Internet Header Length,数据报头部长度,用于标识头部信息长度。长度单位为 4 个字节,不满 4 字节尾部填充0补全。

DSCP:Differentiated Services Code Point,服务代码,用于区分不同服务,一般不会用到。如果设置值了,也必须机器支持才有效。比如VoIP服务,就需要使用交互式数据语音交换机。

ECN:Explicit Congestion Notification,显示拥塞控制,用于进行拥塞控制。在后面章节会进行详细介绍网络拥塞控制相关。

00
不支持显示拥塞控制

01
支持显示拥塞控制,ECT(0)

10
支持显示拥塞控制,ECT(1)

11
网络发生了拥塞

Total Length:该数据报总长,单位是字节,所以理论上最长的数据报为 2^16-1 字节,但是一般不会有这么大的数据包,不利于传输以及差错控制,常用的下层协议中的以太网协议,就规定了最大传递单元为1500字节,过大的数据报就需要进行分片拆分成一个个小数据报,最小为20字节,即只有数据报的头部信息。

Identification:标识。和源地址、目标地址一起用于标识唯一IP数据报的分段组。

Flags:标志。这个字段有3位。

bit 0:保留,必须置0。

bit 1:是否允许分片。

bit 2:更多分片。表示是否还有分片。

Fragment Offset:片偏移,单位8字节。和前面2个字段一起使用,用于将多个IP数据报的数据部分组装成正确的数据,提供给上层系统进行处理。表示该数据报的数据部分已经偏移了多少字节。

Time To Live:存活时间,又称跳数,原本是用来表示该数据报运行在网络上存活时间(单位秒),一个数据报从一台机器发送到另外一台机器后,会将该字段减去传输时间(不足1秒,算1秒)。但是现代科技的发展,每次传输远小于1秒,故条数这一说法,在IPv6中已经将该字段改成了跳数。用于防止数据报在网络中无限传输导致的网络风暴。

Protocol:上层协议,表示数据部分交给上层要用什么协议进行处理。常用:TCP(6)

Header Checksum:头部校验和,用反码求和运算计算该数值。

计算

1.将头部校验和字段用0填充。

2.将头部字段按照16位一组进行分组。

3.每组进行加法运行,最高位有进位,进位到最低位处。

4.计算结果求反码填充到该字段中。

校验

1.将头部字段按照16位一组进行分组。

2.每组进行加法运行,最高位有进位,进位到最低位处。

3.计算结果求反码,如果全为0,表示该数据报首部没有错误。(有可能有错误,这种方式校验不出来的,不过概率很低)

Source IP Address:IP源地址

Destination IP Address:IP目标地址

Options:扩展首部

下面是我的抓包数据,开始部分就是IP数据报的首部,和刚刚讲的字段一一对应,在接下来就是数据部分,这里已经自动按照TCP进行解析了。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ipv4 网络 互联网