GO_网络编程---网络协议 一、网络协议基础1. 协议定义网络协议是通信双方约定好的沟通规则用于保障设备之间能够正常交互数据。原始协议双方最初约定、未经过迭代完善的基础通信规则标准协议在原始协议基础上持续迭代、补充、优化后形成行业通用规范的协议二、网络分层架构分层核心优势职责拆分、分工明确解耦各层功能单独修改某一层协议不影响其他层。1. OSI 七层参考模型标准理论模型从上至下应用层 → 表示层 → 会话层 → 传输层 → 网络层 → 数据链路层 → 物理层2. TCP/IP 四层实际架构开发常用Go 网络编程基于这套从上至下应用层 → 传输层 → 网络层 → 链路层补充说明OSI 的物理层、数据链路层在 TCP/IP 中统一合并为链路层三、各分层对应核心协议每一层都配套专属协议各司其职快速区分技巧链路层MAC 地址相关ARP、RARPARPIP 地址解析为 MAC 地址RARPMAC 反向解析 IP网络层IP 地址相关IP、ICMP、IGMP传输层端口号相关TCP、UDP日常统称 TCP/IP 协议簇应用层业务数据格式FTP、Telnet、TFTP、NFS四、三层地址核心概念通信三要素1. 链路层MAC 地址物理地址标识硬件网卡全球唯一固化在网卡硬件中通信范围设备到设备MAC 到 MAC 直连通信MAC 获取方式局域网广播查询ARP 广播仅靠链路层通信缺陷无网段隔离全网广播会产生广播风暴网络拥堵2. 网络层IP 地址逻辑地址为解决广播风暴问题引入 IP对网络做网段划分广播仅限制在当前局域网不会跨网段扩散规避广播风暴作用定位互联网中哪一台主机数据包携带源 IP、目的 IP3. 传输层端口号一台主机可能同时运行多个网络程序端口用来区分主机内不同进程作用定位目标主机上哪一个应用程序 / 进程数据包携带源端口、目的端口端口约束同一台操作系统内一个端口同一时间只能被一个程序绑定不同主机可使用相同端口通信三要素总结建立网络通信必备条件网卡 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 等 → 应用层七、分层通信范围总结链路层设备 ↔ 设备硬件通信网络层主机 ↔ 主机跨局域网主机通信传输层进程 ↔ 进程同一主机内程序通信应用层应用程序 ↔ 应用程序业务数据交互