闭卷画出socket生命周期与地址绑定的拓扑、报文状态机、公式与失败证据。
计算机网络与协议实验 · 小纸条
选一章打印。双面打印(按长边翻页)后沿虚线剪开,每张卡片正面题目、背面答案。
闭卷画出TCP消息边界与缓冲区的拓扑、报文状态机、公式与失败证据。
闭卷画出UDP请求应答与重试的拓扑、报文状态机、公式与失败证据。
闭卷画出阻塞、非阻塞与事件循环的拓扑、报文状态机、公式与失败证据。
闭卷画出并发、背压与资源上限的拓扑、报文状态机、公式与失败证据。
闭卷画出半关闭、超时与错误恢复的拓扑、报文状态机、公式与失败证据。
闭卷画出实验:本地socket协议服务器的拓扑、报文状态机、公式与失败证据。
机制:TCP只提供有序字节流,应用必须用长度、定界符或自描述编码恢复消息边界;实验:让客户端拆分发送两个长度前缀消息,服务端循环read_exact重组;边界:把一次recv等同一次send会在分段、合并和非阻塞模式下失败。
机制:服务端socket按创建、绑定、监听、接收连接、收发和关闭推进,客户端按连接、收发和关闭推进;实验:用localhost与系统分配端口运行最小回显,记录每个调用返回值;边界:一次recv不保证得到一条完整应用消息,send也可能只发送部分字节。
机制:阻塞线程等待单个操作,非阻塞socket配合select/selector处理多个就绪事件;实验:为100个连接画就绪队列与每连接状态,限制单轮处理预算避免饥饿;边界:可读只表示操作不会按常规阻塞,不保证消息完整或业务处理不会耗时。
机制:UDP保留数据报边界,应用需设计请求ID、超时、重试、去重和响应匹配;实验:实现带请求ID的本地UDP服务并注入一次丢包,客户端指数退避重试;边界:重试可能重复执行非幂等操作,服务端必须缓存请求结果或设计幂等键。
机制:shutdown可关闭单向字节流,超时限制等待,连接重置与正常EOF语义不同;实验:模拟客户端发送完请求后半关闭写方向,服务端读到EOF再返回结果;边界:捕获所有异常后继续不是恢复;必须知道请求是否已执行及重试是否安全。
机制:服务器必须限制连接、请求体、队列和处理时间,并把下游拥塞反馈给上游;实验:给固定工作池和有界队列注入过载,比较拒绝、排队和超时策略;边界:无限线程和无限队列只是把故障推迟到内存、句柄或尾延迟崩溃。
机制:使用socketpair或localhost实现长度前缀请求响应,循环收发并验证资源关闭;实验:完成真实Python socket代码,至少四组测试覆盖空消息、分片、多消息和超长拒绝;边界:不得依赖公网、固定端口或管理员权限,测试结束必须关闭全部描述符。