IPV4数据包结构
- 共6行,每一行是32个bit,也就是4个字节
- 最后一行options和padding在默认的ipv4数据包中是空的
-
版本(Version) 4bit
如果协议是IPV4,则值为0100 -
IHL 头部长度(Header Length) 4bit
头部长度字段指示IP数据报头部的总长度,IP数据报头部的总长度以4字节为单位,该字段占4位。当报头中无选项字段时,报头的总长度为5,也就是5×4=20字节(此时,报头长度的值为0101)。这就是说IP数据报头部固定部分长度为20字节。当IP头部长度为1111时,头部的固定长度为15×4=60字节。但报头长度必须是32位(四字节)的整数倍,如果不是,需要在选项字段的填充(PAD)字段中补0凑齐。 -
服务类型 (Service type) 8bit
作用:对数据、流量进行标记 可以用于QOS策略 -
总长度(packet length) 16bit
包含ip包头和data数据 -
标识符(identification) 16bit
1—65535 在3层ip包头中用来标识或区分不同的流量 -
标志(Flags) 3bit
标志字段用以指出该IP数据报后面是否还有分段
第一位保留位 R 一般是空的
第二位DF(Don’t Fragment)位 不分片位 1表示不分片,0表示分片
第三位 MF(More Fragment)位 更多分片位 1表示后面还有分片,0表示无 -
分片偏移(Flag offset) 13bit
本数据包距离完整数据包头部的偏移值 单位:字节
-
生存时间(Time to live) 8bit
数值范围0—255 三层防环机制。
每经过一台路由器TTL值减1,当减为0时路由器直接丢弃。 -
协议号(protocol) 8bit
用于描述上层协议 -
头部校验和(header checksum) 16bit
计算数据包头部完整性;只检验数据报的首部。 -
源ip地址(Source address) 32bit
-
目标ip地址(Destination address) 32bit
-
可选项(options)
完成一些特殊功能:严格路由 松散路由 记录路由 时间戳只能在options 里面做。 -
填充项(padding)
IPv6与IPv4数据包内容的变化
IPv4数据包 IPv6数据包
Type of Service(Tos) <——> Traffic Class //用于流量分类标记
Total Length <——> Payload Length //用于标示数据大小
Protocal <——> Next Header //下层协议号
Time To Live(TTL) <——> Hop Limit //存活时间(跳数限制)
IPv4数据包中的其他字段:
Identification : 标志分片
Flags : 标记最后一个分片
Fragment Offset: 偏移位,通过偏移位将每个分片组装起来
Header Checksum: 头部校验和,检查数据包完整性
IPv6数据包中的其他字段:
Flow Label:流标签,通过流标签可以对不同数据流实施相应策略。
(注:可能有部分内容参考于其他博主,仅用于个人学习。)