网际协议(IP协议)

一、什么是网际协议(IP)

定义 :网际协议(Internet Protocol,IP)是TCP/IP协议族中的核心网络层协议 ,定义了数据在网络中传输的基本单元(IP数据报),并负责将数据从源主机路由到目标主机。

核心功能

  1. 寻址:为每台连接到互联网的设备分配唯一的IP地址

  2. 分片与重组:将大的数据报拆分成适合底层网络传输的小片,到达目的地后再重组

  3. 路由:选择路径将数据报从源转发到目标

关键特点

  • 无连接:每个IP数据报独立传输,不预先建立连接

  • 不可靠:不保证数据报一定能到达(可能丢失、乱序、重复)

  • 尽力而为:IP协议只"尽力"发送,差错控制和可靠传输由上层协议(如TCP)负责

二、IP地址

2.1 IP地址的作用

IP地址是互联网上每台设备的唯一标识 ,类似于现实生活中的门牌号

特性 IPv4 IPv6
地址长度 32位 128位
地址数量 约43亿个 约3.4×10³⁸个
表示方法 点分十进制(如 192.168.1.1 冒分十六进制(如 2001:db8::1
现状 已耗尽,逐步向IPv6过渡 逐步普及

(点击 跳转 见IPv6更多知识)

2.2 IPv4地址结构

一个IPv4地址由网络部分主机部分组成。

复制代码
192.168.1.100
└────┬──┘ └┬┘
   网络号   主机号

网络号 :标识设备所在的网络
主机号:标识该网络中的具体设备

2.3 IP地址分类(传统分类法)

类别 首字节范围 网络号位数 主机号位数 用途
A类 1-126 8位 24位 超大型网络
B类 128-191 16位 16位 大型网络
C类 192-223 24位 8位 小型网络
D类 224-239 --- --- 组播地址
E类 240-255 --- --- 保留(科研)

注意:127.x.x.x 保留给本机回环测试(localhost = 127.0.0.1)

2.4 特殊IP地址

地址 用途
0.0.0.0 默认路由,表示"任何网络"
255.255.255.255 本地广播(同一网络内所有设备)
127.0.0.1 本机回环地址(测试自己的网络协议栈)
10.0.0.0/8 私有地址(内网用,不公网路由)
172.16.0.0/12 私有地址
192.168.0.0/16 私有地址(最常见,如家庭路由器)

2.5 子网掩码

作用:从IP地址中提取网络号和主机号。

原理

  • 子网掩码是一个32位数

  • 网络部分对应位 = 1

  • 主机部分对应位 = 0

示例

复制代码
IP地址:      192.168.1.100  → 11000000.10101000.00000001.01100100
子网掩码:    255.255.255.0  → 11111111.11111111.11111111.00000000
                    └──────┬───────────────────────────┘ └────┬───┘
                           网络部分                        主机部分        

网络地址 = IP地址 AND 子网掩码 = 192.168.1.0
主机号 = 100

CIDR表示法192.168.1.0/24 表示前24位是网络部分。

2.6 公有地址 vs 私有地址

类型 说明 示例
公有IP地址 全球唯一,可在互联网上路由 8.8.8.8(Google DNS)
私有IP地址 仅在内部网络使用,不能直接上公网 192.168.1.100(你家的电脑)

NAT(网络地址转换):允许多个私有IP地址共享一个公有IP地址访问互联网(家用路由器实现)。

三、IP数据报格式

3.1 IPv4数据报结构

3.2 关键字段解释

字段 长度 含义
版本 4位 IP协议版本(IPv4=4,IPv6=6)
首部长度 4位 IP首部有多少个32位字(最小5,最大15)
服务类型(TOS) 8位 指示优先级、延迟、吞吐量等(QoS用)
总长度 16位 整个IP数据报的长度(首部+数据),最大65535字节
标识 16位 标识同一个原始数据报的所有分片
标志 3位 是否允许分片、是否是最后一个分片
片偏移 13位 该分片在原始数据报中的位置(以8字节为单位)
生存时间(TTL) 8位 最大跳数,每经过一个路由器减1,减到0时丢弃(防止循环)
协议 8位 上层协议类型(6=TCP,17=UDP,1=ICMP)
首部校验和 16位 仅校验IP首部(数据部分由上层校验)
源IP地址 32位 发送方IP地址
目的IP地址 32位 接收方IP地址

四、IP分片与重组

4.1 为什么需要分片

问题 :不同的物理网络有最大传输单元(MTU)限制。

  • 以太网MTU = 1500字节

  • PPPoE(宽带拨号)MTU = 1492字节

  • 某些网络MTU可能更小

解决 :当IP数据报长度超过下一跳网络的MTU时,路由器将其分片成多个较小的数据报。

4.2 分片过程

复制代码
原始数据报(3000字节)
┌────────────────────────────────────────────────────┐
│ IP首部(20)│              数据(2980)              │
└────────────────────────────────────────────────────┘
                    ↓ 分片(MTU=1500)
┌──────────────────────────────────┐
│ 首部20 │ 数据1480(分片1,偏移0) │ 标志=更多分片
├──────────────────────────────────┤
│ 首部20 │ 数据1480(分片2,偏移1480)│ 标志=更多分片
├──────────────────────────────────┤
│ 首部20 │ 数据20(分片3,偏移2960) │ 标志=最后分片
└──────────────────────────────────┘

4.3 重组

  • 只在最终目标主机进行重组,路由器不重组(除了特殊情况)

  • 根据标识字段识别属于同一原始数据报的分片

  • 根据片偏移标志字段确定顺序

  • 所有分片到达后,重组原始数据报

五、IP路由

5.1 路由原理

路由:IP数据报从源到目的地的路径选择过程。

路由表:每个路由器维护一张路由表,包含:

  • 目标网络地址

  • 下一跳地址

  • 出接口

路由器出接口就是数据包离开路由器 的那个端口(物理或逻辑),相当于路由器的"出口大门"。

  • 是什么 :路由器根据路由表选路后,数据包实际发出去 的那个端口(如 GigabitEthernet0/0/1)。

  • 做什么:负责将数据包从路由器转发到下一跳设备(如交换机、光猫或对端路由器)。

  • 与"入接口"(进口)相对,是数据转发的出口

  • 路由度量(距离、带宽等)

路由度量(Metric)是路由器用来量化"去往某个网络有多好"的一个数值 。说白了,它就是路由条目的**"价格标签"**------数值越小,代表路径越优,数据包越优先走这条路。

常见度量指标

路由器通过综合计算多种指标来决定这条路的"代价":

度量类型 作用 通俗理解
**跳数 (Hop Count)**​ 数据包经过的路由器台数 经过的收费站越少越好
**带宽 (Bandwidth)**​ 链路的速度上限 路越宽,跑得越快
**延迟 (Delay)**​ 数据包传输的耗时 路况是否拥堵,是否绕远
**可靠性 (Reliability)**​ 链路的稳定程度(丢包率) 这条路是不是老修路、老断线
**负载 (Load)**​ 链路当前的流量占用 这条路现在堵不堵车

决策逻辑

路由器在有多条路可走时,会优先选择 Metric 值最小的路径

  • 场景:去北京有两条路,一条是4车道高速(带宽大)但绕远(跳数多),一条是2车道国道(带宽小)但直连。

  • 计算 :如果算法更看重跳数 ,会选国道;如果更看重带宽,会选高速。

  • 结果:Metric 就是这套算法算出的最终"分数"。

实际应用

  • 静态路由 :手动配置时直接指定 Metric(如 ip route ... metric 10),数值越小优先级越高。

  • 动态路由:OSPF、EIGRP 等协议会自动计算 Metric(如 OSPF 基于带宽算 cost)。

一句话总结 :Metric 是路由的优先级权重,数值越小路径越优,决定了数据包"怎么走"。

5.2 路由过程(简化)

复制代码
主机A(192.168.1.10)发送数据给主机B(8.8.8.8)

1. 主机A检查:目标是否在同一网络?
   - 192.168.1.10/24 vs 8.8.8.8 → 不在同一网络
   - 将数据报发送给默认网关(192.168.1.1)

2. 路由器R1(192.168.1.1):
   - 查路由表 → 发现目标8.8.8.0/24 → 下一跳R2(10.0.0.2)

3. 路由器R2:
   - 查路由表 → 目标8.8.8.0/24 → 直接连接(从eth0发出)

4. 主机B(8.8.8.8)收到数据报

5.3 路由表示例

复制代码
目标网络           子网掩码           下一跳           出接口
0.0.0.0           0.0.0.0           192.168.1.1      eth0
192.168.1.0       255.255.255.0      直接连接          eth0
10.0.0.0          255.255.255.0      直接连接          eth1
8.8.8.0           255.255.255.0      10.0.0.2         eth1

0.0.0.0/0默认路由,匹配所有不在其他路由表中的目标。

六、IPv4 vs IPv6

特性 IPv4 IPv6
地址长度 32位 128位
地址数量 ~43亿 几乎无限
地址表示 点分十进制(192.168.1.1) 十六进制(2001:db8::1)
首部长度 可变(20-60字节) 固定40字节
分片 路由器和主机都能分片 只有源主机分片
校验和 有(仅首部) 无(依赖上层)
安全性 可选(需额外IPsec) 内置IPsec支持
配置 手动或DHCP 自动配置(无状态)
NAT 普遍使用 不需要
广播 支持 不支持(用组播替代)

七、IP协议与上层/下层的关系

复制代码
┌─────────────────────────────────────────┐
│           应用层(HTTP、FTP、DNS等)       │
├─────────────────────────────────────────┤
│          传输层(TCP、UDP)               │
│           TCP段/UDP数据报                 │
├─────────────────────────────────────────┤
│          网络层(IP)           ← 我们在这里 │
│           IP数据报                         │
├─────────────────────────────────────────┤
│        数据链路层(以太网、Wi-Fi等)       │
│               帧                          │
├─────────────────────────────────────────┤
│          物理层(双绞线、光纤等)          │
└─────────────────────────────────────────┘

封装过程

复制代码
用户数据 → TCP头 + 数据 = TCP段 → IP头 + TCP段 = IP数据报 → 以太网头 + IP数据报 = 以太网帧

八、IP协议的局限性

问题 说明 解决方案
不可靠 数据报可能丢失 上层TCP提供可靠传输
无顺序保证 数据报可能乱序 TCP负责排序
无重复检测 可能收到重复包 TCP去重
无差错控制 数据部分错误不检测 上层协议(如TCP/UDP)提供校验
无拥塞控制 IP不感知网络拥塞 TCP实现拥塞控制
无流量控制 IP不协调收发速度 TCP实现流量控制

关键理解 :IP的"不可靠"是设计选择,而不是缺陷。将可靠性放在传输层(TCP)实现,使IP可以保持简单、高效,适用于各种应用场景。

!!物理地址和IP地址、地址解析协议与网际协议的关联 --->> 点击 跳转

相关推荐
爱学习的小囧2 小时前
ESXi VMkernel 端口 MTU 最佳设置详解
运维·服务器·网络·php·虚拟化
TechubNews5 小时前
Base 发布首个独立 OP Stack 框架的网络升级 Azul,将是 L2 自主迭代的开端?
大数据·网络·人工智能·区块链·能源
多年小白6 小时前
中科院 Ouroboros 晶圆级存算一体芯片深度解析
大数据·网络·人工智能·科技·ai
发光小北6 小时前
IEC104 转 Modbus TCP 网关如何应用?
网络·网络协议·tcp/ip
山栀shanzhi7 小时前
在做直播时,I帧的间隔(GOP)一般是多少?
网络·c++·面试·ffmpeg
小宏运维有点菜7 小时前
服务器 BMC 管理 IP
服务器·tcp/ip·centos
SPC的存折7 小时前
Cisco Packet Tracer 静态路由全网互通实验及详细教学文档,包括基础常识、实验信息、IP 地址规划和分步操作流程
网络·tcp/ip·智能路由器
东北甜妹7 小时前
网络服务-
网络·智能路由器
isyangli_blog7 小时前
openstack 下载打包整套环境
服务器·网络·openstack