一、网络协议基础
1. 协议定义
网络协议是通信双方约定好的沟通规则,用于保障设备之间能够正常交互数据。
- 原始协议:双方最初约定、未经过迭代完善的基础通信规则
- 标准协议:在原始协议基础上持续迭代、补充、优化后,形成行业通用规范的协议
二、网络分层架构
分层核心优势:职责拆分、分工明确,解耦各层功能,单独修改某一层协议不影响其他层。
1. OSI 七层参考模型(标准理论模型)
从上至下:应用层 → 表示层 → 会话层 → 传输层 → 网络层 → 数据链路层 → 物理层
2. TCP/IP 四层实际架构(开发常用,Go 网络编程基于这套)
从上至下:应用层 → 传输层 → 网络层 → 链路层
补充说明:OSI 的物理层、数据链路层在 TCP/IP 中统一合并为链路层
三、各分层对应核心协议
每一层都配套专属协议,各司其职,快速区分技巧:
- 链路层(MAC 地址相关):ARP、RARPARP:IP 地址解析为 MAC 地址;RARP:MAC 反向解析 IP
- 网络层(IP 地址相关):IP、ICMP、IGMP
- 传输层(端口号相关):TCP、UDP(日常统称 TCP/IP 协议簇)
- 应用层(业务数据格式):FTP、Telnet、TFTP、NFS
四、三层地址核心概念(通信三要素)
1. 链路层:MAC 地址(物理地址)
- 标识硬件网卡,全球唯一,固化在网卡硬件中
- 通信范围:设备到设备,MAC 到 MAC 直连通信
- MAC 获取方式:局域网广播查询(ARP 广播)
- 仅靠链路层通信缺陷:无网段隔离,全网广播会产生广播风暴,网络拥堵
2. 网络层:IP 地址(逻辑地址)
为解决广播风暴问题引入 IP,对网络做网段划分:
- 广播仅限制在当前局域网,不会跨网段扩散,规避广播风暴
- 作用:定位互联网中哪一台主机
- 数据包携带:源 IP、目的 IP
3. 传输层:端口号
一台主机可能同时运行多个网络程序,端口用来区分主机内不同进程:
- 作用:定位目标主机上哪一个应用程序 / 进程
- 数据包携带:源端口、目的端口
- 端口约束:同一台操作系统内,一个端口同一时间只能被一个程序绑定;不同主机可使用相同端口
通信三要素总结(建立网络通信必备条件)
- 网卡 + MAC 地址:硬件标识,底层自动处理,无需开发者手动操作
- IP 地址(逻辑地址):定位目标主机,代码中需要手动指定
- 端口号:定位主机内目标程序,代码中需要手动指定
五、四层数据封装(组包)与解包流程
以发送数据 Hello World 为例:发送端自上而下逐层封装(加头部),接收端自下而上逐层解封装(拆头部),类似快递层层打包、拆快递。
1. 发送端组包过程(从上到下封装头部)
- 传输层 :添加传输层头部(源端口、目的端口)数据包:
[源端口 | 目的端口 | Hello World] - 网络层 :添加网络层头部(源 IP、目的 IP)数据包:
[源IP | 目的IP | 源端口 | 目的端口 | Hello World] - 链路层 :添加链路层头部(源 MAC、目的 MAC)完整数据包:
[源MAC | 目的MAC | 源IP | 目的IP | 源端口 | 目的端口 | Hello World]
数据包通过网线 / 无线网络传输至目标主机网卡。
2. 接收端解包过程(从下到上拆解头部)
- 链路层:解析 MAC 头部,匹配本机 MAC,拆除链路层头,向上交付网络层
- 网络层:解析 IP 头部,匹配本机 IP,拆除 IP 头,向上交付传输层
- 传输层:解析端口头部,匹配程序监听端口,拆除端口头,将原始数据
Hello World交付对应应用程序
六、分层快速判断口诀(复习速记)
- 涉及 MAC、ARP/RARP → 链路层
- 涉及 IP、ICMP、IGMP → 网络层
- 涉及端口、TCP/UDP → 传输层
- 剩余业务数据、FTP/Telnet 等 → 应用层
七、分层通信范围总结
- 链路层:设备 ↔ 设备(硬件通信)
- 网络层:主机 ↔ 主机(跨局域网主机通信)
- 传输层:进程 ↔ 进程(同一主机内程序通信)
- 应用层:应用程序 ↔ 应用程序(业务数据交互)