📄 一句话概括
服务器收包的前半程与客户端完全一样:PHY 还原信号、FCS 验伤、MAC 核对、中断通知 CPU、驱动上交协议栈——规矩不分主客。
📝 本节和前面几节的关系
6.2 开始走进服务器内部;先看最底层:包怎么进来。
一、五步收包
电(光)信号 -> PHY 还原成数字信号; FCS 校验,坏了就丢; MAC 地址核对,不是自己的丢(广播除外); 中断通知 CPU:有包裹; 网卡驱动把包上交协议栈。
二、与客户端无差别
2.5.10 讲的接收四道关,在这里一步不少—— 网卡不关心主人是客户端还是服务器。
三、动手 Demo:网卡把信号变回数字
服务器收包,前半程与 2.5.10 完全一样:
for s in ['电(光)信号 -> 还原成数字信号(PHY)',
-> 校验 FCS(验伤)',
-> 核对 MAC(是不是给我的)',
-> **中断**通知 CPU 有包裹',
-> 网卡驱动交给协议栈']:
print(s)
实跑输出:
--------------------------------------------------------------------
网卡把信号变回数字
--------------------------------------------------------------------
服务器收包,前半程与 2.5.10 完全一样:
电(光)信号 -> 还原成数字信号(PHY)
-> 校验 FCS(验伤)
-> 核对 MAC(是不是给我的)
-> **中断**通知 CPU 有包裹
-> 网卡驱动交给协议栈
服务器与客户端的网卡,干的活一模一样。
服务器的网卡通常更猛(万兆、多队列), 但处理流程与家用网卡毫无二致。
30 秒实验
- 对照 2.5.10 把四道关默写一遍。
- 查查什么是网卡多队列、为什么服务器需要。
- 解释中断是什么、为什么比轮询好。
常见误区
- 以为服务器收包流程特殊——与客户端完全一致。
- 以为坏包也会上交——FCS 不过关就地丢弃。
自测三问(点开对答案)
1. 收包五步的第一步? —— PHY 把信号还原成数字信息。 2. FCS 不过关怎么办? —— 直接丢弃。 3. CPU 怎么知道有包? —— 网卡发中断通知。- ☐ 下一节(6.2.2 IP 模块的接收操作)
相关笔记
- 接收返回包 — 客户端侧的同一流程
- 将IP包转换成电或光信号发送出去 — 发送方向的镜像
- 🔌 网络是怎样连接的 · 索引