GO_网络编程---网络协议

一、网络协议基础

1. 协议定义

网络协议是通信双方约定好的沟通规则,用于保障设备之间能够正常交互数据。

  • 原始协议:双方最初约定、未经过迭代完善的基础通信规则
  • 标准协议:在原始协议基础上持续迭代、补充、优化后,形成行业通用规范的协议

二、网络分层架构

分层核心优势:职责拆分、分工明确,解耦各层功能,单独修改某一层协议不影响其他层。

1. OSI 七层参考模型(标准理论模型)

从上至下:应用层 → 表示层 → 会话层 → 传输层 → 网络层 → 数据链路层 → 物理层

2. TCP/IP 四层实际架构(开发常用,Go 网络编程基于这套)

从上至下:应用层 → 传输层 → 网络层 → 链路层

补充说明:OSI 的物理层、数据链路层在 TCP/IP 中统一合并为链路层

三、各分层对应核心协议

每一层都配套专属协议,各司其职,快速区分技巧:

  1. 链路层(MAC 地址相关):ARP、RARPARP:IP 地址解析为 MAC 地址;RARP:MAC 反向解析 IP
  2. 网络层(IP 地址相关):IP、ICMP、IGMP
  3. 传输层(端口号相关):TCP、UDP(日常统称 TCP/IP 协议簇)
  4. 应用层(业务数据格式):FTP、Telnet、TFTP、NFS

四、三层地址核心概念(通信三要素)

1. 链路层:MAC 地址(物理地址)

  • 标识硬件网卡,全球唯一,固化在网卡硬件中
  • 通信范围:设备到设备,MAC 到 MAC 直连通信
  • MAC 获取方式:局域网广播查询(ARP 广播)
  • 仅靠链路层通信缺陷:无网段隔离,全网广播会产生广播风暴,网络拥堵

2. 网络层:IP 地址(逻辑地址)

为解决广播风暴问题引入 IP,对网络做网段划分:

  • 广播仅限制在当前局域网,不会跨网段扩散,规避广播风暴
  • 作用:定位互联网中哪一台主机
  • 数据包携带:源 IP、目的 IP

3. 传输层:端口号

一台主机可能同时运行多个网络程序,端口用来区分主机内不同进程:

  • 作用:定位目标主机上哪一个应用程序 / 进程
  • 数据包携带:源端口、目的端口
  • 端口约束:同一台操作系统内,一个端口同一时间只能被一个程序绑定;不同主机可使用相同端口

通信三要素总结(建立网络通信必备条件)

  1. 网卡 + MAC 地址:硬件标识,底层自动处理,无需开发者手动操作
  2. IP 地址(逻辑地址):定位目标主机,代码中需要手动指定
  3. 端口号:定位主机内目标程序,代码中需要手动指定

五、四层数据封装(组包)与解包流程

以发送数据 Hello World 为例:发送端自上而下逐层封装(加头部),接收端自下而上逐层解封装(拆头部),类似快递层层打包、拆快递。

1. 发送端组包过程(从上到下封装头部)

  1. 传输层 :添加传输层头部(源端口、目的端口)数据包:[源端口 | 目的端口 | Hello World]
  2. 网络层 :添加网络层头部(源 IP、目的 IP)数据包:[源IP | 目的IP | 源端口 | 目的端口 | Hello World]
  3. 链路层 :添加链路层头部(源 MAC、目的 MAC)完整数据包:[源MAC | 目的MAC | 源IP | 目的IP | 源端口 | 目的端口 | Hello World]

数据包通过网线 / 无线网络传输至目标主机网卡。

2. 接收端解包过程(从下到上拆解头部)

  1. 链路层:解析 MAC 头部,匹配本机 MAC,拆除链路层头,向上交付网络层
  2. 网络层:解析 IP 头部,匹配本机 IP,拆除 IP 头,向上交付传输层
  3. 传输层:解析端口头部,匹配程序监听端口,拆除端口头,将原始数据Hello World交付对应应用程序

六、分层快速判断口诀(复习速记)

  1. 涉及 MAC、ARP/RARP → 链路层
  2. 涉及 IP、ICMP、IGMP → 网络层
  3. 涉及端口、TCP/UDP → 传输层
  4. 剩余业务数据、FTP/Telnet 等 → 应用层

七、分层通信范围总结

  • 链路层:设备 ↔ 设备(硬件通信)
  • 网络层:主机 ↔ 主机(跨局域网主机通信)
  • 传输层:进程 ↔ 进程(同一主机内程序通信)
  • 应用层:应用程序 ↔ 应用程序(业务数据交互)
相关推荐
拾光Ծ1 小时前
【Linux网络】网络通信实战:UDP & TCP Socket编程实现Echo Server
linux·网络·网络协议·tcp/ip·udp·线程池
派葛穆1 小时前
s7-200smart-tcp/ip通讯
网络协议·tcp/ip
William.csj13 小时前
BaiduPCS-Go——下载百度网盘文件的工具
golang·baidupc
星恒讯工业路由器14 小时前
5G FWA技术演进与趋势
网络·5g·信息与通信·4g·5g fwa·3gpp规范·fwa趋势
凌云C14 小时前
5G 协议体系与交互流程
网络协议
星夜夏空9916 小时前
网络编程(1)
服务器·网络
上海云盾-小余17 小时前
中小站点防护避坑:低价高防服务存在的各类安全短板剖析
网络·爬虫·安全·ddos
kebeiovo17 小时前
游戏服务端开发:Actor模型详解(Go语言)
开发语言·后端·golang
X7x519 小时前
跨厂商路由引入(重发布)实战指南:华为、华三、思科的逻辑差异与配置避坑
网络协议·信息与通信·信号处理·实施路由引入