Linux 网络协议栈梳理
前言 本文梳理常见报文格式、联网流程及 Linux 网络协议栈的收发路径。 网络分层与报文格式 OSI 七层模型用于理解分层;TCP/IP 模型通常将 L5~L7 合为应用层。学习 Linux 网络时,重点掌握 L2、L3、L4、L7,以及以太网、IP、TCP/UDP 的报文格式。 层级 名称 典型协议或功能 L7 应用层 HTTP、DNS、FTP、SMTP、SSH L6 表示层 编码、加密、压缩 L5 会话层 会话建立、管理与终止 L4 传输层 TCP、UDP L3 网络层 IPv4、IPv6、ICMP、IPsec L2 数据链路层 Ethernet、PPP、PPPoE、802.1Q L1 物理层 电气、光学信号及其传输介质 L2 数据链路层 Ethernet II 以太网帧 普通、未带 VLAN 标签的帧格式如下: 目的 MAC 源 MAC EtherType 数据及填充 FCS(帧校验序列) 6 字节 6 字节 2 字节 46~1500 字节 4 字节 帧长与 MTU:帧长为 64~1518 字节(含 FCS);IP MTU 通常为 1500 字节,不含以太网首部、填充和 FCS。数据不足 46 字节时需填充,填充不属于 IP 报文。RFC 894 前导码与帧间隙:帧前为 7 字节前导码和 1 字节帧开始定界符(SFD)。帧间隙是空闲时间,通常按 96 bit times(12 字节的发送时间)计算,不属于帧内容。IEEE 802.3 工作组说明 EtherType 与 VLAN:0x0800 为 IPv4,0x0806 为 ARP,0x86DD 为 IPv6。802.1Q 在源 MAC 后插入 4 字节标签(TPID + TCI),常用 TPID 为 0x8100,标签后仍有实际 EtherType。IANA 注册表 ARP 用于解析 IPv4 地址对应的 MAC 地址,在以太网中直接封装,不经过 IP。 ...