📄 一句话概括
协议栈上下分层:TCP/UDP 管收发、IP 管装包选路、网卡驱动和网卡管信号——套接字不占层,是挂在 TCP 层上的【端口面板】。
📝 本节和前面几节的关系
第一章从应用程序视角交了棒;本篇推开协议栈的门,看清里面站着的都是谁。
一、四个成员
从上到下:应用程序(写消息)→ TCP/UDP(管收发)→ IP(管装包与选路)→ 网卡驱动+网卡(管电信号)。 上一层只把活交给下一层,从不过问更下面的事。
二、套接字挂在哪
套接字不是第五层——它是 TCP 层对应用程序开放的 一排接口位:应用程序拿描述符插上去操作。
三、动手 Demo:协议栈的分层站位
一张站位表看清四层与面板:
for a, b, c in [('上','应用程序(浏览器)','写消息'),
('v','TCP / UDP','收发管理、可靠传输'),
('v','IP','装包、选路、ARP'),
('下','网卡驱动 + 网卡','变电信号')]:
print('%-3s %-18s %s' % (a, b, c))
实跑输出:
--------------------------------------------------------------------
协议栈的分层站位
--------------------------------------------------------------------
协议栈上下四层,各管一段:
层 成员 职责
-------------------------------------------------
上 应用程序(浏览器) 写消息
↓ TCP / UDP 收发管理、可靠传输
↓ IP 装包、选路、ARP
下 网卡驱动 + 网卡 变电信号(光信号)
-------------------------------------------------
套接字不占层——它是 TCP 层挂出来的一排【端口面板】,
应用程序插头插上去,四阶段的活都从面板走。
【分层】是网络世界的总原则——12 课的架构章讲过一遍, 这里第一次落到一台机器内部。
30 秒实验
- 说出一次 write 调用会先后经过哪四层。
- 想想为什么【可靠传输】放在 TCP 而不是 IP。
- 对照 12 课 1.6 的分层模型,找出对应关系。
常见误区
- 以为套接字是独立一层——它是 TCP 层的接口面板。
- 以为网卡也是【软件】——它是物理设备,驱动才管软件侧。
自测三问(点开对答案)
1. 协议栈从上到下四个成员是什么? —— 应用程序、TCP/UDP、IP、网卡驱动+网卡。 2. 套接字挂在哪一层? —— 不占层,挂 TCP 层上。 3. 上一层的规矩是什么? —— 只交活给下一层,不过问更下面。- ☐ 下一节(2.1.2 套接字的实体就是通信控制信息)
相关笔记
- 负责传输数据的网络分层(网络接口层与网际层) —— 分层总图
- 数据收发操作概览 —— 应用程序视角的四阶段
- 🔌 网络是怎样连接的 · 索引