(18)Ipv4地址类型、基本格式及主要特点

一、IPv4:是Internet Protocol version 4(网际协议版本4)的英文简称,而中文简称为“网协版4”

二、IPv4协议:网际协议版本4(英语:Internet Protocol version 4IPv4),又称互联网通信协议第四版,Pv4是一种无连接的协议,操作在使用分组交换的链路层(如以太网)上。此协议会尽最大努力交付数据包,意即它不保证任何数据包均能送达目的地,也不保证所有数据包均按照正确的顺序无重复地到达。这些方面是由上层的传输协议(如传输控制协议)处理的。

Ipv4地址类型

为了方便 IP 地址的管理及组网, IP 地址分成五类:

拓展: 

特殊IPv4地址:

私有IPv4地址

在IP地址3种主要类型里,各保留了3个区域作为私有地址,其地址范围如下: 
A类地址:10.0.0.0~10.255.255.255 
B类地址:172.16.0.0~172.31.255.255 
C类地址:192.168.0.0~192.168.255.255

回送地址:127.0.0.1。 也是本机地址,等效于localhost或本机IP。一般用于测试使用。例如:ping 127.0.0.1来测试本机TCP/IP是否正常。

为了解决 IP 地址短缺的问题,提出了私有地址的概念。私有地址是指内部网络或主机地址,这些地址只能用于某个内部网络,不能用于公共网络。RFC1918 描述了为私有网络预留的 3 个 IP 地址段。

【网络干货】IPV4基本原理技术详解_Java_06

Ipv4基本格式

IPv4使用32位(4字节)地址,因此地址空间中只有4,294,967,296(2)个地址。IPv4采用了“点分十进制表示法” 来便于用户识别和记忆,这种表示法的 IP 地址由 4 个点分十进制整数来表示,每个十进制整数对应一个字节。

例如,IPv4 地址使用二进制的表示形式为 00001010 00000001 00000001 00000010,采用点分十进制表示法表示为 10.1.1.2。

IPv4 地址由网络号码字段和主机号码字段组成:

网络号码字段(Net-id):IP 地址的网络号码字段用来标识一个网络,网络号码字段的前几位用来区分 IP 地址的类型。

主机号码字段(Host-id):主机号码字段用来区分一个网络内的不同主机。对于网络号相同的设备,无论实际所处的物理位置如何,它们都是处在同一个网络中。
Ipv4主要特点

(1)IPv4地址空间少于40亿个,实际可以使用的更少。

(2)IPv4不区分网络终端主机和终端设备,每台电脑都可以作为主机和路由器。路由协议管理路由表记录,常用的路由协议有路由信息协议、开放最短路径协议、边界网关协议等。

(3)IPv4独立于特定的网络硬件,可以运行在局域网、广域网、互联网中。网络地址分配方案唯一,设备有唯一的地址。

(4)IPv4缺乏对安全性的支持,无法实现网络实名制。网络中节点配置很复杂,不能满足用户“即插即用”的需求。

### IPv4IPv6报文结构及字段详解 #### 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 地址。 | 相比 IPv4IPv6 删除了一些冗余字段并将某些功能转移到扩展头部中,从而减少了固定头部的大小到仅 40 字节[^4]。 --- #### 3. 扩展头部 IPv6 支持多种类型的扩展头部,这些头部按顺序附加在基础头部之后。常见的扩展头部包括但不限于以下几种: - **逐跳选项头部**: 影响路径上的每一个节点的行为。 - **路由头部**: 提供显式的源路由机制。 - **分段头部**: 实现分片操作。 - **认证头部 (AH)** 和 **封装安全净荷 (ESP)**: 提供安全性支持。 通过这种模块化设计,IPv6 能够灵活适应不同的应用场景需求。 --- #### 4. IPv4IPv6 报文对比总结 | 属性 | 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、付费专栏及课程。

余额充值