从零吃透网络三层!交换机、IP、TCP/UDP 保姆级拆解
你每天刷短视频、发微信、逛淘宝时,有没有好奇过:手机里的数据是怎么 “跑” 到互联网另一端的?其实这背后藏着一套超有逻辑的 “快递系统”—— 数据链路层(交换机)打包,网络层(IP)规划路线,传输层(TCP/UDP)负责送货。这篇文章专门给 0 基础的朋友写,不用怕听不懂!我会用 “快递”“打电话” 这种生活化比喻,搭配专业知识点,再放满表格和代码,让你看完就能搞懂网络最核心的三层逻辑。传输层。
目录
1.2 以太网进化史:从 “自行车” 到 “火箭” 的速度飞跃
前言:为什么你该懂点网络三层?
你每天刷短视频、发微信、逛淘宝时,有没有好奇过:手机里的数据是怎么 “跑” 到互联网另一端的?其实这背后藏着一套超有逻辑的 “快递系统”—— 数据链路层(交换机)打包,网络层(IP)规划路线,传输层(TCP/UDP)负责送货。
这篇文章专门给 0 基础的朋友写,不用怕听不懂!我会用 “快递”“打电话” 这种生活化比喻,搭配专业知识点,再放满表格和代码,让你看完就能搞懂网络最核心的三层逻辑。
一、数据链路层:交换机是局域网的 “智能快递站”
1.1 先搞懂:数据链路层到底干啥?
如果把网络比作快递公司,数据链路层就是 “打包 + 本地配送部门”,核心工作就 4 件事:
-
建连接:插上网线,设备之间就能 “通邮”(类似开通小区配送路线)
-
装帧:给网络层的 “数据包” 套上 “帧” 的外壳(像给文件装快递盒)
-
查错误:用校验码检查数据有没有损坏(快递员核对包裹是否破了)
-
控流量:别让发送方发太快,避免接收方 “爆仓”(快递站忙时暂停收件)
即:
1.建立、维护、拆除数据链路
2.包装、传输、同步帧
3.帧的差错恢复 采用重传法
4.流量控制 确保传输设备稳定,双方传输速率匹配
1.2 以太网进化史:从 “自行车” 到 “火箭” 的速度飞跃
我们现在用的局域网基本都是以太网,它的速度几十年翻了百万倍,看表格更直观:
| 时间节点 | 标准 / 版本 | 传输速率 | 生活化类比 |
|---|---|---|---|
| 1973 年 | 实验性以太网(施乐) | 2.94 Mbps | 自行车送货 |
| 1980 年 | DIX Ethernet V1 | 10 Mbps | 摩托车送货 |
| 1983 年 | IEEE 802.3 | 10 Mbps | 面包车送货 |
| 1995 年 | IEEE 802.3u(快速以太网) | 100 Mbps | 小轿车送货 |
| 1998 年 | IEEE 802.3z/ab(千兆以太网) | 1000 Mbps | 高铁送货 |
| 2000 年后 | 万兆 / 40G/100G 以太网 | 10+ Gbps | 火箭送货 |
1.3 MAC 地址:网卡的 “全球唯一身份证”
每块网卡(手机、电脑里都有)出厂时都自带一个MAC 地址,格式长这样:00-D0-09-A1-D7-B7,记住 3 个关键知识点:
-
总长 48 位二进制,分成 6 段用十六进制表示(人类好读)
-
前 24 位:厂商编号(比如华为、Intel 向 IEEE 申请的专属号)
-
后 24 位:网卡序列号(同一厂商生产的网卡,序列号绝不重复)
-
第 8 位是 “身份标识”:0 = 单播地址(给单个设备),1 = 组播地址(给一组设备)
1.4 以太网帧格式:数据的 “快递包装说明书”
一个完整的以太网帧,就像贴满标签的快递盒,结构固定:
[前导码(7字节)] + [帧起始定界符(1字节)] + [目标MAC(6字节)] + [源MAC(6字节)] + [类型(2字节)] + [数据(46-1500字节)] + [FCS(4字节)]
各部分作用用表格拆解更清楚:
| 字段 | 长度 | 核心作用 | 生活化比喻 |
|---|---|---|---|
| 前导码 | 7 字节 | 让接收方时钟同步 | 快递员按门铃:“准备收快递啦!” |
| 帧起始定界符 | 1 字节 | 标记帧的开始 | 快递员敲门:“快递到了!” |
| 目标 MAC | 6 字节 | 数据要发给谁 | 收件人地址 |
| 源 MAC | 6 字节 | 数据是谁发的 | 寄件人地址 |
| 类型 | 2 字节 | 标明上层协议(0800H=IP,0806H=ARP) | 快递单上写 “文件”“电子产品” |
| 数据 | 46-1500 字节 | 真正要传的内容(网页 / 视频等) | 快递里的货物 |
| FCS | 4 字节 | 32 位 CRC 校验,检查数据是否损坏 | 快递盒上的防伪码,核对是否被拆过 |
1.5 交换机工作原理:
-
学习源 MAC 地址:当收到设备(如 A 机)发送的帧时,会在 MAC 地址表中记录 “源 MAC 地址(A 的 MAC)- 接收端口” 的对应关系(生存时间约 300 秒),而非仅 “接受” 地址;
-
查找并转发目标 MAC 地址:若表中存在目标设备(如 B 机)的 MAC - 端口记录,直接单播转发至对应端口;若不存在,则从除接收端口外的所有端口泛洪(广播)该帧,并非默认先广播;
-
处理回应帧以完善记录:”当目标设备(B 机)收到广播帧后,会向源设备(A 机)发送单播回应帧,交换机通过该回应帧学习 “B 的 MAC - 对应端口” 的关系,并直接转发回应帧给 A 机,而非 B 机主动 “把目标 MAC 发给交换机”;
-
后续高效单播通信:A 机再次向 B 机发送数据时,因 MAC 地址表中已存在双方的记录,交换机直接单播转发,不再广播,且交换机对广播帧 / 组播帧会无条件泛洪,若同一 MAC 从新端口接入则更新地址表记录,同时部分交换机支持端口安全限制 MAC 学习数量以防攻击。
交换机 3 种工作模式(别搞混!)
-
单工:只能发或收,不能同时(像对讲机,按住说话就听不见)
-
半双工:能发也能收,但不能同时(像步话机,你说完我再说)
-
全双工:能同时收发(像打电话,边说边听,效率最高)
二、网络层:IP 协议是互联网的 “导航系统”
2.1 网络层的核心任务:给数据 “规划跨城路线”
如果说数据链路层负责 “小区内配送”,那网络层就是 “跨城物流调度中心”,主要干 3 件大事:
-
编 IP 地址:给全网设备分配唯一 “逻辑门牌号”(比如 192.168.1.1)
-
连异构网络:让数据在 WiFi、5G、光纤等不同网络间穿梭(快递既能走陆运也能走空运)
-
选最优路线:用路由算法(如 OSPF、BGP)选最快路径(像导航避开堵车路段)
总结成一句话就是,路由器通过路由表选择最佳方式到达对端。
2.2 IP 数据包格式:带导航信息的 “快递单”
IP 数据包分 “头部”(导航信息)和 “数据”(货物),头部字段超关键,看表格:
| 字段 | 长度 | 核心作用 | 关键说明 |
|---|---|---|---|
| 版本 | 4 位 | 标识 IPv4/IPv6 | 我们常用的是 IPv4(值为 4) |
| 首部长度 | 4 位 | IP 头的长度 | 单位是 4 字节,最小 20 字节(无可选字段时) |
| TTL | 8 位 | 存活时间 | 每过一个路由器减 1,到 0 就丢弃(防止数据无限转圈),最多只能15调 |
| 协议号 | 8 位 | 标明上层协议 | 6=TCP,17=UDP(告诉 IP 包该交给谁处理) |
| 源 IP / 目标 IP | 32 位(IPv4) | 收发方地址 | 类似 “寄件人城市地址” 和 “收件人城市地址” |
| 标识符 / 标志 / 段偏移 | 32 位 | 分片重组 | 大文件拆成小包传输,靠这 3 个字段拼回去(像家具拆成零件运,到了再装) |
2.3 ICMP 协议:网络世界的 “故障报警器”
ICMP(互联网控制报文协议)是网络层的 “检修员”,专门处理错误和诊断,记住 2 个核心场景:
-
报错:数据丢了 / 目标不可达时,返回错误信息(像快递员打电话说 “地址错了,送不到”)
-
诊断:支持 ping、traceroute 命令(检查网络通不通、看数据走了哪些路由器)
常用 ping 命令(实操代码!)
# Windows系统
ping www.baidu.com # 默认发4个包,检查连通性
ping www.baidu.com -t # 持续ping,按Ctrl+C停止
ping www.baidu.com -l 1000 # 发1000字节的大包,测试大数据传输
# Linux/macOS系统
ping www.baidu.com -c 5 # 只发5个包
ping www.baidu.com -s 1000 # 发1000字节的包(注意Linux参数是-s)
tracert命令:
在命令行中输入“tracert ”并在后面加入一个IP地址,可以查询从本机到该IP地址所在的电脑要经过的路由器及其IP地址
2.4 ARP 协议:IP 和 MAC 的 “翻译官”
IP 地址是 “逻辑门牌号”(比如北京市朝阳区 XX 路),MAC 地址是 “物理门牌号”(比如 XX 小区 3 号楼 1 单元 501),ARP 协议就是把 “逻辑地址” 翻译成 “物理地址” 的工具。
ARP 工作流程(以 PC1 给 PC2 发数据为例)
-
PC1 先查自己的 “ARP 缓存表”:有没有 PC2 的 IP→MAC 映射?
-
没有的话,PC1 广播 ARP 请求:“谁是 192.168.1.2?快告诉我你的 MAC 地址!”(目标 MAC 是 FF-FF-FF-FF-FF-FF,全网广播)
-
所有设备收到请求,只有 PC2 回应:“我是 192.168.1.2,我的 MAC 是 00-11-22-33-44-55”(单播回应,不广播)
-
PC1 把 PC2 的 IP-MAC 映射存入 ARP 缓存表(默认保存 120 秒,过期重新查询)
ARP 相关命令(实操必看)
# 查看ARP缓存表(Windows/Linux通用)
arp -a
# 删除指定IP的ARP记录
arp -d 192.168.1.1
# 绑定静态ARP(防止被欺骗,需管理员权限)
arp -s 192.168.1.1 00-11-22-33-44-55
# Windows下用netsh绑定(更稳定)
netsh -c "i i" add neighbors 19 "192.168.1.1" "00-11-22-33-44-55"
# 注:19是网络接口序号,用netsh -c i i show in查看
2.5 ARP 欺骗:黑客的 “冒牌快递员” 操作
ARP 协议有个漏洞:不验证回应的真实性,黑客就靠这个搞事,比如 “网关欺骗”:
-
黑客(PC2)给你的电脑(PC1)发假 ARP 回应:“我是网关,我的 MAC 是 PC2 的 MAC”
-
同时给网关发假回应:“我是 PC1,我的 MAC 是 PC2 的 MAC”
-
结果:PC1 和网关的所有数据都要经过黑客设备(黑客成了 “中间人”,能偷数据、改数据)
防御方法(3 招搞定)
-
绑静态 ARP:手动在 PC 和网关上设置 IP-MAC 对应关系(黑客改不了)
-
开 ARP 防护:路由器 / 交换机开启 ARP 欺骗防御功能
-
用加密通信:重要数据走 HTTPS/SSH,即使被截胡也看不懂
三、传输层:TCP/UDP 是数据的 “两种快递服务”
3.1 TCP vs UDP:可靠和快速怎么选?
传输层有两种核心协议,就像两种快递服务,各有优缺点,看表格对比:
| 对比维度 | TCP(顺丰到付) | UDP(普通平邮) |
|---|---|---|
| 连接方式 | 面向连接(需三次握手) | 无连接(直接发) |
| 可靠性 | 可靠(丢包重传、按序到达) | 不可靠(丢了不补) |
| 速度 | 较慢(有确认、重传开销) | 较快(无额外开销) |
| 流量控制 | 有(根据接收方能力调整速度) | 无(不管接收方能不能处理) |
| 适用场景 | 网页、文件传输、邮件(要稳) | 视频通话、游戏、DNS(要快) |
3.2 TCP 报文段:带 “签收功能” 的精密包裹
TCP 报文段的头部超复杂,但核心字段就几个,记住它们的作用:
[源端口(16位)] + [目标端口(16位)] + [序号(32位)] + [确认号(32位)]
[首部长度(4位)] + [控制位(6位)] + [窗口大小(16位)] + [校验和(16位)]
[紧急指针(16位)] + [选项(可变)] + [数据]
关键字段拆解(重点记!)
-
端口号:源端口(你的应用,如微信的 54321)、目标端口(对方应用,如微信服务器的 443)→ 类似 “寄件人电话” 和 “收件人电话”
-
序号 / 确认号:序号给数据字节编号(防止乱序),确认号告诉对方 “我收到了多少数据”(比如确认号 = 150,就是 “我收到 1-149 字节,下次发 150 开始的”)
-
控制位(6 个关键标志,记口诀):
URG 急(加急)、ACK 认(确认)、PSH 催(尽快处理)、RST 断(重置连接)、SYN 连(请求连接)、FIN 完(结束连接) -
窗口大小:告诉对方 “我还能接多少数据”(接收缓冲区剩余空间)→ 类似 “我家快递柜还能放 5 个包”
3.3 TCP 三次握手:建立连接的 “礼貌流程”
TCP 建立连接必须走 “三次握手”,就像打电话:
-
客户端 → 服务器:“喂,在吗?”(SYN=1,Seq=x,x 是随机数)
-
服务器 → 客户端:“在的,你能听到吗?”(SYN=1,ACK=1,Seq=y,Ack=x+1)
-
客户端 → 服务器:“能听到,开始传数据吧!”(ACK=1,Seq=x+1,Ack=y+1)
为什么要三次?因为要确认 “客户端能发、服务器能收 + 服务器能发、客户端能收”,两次握手只能确认一方,不安全。
3.4 TCP 四次挥手:断开连接的 “告别仪式”
TCP 断开连接要 “四次挥手”,因为可能有一方还有数据没发完:
-
A → B:“我没数据要发了,想断开”(FIN=1,ACK=1)
-
B → A:“好的,我知道了,等我发完剩下的”(ACK=1)
-
B → A:“我也没数据了,断开吧”(FIN=1,ACK=1)
-
A → B:“好的,拜拜”(ACK=1)
小知识:
四次的原因:B 可能还有数据没发,要先确认 “收到断开请求”,发完数据再发 “我也要断开” 的请求
A 最后会进入 TIME_WAIT 状态(等 2MSL):防止 B 没收到最后一次 ACK,超时重传时 A 还能回应(避免 B 一直等)
3.5 常见端口号:应用程序的 “门牌号”
每个网络应用都有专属端口号,记住常用的:
| 协议 | 端口号 | 对应应用 | 用途 |
|---|---|---|---|
| TCP | 80 | HTTP | 普通网页访问 |
| TCP | 443 | HTTPS | 加密网页访问(安全) |
| TCP | 21 | FTP | 文件传输 |
| TCP | 25 | SMTP | 发送邮件 |
| TCP | 3306 | MySQL | 数据库连接 |
| UDP | 53 | DNS | 域名解析(把www.baidu.com转成 IP) |
| UDP | 67 | DHCP | 自动分配 IP 地址 |
| UDP | 123 | NTP | 网络时间同步 |
最后用 “发微信” 把三层逻辑串起来,帮你巩固:
-
传输层:微信用 TCP 协议包装消息,加上 “你的手机端口(如 54321)” 和 “微信服务器端口(443)”,确保消息不丢
-
网络层:给 TCP 包套 IP 头,加上 “你的 IP(如 192.168.1.100)” 和 “微信服务器 IP(如 180.101.49.12)”,路由器用路由表选最快路径
-
数据链路层:给 IP 包套以太网帧,加上 “你的 MAC” 和 “路由器 MAC”,交换机根据 MAC 地址把帧转发到路由器
-
数据跨越多个路由器,重复 “网络层选路 + 数据链路层转发”,最终到达微信服务器,再反向传给朋友的手机
其实网络三层的逻辑很简单:数据链路层管 “本地配送”,网络层管 “跨城导航”,传输层管 “送货服务质量”。最后,喜欢的点赞收藏呦~
更多推荐

所有评论(0)