《TCP/IP详解卷3:TCP事务协议、HTTP、NNTP和UNIX域协议》 —3.3 常规的T/TCP事务

举报
华章计算机 发表于 2019/11/19 21:17:51 2019/11/19
【摘要】 本节书摘来自华章计算机《TCP/IP详解卷3:TCP事务协议、HTTP、NNTP和UNIX域协议》一书中第3章,第3.3节,作者是[美]W. 理查德·史蒂文斯(W.Richard Stevens) ,胡谷雨 吴礼发 等译 谢希仁 校。

3.3   常规的T/TCP事务

下面我们还是在上面那对客户和服务器之间发起另一次事务。这一次客户在自己的单机高速缓存中取到该服务器的tao_ccsent值非0,于是就发出一个CC选项,其中下一个tcp_ccgen的值为2 (2表示这是客户端重新启动后TCP协议建立的第2个连接)。报文段交换的过程如图3-3所示。

image.png

图3-3   常规的T/TCP客户-服务器事务

这是一个常规的、仅包含3个报文段的最小规模T/TCP报文交换过程。图3-4显示了该次报文交换的时序图以及状态变迁过程。

客户发出包含SYN标志、数据和FIN标志的报文段后进入SYN_SENT*状态。服务器收到该报文段,且TAO测试成功时,进入半同步的ESTABLISHED*状态。其中的数据经处理后交给服务器进程。接着处理完报文段的FIN标志后服务器进入CLOSE_WAIT*状态。由于还未发出SYN报文段,因而服务器一直都处于加星状态。当服务器发出应答并在其中设置MSG_EOF标志后,服务器端随即转入LAST_ACK*状态。如图2-7所示,这个状态的服务器发出的报文段中包含了SYN、FIN和ACK标志。

image.png

图3-4   图3-3中报文段交换的时序图

客户收到第2个报文段后,其中对SYN的确认使客户端的连接状态转入FIN_WAIT_1状态。接着客户处理报文段中对所发FIN的确认,并进入FIN_WAIT_2状态。服务器的应答则送到客户进程。然后,客户处理该报文段中服务器所发的FIN后进入TIME_WAIT状态。在这个最终的状态,客户发出对服务器所发FIN的确认。

服务器收到第3个报文段后,其中对服务器所发SYN的确认使服务器进入LAST_ACK状态,对服务器所发FIN的确认则使服务器进入CLOSED状态。

这个例子清晰地显示了在T/TCP事务过程中收到一个报文段是怎样引起多次状态变迁的。它同时也显示了尚不处于ESTABLISHED状态的进程是如何接收数据的:客户进程半关闭(发出第1个报文段)与服务器的连接,处于FIN_WAIT_1状态下,但仍然能接收数据(第2个报文段)。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。