测验:半关闭后仍返回最后一条响应
如果 send 返回 3,而帧长度是 20 字节,意味着什么?
- 对端连同业务处理在内已经处理了全部 20 字节
- 剩余内容会自动传给下一次调用
- 只处理了 3 字节,因此还必须发送剩余内容
- 这表示协议标头有误
客户端调用 SHUT_WR 后,仍然可以做什么?
- 不再发送数据,但仍可接收响应
- 发送和接收都会立即被永久禁止
- 可以取消此前的全部发送
- 套接字会自动变为监听器
为什么在回显服务器中使用 if not payload 很危险?
- 因为 bytes 比较总是很慢
- 因为空正文会被自动加密
- 因为 TCP 禁止空帧
- 因为它会混淆有效的 b"" 和表示 EOF 的 None
验证时使用端口 0 有什么优点?
- 不会实际运行任何进程
- 操作系统会选择空闲端口,从而减少冲突
- 无需认证即可向整个互联网公开
- 会自动产生 TCP 超时
如果正常请求会关闭套接字,但异常时却将其遗留,会怎样?
- TCP 会立即回收所有资源
- 下一次 accept 会自动将其关闭
- 故障反复发生时,FD 可能不断累积
- 只会让日志文件变大,与连接无关
这个本地回显练习可以证明什么?
- 帧重组和 TCP 半关闭后的响应
- 认证和支付的严格单次处理
- 互联网丢包情况下的吞吐量保证
- 所有客户端的低延迟保证