网络层协议
网络层(Network Layer) 的主要功能是实现主机之间的逻辑寻址、路由选择和分组转发,确保数据在不同网络(如局域网、广域网)之间的传输
协议类别 | 核心协议 | 路由协议 | 辅助协议 | 扩展协议 |
---|---|---|---|---|
功能 | 逻辑寻址、分组转发 | 路径计算与路由表维护 | 地址解析、错误控制、组播管理 | 安全、NAT、QoS等 |
典型协议 | IPv4/IPv6、IPSec | OSPF、BGP、RIP | ARP、ICMP、IGMP | NAT、GRE、DiffServ |
IP
IP(Internet Protocol),是分配给连接到计算机网络的每个设备唯一标识符,用于在网络中通信。IP地址使数据包能够在网络上找到其位置,将数据从源主机路送到目的主机,跨越多个中间网络设备(路由器),屏蔽底层网络差异(如以太网、Wi-Fi、广域网)。
但IP协议有点类似渣男,秉承着不主动,不拒绝,不负责
原则:
- 无连接
不预先建立建立,直接发送数据包(Packet)。 - 不可靠
不保证数据一定到达,不检查错误,不重传丢失的数据
它来鹅城只做三件事:
- 编址与标识(寻址)
每个连接到网络的设备,都会有一个IP地址。IP协议使用这个地址来表示源地址与目标地址。 - 路由与转发
每个数据包携带源IP与目IP ,路由器根据"路由表"选择最佳转发路径。
路由表通过静态配置或动态协议(如 BGP、OSPF)生成,核心依据是 "最长前缀匹配" 原则 - 分片与重组(仅接收端)
当数据包超过链路层的MTU时(如以太网MTU为1500字节),IP层将数据包拆分为多个分片(Fragment),每个分片包含独立的IP头。
接收端会根据分布信息将这些片段重新组装成完整的数据包。
IP数据包格式

字段 | 长度 | 说明 |
---|---|---|
版本 | 4位 | IPv4(值为4)或IPv6(值为6) |
首部长度 | 4位 | 以32位字为单位,最小5(20字节),最大60字节(含可选字段) |
区分服务 | 8位 | 旧称TOS(服务类型),用于QoS(服务质量),如优先级、延迟、吞吐量配置 |
总长度 | 16位 | 数据报总字节数(首部+数据),最大65535字节 |
标识 | 16位 | 唯一标识同一原始数据报的分片,用于重组 |
标志 | 3位 | 包括"保留位"、"不分片(DF)"、"更多分片(MF)"标志 |
片偏移 | 13位 | 分片数据在原始数据报中的偏移量(以8字节为单位) |
生存时间(TTL) | 8位 | 数据报最大跳数(每经一个路由器减1,为0时丢弃,防止环路) |
协议 | 8位 | 上层协议类型(如TCP=6,UDP=17,ICMP=1) |
首部校验和 | 16位 | 仅校验IP首部,不校验数据(提高效率,可靠性由上层协议处理) |
源IP地址 | 32位 | 发送方IP |
目的IP地址 | 32位 | 接收方IP |
可选字段 | 0-40字节 | 用于调试、安全等(如记录路由、时间戳),较少使用 |
IP的分类
- IPv4
最早和最常用的IP协议版本,使用32位地址,范围从0.0.0.0到255.255.255.255。约为43亿个,由于互联网的增长,已经快枯竭了。 - Ipv6
为了解决IPv4地址枯竭,而设计的新一代IP协议。使用128位地址,提供海量的IP池。比如:fe80::a00e:9ff2:c15f:e833%21
IPv4地址已经快枯竭了,但依旧是互联网的主流。因为还有DHCP,CIDR,NAT为它续命。
看过<三体>的小伙伴一定对647号小宇宙不陌生,路由器就是为IPv4构建了一个又一个的小宇宙,不至于枯竭。
特性 | IPv4 | IPv6 |
---|---|---|
地址长度 | 32位(约43亿地址) | 128位(足够为每粒沙子分配地址) |
地址空间 | 分类严格(A/B/C类),浪费严重 | 无类别(CIDR),地址分配灵活 |
首部长度 | 可变(20~60字节),处理复杂 | 固定40字节,效率更高 |
安全性 | 依赖IPsec(可选) | 强制支持IPsec(加密与认证) |
移动性 | 需额外协议(如MIP) | 内置移动性支持(家乡地址) |
分片 | 源主机和路由器均可分片 | 仅源主机分片,路由器不处理 |
兼容性 | 与IPv6不直接兼容 | 支持双栈(同时运行IPv4/IPv6) |
IP地址分类
根据作用范围,IP地址可以分为两种
- 私有IP地址
用于局域网内部(LAN),不能在互联网中传输
10.0.0.0-10.255.255.255
172.16.0.0-172.31.255.255
192.168.0.0-192.168.255.255 - 公有IP地址
有互联网服务商分配,可以在全球互联网中识别。
根据是否可以更改
- 静态IP地址
手动分配,不会改变。适合用于长期保持相同IP的设备,比如服务器。 - 动态IP地址
由DHCP服务器给你自动分配,每次连接网络或者超过一定时间都会改变。
ICMP
ICMP(Internet Control Message Protocol),用于IP层的错误报告和网络诊断,是一种面向无连接的协议。当IP数据无法访问目标IP,目标路由器时,会自动发送
ICMP消息。
我们常用的Ping命令就是基于ICMP
链路层协议
数据链路层是 物理层(硬件连接)与 网络层(IP 寻址)的桥梁,负责在相邻节点之间传输数据帧,处理物理寻址、接入控制和错误检测。
MAC
数据链路层分为两个子层:
- 逻辑链路控制子层(Logical Link Control,LLC)
为网络层提供统一接口(支持多协议如 IP、IPX),处理流量控制和链路管理(IEEE 802.2 标准,现代网络中功能多集成到 MAC 子层)。
LLC层常被简化,属于被抛弃的小孩
- 媒体访问控制(Media Access Control,MAC)
负责物理寻址(MAC地址),接入控制(CSMA/CD)和数据帧的传输
MAC地址:Media Access Contril Addres,是网络设备的硬件地址,用于在局域网中标识设备。MAC工作在链路层,用于设备间通信。
MAC帧格式

字段 | 长度(字节) | 功能描述 |
---|---|---|
前导码(Preamble) | 7 | 由 1010...10 交替的二进制位组成,用于接收端同步时钟,使物理层设备调整接收速率。 |
帧开始定界符(SFD) | 1 | 固定为 10101011 ,标识MAC帧的开始,通知接收端后续为有效数据帧。 |
目的MAC地址(DMAC) | 6 | 接收方网卡的物理地址(48位),最高位为 0 表示单播地址,1 表示组播地址,全 1 (FF:FF:FF:FF:FF:FF )为广播地址。 |
源MAC地址(SMAC) | 6 | 发送方网卡的物理地址(48位),无组播/广播标识,始终为单播地址。 |
类型字段(Type) | 2 | 标识上层协议类型: - 0x0800 :IP协议 - 0x0806 :ARP协议 - 0x86DD :IPv6协议 该字段区分帧承载的是哪种网络层数据。 |
数据字段(Data) | 46~1500 | 封装上层(网络层)的数据包(如IP数据报、ARP报文)。 - 最小长度46字节:若上层数据不足,需填充(Pad)至46字节,确保CSMA/CD机制正常工作(最小帧长64字节,减去14字节头部和4字节FCS,剩余46字节)。 - 最大长度1500字节:即MTU(最大传输单元),超过则需在网络层分片。 |
帧校验序列(FCS) | 4 | 基于CRC(循环冗余校验)算法生成的校验码,用于检测帧在传输过程中是否发生错误,校验范围包括DMAC、SMAC、Type、Data和Pad字段(不包括前导码和SFD)。 |
网络层与链路层的桥梁,ARP
Address Resolution Protocol(ARP,地址解析协议) 是计算机网络中用于将 IP 地址(网络层地址)解析为 MAC 地址(数据链路层地址) 的关键协议。它是局域网(LAN)通信的基础,主要解决 "已知 IP 地址,如何获取对应物理地址" 的问题。其帧直接封装在数据链路层(如以太网)的帧中

场景:主机 A(IP: 192.168.1.1)要向主机 B(IP: 192.168.1.4)发送数据,但不知道 B 的 MAC 地址。
- ARP请求
主机 A 构造一个 ARP 请求数据包,包含自身 IP 和 MAC 地址,以及目标 IP(192.168.1.4)。
该请求以广播形式
发送到局域网(所有主机都会收到)
。 - ARP响应
所有主机收到广播后,检查目标 IP 是否为自身。
只有目标设备会响应,并发送一个包含其MAC地址的ARP响应帧。 - 地址缓存
发送方收到ARP响应后,会将目标设备的IP地址和MAC地址映射关系缓存到本地。以便下次发送数据时,无需再进行地址解析。
ARP数据帧格式

字段 | 长度(字节) | 描述 | 示例值(以太网 + IPv4) |
---|---|---|---|
硬件类型(Hardware Type) | 2 | 标识底层硬件类型(如以太网、令牌环等)。 以太网对应值为 0x0001 。 |
0x0001 (以太网) |
协议类型(Protocol Type) | 2 | 标识上层协议类型(如 IPv4、IPv6 等)。 IPv4 对应值为 0x0800 。 |
0x0800 (IPv4) |
硬件地址长度(Hardware Address Length) | 1 | 硬件地址(如 MAC 地址)的长度(单位:字节)。 以太网 MAC 地址为 6 。 |
0x06 |
协议地址长度(Protocol Address Length) | 1 | 协议地址(如 IP 地址)的长度(单位:字节)。 IPv4 地址为 4 。 |
0x04 |
操作码(Operation Code) | 2 | 标识 ARP 操作类型: 1 = ARP 请求(Request), 2 = ARP 响应(Reply), 3 = RARP 请求(反向解析,已过时), 4 = RARP 响应。 |
0x0001 (请求)、0x0002 (响应) |
发送方硬件地址(Sender Hardware Address) | 可变(依硬件地址长度) | 发送方的硬件地址(如发送方 MAC 地址)。 以太网中为 6 字节。 |
发送方 MAC 地址(例:00-0C-29-12-34-56 ,二进制填充) |
发送方协议地址(Sender Protocol Address) | 可变(依协议地址长度) | 发送方的协议地址(如发送方 IP 地址)。 IPv4 中为 4 字节。 |
发送方 IP 地址(例:192.168.1.100 ,点分十进制转换为 4 字节) |
目标硬件地址(Target Hardware Address) | 可变(依硬件地址长度) | 目标的硬件地址: - ARP 请求时,因目标 MAC 未知,填全 0 (6 字节全 0); - ARP 响应时,填入目标真实 MAC 地址。 |
请求时:00-00-00-00-00-00 (全 0); 响应时:目标 MAC 地址 |
目标协议地址(Target Protocol Address) | 可变(依协议地址长度) | 目标的协议地址(如目标 IP 地址,需解析的 IP)。 | 目标 IP 地址(例:192.168.1.200 ,点分十进制转换为 4 字节) |
既生瑜何生亮?
IP地址与MAC地址都能表示唯一,那为什么既有IP,又有MAC呢?
- 解决的问题不同
MAC地址作用于链路层,是区分硬件的物理地址,MAC 地址负责每个网段内的微观传输
。
IP地址作用于网路层,是区分主机的逻辑地址,IP地址指导跨网段的宏观路由
。
如果只用MAC地址进行网络寻址的话,MAC地址长度48位。2^48=256TB内存。这将会是你负担不起的路由器价格。
ARP的变种与扩展
-
反向地址解析协议(RARP)
功能与 ARP 相反:已知 MAC 地址,解析对应的 IP 地址。
现已很少使用,被 DHCP 等协议替代。
-
免费 ARP(Gratuitous ARP)
主机主动发送 ARP 广播(即使无通信需求),属于ARP reply帧,但
请求的目标是自己
。用于是告诉广播域中其它主机自己的存在,更新其他主机的 ARP 缓存(如虚拟机迁移后,负载均衡的主备切换)。
判断广播域中是否存在IP冲突
-
无状态 ARP(Stateless ARP)
主机不维护 ARP 缓存,每次通信前都发送 ARP 请求(适用于低功耗设备或动态网络)。
眼见为实
ARP

ICMP
