IPv4数据报报文格式

格式:

IP数据报是IP处理的基本单元,由两部分组成:IP数据报头,数据。

数据包头包含一个20B的固定长度,和一个可变长度的最多40B的部分,传输层的数据到达网络层时,IP要在前面加IP数据报头,因为无差错传输发送,所以是按顺序发送的,先0-7,在8-15,16-23,24-31由此数据报头发送完毕,

0-3字节:版本号:建立IP分组的版本号,若为4 表明用IPv4确保发送端和接收端以及相关路由器都是用相同的IP数据报格式

4-7字节:报头长度,标识报头长度的字段,指明报头中包含的4B的个数,可接受的最小长度是5,即0101,最大值15,即1111缺省值为5 ,

8-15字节:服务类型:优先级0-7,7最高优先级

16-31字节:总长度

 

数据报分段与重组:IP数据报封装在数据帧中进行传输,以太网的最大帧长为1518B, X.25最大长度为1024B, 传输过程中跨越若干物理网络,所容许的最大帧长不同 所以需要一种分段机制,把一个大的IP数据报分成小的分段发送,

第二行:标识符,标志域,分段偏移值;

第二行0-15位:标识符,数据报ID是一个无符号整形值,ID占16位,同一个报文的分段有相同的标识符,标识符的分配不能重复,                            每发送一个就要加1,作为下一个的ID

第二行16-18位: 标识域,三位,但只有低两位有效,第一位标识是否发送完没有时位1,完了0;第二位禁止分段标识。

第二行19-31位:分段偏移值,13位,以8 B位单位标识当前数据报相对于头的偏移量,

第三行:生存时间,协议类型,报头校验和;

第三行0-7位:生存时间,数据报在进入Internet后生存的时间,以秒位单位,最大值255,

第三行8-15位:协议类型,指出IP数据报中的数据属于哪种协议0x06TCP,0x17UDP,

ICMP0x01,  IGMP 0x02可于RFC1700,RFC3232查询

第三行16-31位:报头校验和,保证头部数据正确性,

第四行第五行分别为源端IP,目的端IP,

IP地址:计算机的唯一32 位地址,可以是计算机,路由器,终端服务器客户端,等。

第六行可选项与填充项

后64KB位数据;

 

 

 

### IPv4与IPv6报文结构及字段详解 #### 1. IPv4 报文结构 IPv4 数据报由固定部分和可变选项部分组成。其基本格式如下: | 字段名称 | 长度 (位) | 描述 | |------------------|-----------|----------------------------------------------------------------------| | 版本 | 4 | 表明协议版本号,对于 IPv4 始终为 4[^2]。 | | 头部长度 (IHL) | 4 | 指定头部的长度,单位为 32 位字,最小值为 5(即 20 字节)。 | | 差分服务字段 | 8 | 曾称为 TOS,用于 QoS 控制。 | | 总长度 | 16 | 整个数据报的总长度,包括头部和数据部分,单位为字节。 | | 标识符 | 16 | 用于唯一标识主机发送的数据报。 | | 标志 | 3 | 控制分片行为,通常用来防止进一步分片。 | | 分片偏移量 | 13 | 如果发生分片,则表示该片段相对于原始数据报的位置。 | | 生存时间 (TTL) | 8 | 定义数据报在网络中的最大跳数,每经过一个路由器减 1,直到变为 0 则丢弃。 | | 协议 | 8 | 指定上层协议类型,如 TCP 或 UDP。 | | 首部校验和 | 16 | 对整个首部进行错误检测。 | | 源地址 | 32 | 发送方的 IP 地址。 | | 目标地址 | 32 | 接收方的 IP 地址。 | IPv4 的主要特点是头部较复杂,包含许多固定的字段以及可选字段。 --- #### 2. IPv6 报文结构 IPv6 设计的目标之一是简化头部结构并提升性能。以下是 IPv6 报文的基本格式: | 字段名称 | 长度 (位) | 描述 | |------------------|-----------|----------------------------------------------------------------------| | 版本 | 4 | 表明协议版本号,对于 IPv6 始终为 6。 | | 流类别 | 8 | 类似于 IPv4 中的差分服务字段,用于流量分类。 | | 流标签 | 20 | 可用于标记特定流,便于中间节点优化处理。 | | 载荷长度 | 16 | 不包括基础头部在内的有效载荷长度,单位为字节。 | | 下一头部 | 8 | 指向下一个头部类型,类似于 IPv4 的协议字段。 | | 跳数限制 | 8 | 功能类似于 TTL,控制数据报的最大跳数。 | | 源地址 | 128 | 发送方的 IPv6 地址。 | | 目标地址 | 128 | 接收方的 IPv6 地址。 | 相比 IPv4,IPv6 删除了一些冗余字段并将某些功能转移到扩展头部中,从而减少了固定头部的大小到仅 40 字节[^4]。 --- #### 3. 扩展头部 IPv6 支持多种类型的扩展头部,这些头部按顺序附加在基础头部之后。常见的扩展头部包括但不限于以下几种: - **逐跳选项头部**: 影响路径上的每一个节点的行为。 - **路由头部**: 提供显式的源路由机制。 - **分段头部**: 实现分片操作。 - **认证头部 (AH)** 和 **封装安全净荷 (ESP)**: 提供安全性支持。 通过这种模块化设计,IPv6 能够灵活适应不同的应用场景需求。 --- #### 4. IPv4 与 IPv6 报文对比总结 | 属性 | IPv4 | IPv6 | |-------------------|------------------------------------|------------------------------------| | 固定头部长度 | 20 字节 | 40 字节 | | 地址空间大小 | 32 位 (约 43 亿个地址)[^3] | 128 位 (几乎无限多)[^3] | | 首部校验和 | 存在 | 移除 | | 自动配置能力 | 较弱 | 强大 | | 安全特性 | 需要额外协议实现 | 内置 IPSec | | 扩展性 | 使用选项字段 | 使用扩展头部 | 上述差异使得 IPv6 更加适合现代互联网的需求,在地址耗尽、移动性和安全性等方面具有显著优势[^3]。 ```python # 示例 Python 程序展示如何解析简单的 IPv4/IPv6 数据包头 import struct def parse_ipv4_header(packet): version_ihl, tos, total_length, identification, flags_offset, ttl, protocol, checksum, src_ip, dst_ip = \ struct.unpack('!BBHHHBBHII', packet[:20]) ihl = version_ihl & 0xF header_len = ihl * 4 return { 'version': version_ihl >> 4, 'header_length': header_len, 'tos': tos, 'total_length': total_length, 'identification': identification, 'flags_offset': flags_offset, 'ttl': ttl, 'protocol': protocol, 'checksum': checksum, 'src_ip': socket.inet_ntoa(struct.pack('!I', src_ip)), 'dst_ip': socket.inet_ntoa(struct.pack('!I', dst_ip)) } def parse_ipv6_header(packet): ver_tc_flow, payload_length, next_header, hop_limit, src_addr, dst_addr = \ struct.unpack('!IHBB16s16s', packet[:40]) return { 'version': ver_tc_flow >> 28, 'traffic_class': (ver_tc_flow >> 20) & 0xFF, 'flow_label': ver_tc_flow & 0xFFFFF, 'payload_length': payload_length, 'next_header': next_header, 'hop_limit': hop_limit, 'src_address': socket.inet_ntop(socket.AF_INET6, src_addr), 'dst_address': socket.inet_ntop(socket.AF_INET6, dst_addr) } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值