1. 首页
  2. 网络技术
  3. 网络基础
  4. TCP的函数-jpeg标准的中文文档pdf

TCP的函数-jpeg标准的中文文档pdf

上传者: 2024-07-19 13:02:36上传 PDF文件 27.27MB 热度 11次

第27章TCP的函数

27.1 引言

本章介绍多个TCP函数,它们为下两章进一步讨论TCP的输入打下了基础:

  • tcp_drain 是协议的资源耗尽处理函数,当内核的mbuf用完时被调用。实际上,不做任何处理。

  • tcp_drop 发送RST来丢弃连接。

  • tcp_close 执行正常的TCP连接关闭操作:发送FIN,并等待协议要求的4次报文交换以终止连接。卷1的18.2节讨论了连接关闭时双方需要交换的4个报文。

  • tcp_mss 处理收到的MSS选项,并在TCP发送自己的MSS选项时计算应填入的MSS值。

  • tcp_ctlinput 在收到对应于某个TCP报文段的ICMP差错时被调用,它接着调用tcp_notify处理ICMP差错。tcp_quench专门负责处理ICMP的源站抑制差错。

  • TCP_REASS 宏和 tcp_reass 函数管理连接重组队列中的报文段。重组队列处理收到的乱序报文段,某些报文段还可能互相重复。

  • tcp_trace 向内核的TCP调试循环缓存中添加记录(插口选项SO_DEBUG)。运行trpt程序可以打印缓存内容。

更多详情请参阅 TCP协议之连接过程 以及 网络协议TCP IP实验三TCP协议分析实验

27.2 tcp_drain函数

tcp_drain 是所有TCP函数中最简单的。它是协议的pr_drain函数,在内核的mbuf用完时,由m_reclaim调用。图10-32中,ip_drain丢弃其重组队列中的所有数据报分片,而UDP则不定义自己的资源耗尽处理函数。尽管TCP也占用mbuf—位于接收窗口内的乱序报文段—但Net/3实现的TCP并不丢弃这些mbuf,即使内核的mbuf已用完。相反,tcp_drain不做任何处理,假定收到的(但次序差错)的TCP报文段比IP分片重要。

想要更深入了解?请访问 TCP协议_格式连接性能

27.3 tcp_drop函数

tcp_drop 在整个系统中多次被调用,发送RST报文段以丢弃连接,并向应用进程返回差错。它与关闭连接(tcp_disconnect函数)不同,后者向对端发送FIN,并遵守TCP状态变迁图所规定的连接终止步骤。图27-1列出了调用tcp_drop的7种情况和相应的errno参数。图27-2给出了tcp_drop函数。

如果TCP收到了一个SYN,连接被同步,则必须向对端发送RST。tcp_drop 把状态设为CLOSED,并调用 tcp_output。从图24-16可知,CLOSED状态的tcp_outflags数组中包含RST标志。

如果errno等于ETIMEDOUT,且连接上曾收到过软差错(如EHOSTUNREACH),了解更多请查看 TCP网络连接TCP IP网络协议

下载地址
用户评论