假设用户空间应用程序与某个非本地端点建立了 TCP 连接。在某些时候,网络突然中断(即在网络管理器中删除连接,拔下 wifi 加密狗,切断以太网电缆)
内核内部在概念上发生了什么来应对这种情况以及它如何向用户空间应用程序表现出来?
指导子问题:
- 涉及哪些超时?
- 内核会在尝试重新连接时尝试从用户空间隐藏连接丢失吗?
- 等待响应会导致用户空间应用程序不想正常退出吗?
假设用户空间应用程序与某个非本地端点建立了 TCP 连接。在某些时候,网络突然中断(即在网络管理器中删除连接,拔下 wifi 加密狗,切断以太网电缆)
内核内部在概念上发生了什么来应对这种情况以及它如何向用户空间应用程序表现出来?
指导子问题:
网络接口或其他基础设施出现故障并不一定意味着“连接丢失” - TCP 可能会在终止连接之前长时间尝试重新传输(取决于发生了什么 - 本地接口上的错误可能会立即导致错误,但路由器可能不会沿着路径的某处下降)。
这不取决于内核,它是由 TCP 协议决定的,“用户空间应用程序”很可能会等待很长时间才能收到套接字上的错误。
要具体回答每个子问题: