📄 一句话概括
连接的实体=双方控制信息里互写对方地址——管道是抽象说法,拔掉网线管道也不存在,断开的本质是记录作废。
📝 本节和前面几节的关系
2.1 节建好了本端口;本篇回答【连接】到底连了什么。
一、互相记住
客户端套接字写进服务器 IP+端口; 服务器套接字写进客户端 IP+端口。 两边记录对上了,管道就【通】了。
二、抽象的价值
对应用程序而言管道像真的存在——write 进去对面 read 出来。 抽象的目的是把【分片、对账、重发】全部藏起来。
三、动手 Demo:连接到底是什么
两边的记录单:
for who, rem in [('客户端套接字','服务器 IP + 端口'),
('服务器套接字','客户端 IP + 端口')]:
print('%-10s 记住: %s' % (who, rem))
实跑输出:
--------------------------------------------------------------------
连接到底是什么
--------------------------------------------------------------------
管道是抽象说法,实体是【双方都记住了对方】:
谁 记住了什么
----------------------------------
客户端套接字 服务器 IP + 端口
服务器套接字 客户端 IP + 端口
----------------------------------
所以连接=在两块控制信息里互写地址。
拔掉网线管道【并不存在】——存在的只是记录,
断开的本质是把记录作废。
这个【互写记录】的模型也解释了为什么服务器最大连接数 受内存限制——每条连接都要一块控制信息。
30 秒实验
- 断网后再 read,看报错出现在哪一步。
- 算算一台服务器 4GB 内存理论上能挂多少条连接(粗算)。
- 想想为什么说【抽象是分层的最大福利】。
常见误区
- 以为管道是真实线路——它是两边记录构成的概念。
- 以为连接断开就是【拔线】——是记录作废。
自测三问(点开对答案)
1. 连接的实体是什么? —— 双方控制信息互写对方地址。 2. 管道说法的好处是什么? —— 把复杂性藏在抽象后面。 3. 服务器连接数受什么限制? —— 内存(每条连接一块控制信息)。- ☐ 下一节(2.2.2 负责保存控制信息的头部)
相关笔记
- 连接操作的实际过程 —— 报文怎么走
- 套接字的实体就是通信控制信息 —— 记录的载体
- 🔌 网络是怎样连接的 · 索引