卷2 第27章 TCP的函数
27.1 引言
本章介绍TCP的辅助函数。
27.2 tcp_drain函数
- 内存不足时调用
- 不丢弃数据(与IP不同)
27.3 tcp_drop函数
- 发送RST丢弃连接
- 返回差错码
调用场景
| 场景 | 差错码 |
|---|---|
| 连接请求拒绝 | ECONNREFUSED |
| 收到RST | ECONNRESET |
| 重传超时 | ETIMEDOUT |
| 用户中止 | ECONNABORTED |
27.4 tcp_close函数
更新路由度量
- 判断是否发送足够数据
- 更新RTT和偏差
- 更新慢启动门限
释放资源
- 丢弃重组队列
- 释放首部模板
- 释放TCP控制块
- 释放Internet PCB
27.5 tcp_mss函数
计算MSS
- 获取路由
- 使用路由MTU
- 减去IP+TCP首部
- 对齐到MCLBYTES
- 非本地地址限制为512
初始化RT T估计器
- 从路由表恢复度量
27.6 tcp_ctlinput函数
- 处理ICMP差错
- 源站抑制 → tcp_quench
27.7 tcp_notify函数
- 处理软差错
- 记录到t_softerror
27.8 tcp_quench函数
- 源站抑制时调用
- cwnd = 1段
27.9 TCP_REASS宏和tcp_reass函数
重组队列
- 双向循环链表
- 使用IP首部字段存储指针
tcp_reass函数
- 处理SYN中数据
- 查找插入位置
- 删除重复数据
- 插入队列
- 提交连续数据
27.10 tcp_trace函数
- 调试支持
- 保存到环形缓存
- trpt程序读取
27.11 小结
TCP辅助函数处理连接关闭、MSS计算、ICMP差错和重组队列。