码迷,mamicode.com
首页 > 其他好文 > 详细

网络编程-TCP连接的建立与终止

时间:2020-10-06 21:14:22      阅读:27      评论:0      收藏:0      [点我收藏+]

标签:height   ref   数据   端口   href   book   报文   全双工   三次握手   

TCP是一个面向连接的协议。无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。

技术图片

1.建立连接

  1. 请求端(通常称为客户)发送一个 SYN 段指明客户打算连接的服务器的端口,以及初始序号( ISN ,在这个例子中为1415531521)。这个 SYN 段为报文段1。
  2. 服务器发回包含服务器的初始序号的 SYN 报文段(报文段2)作为应答。同时,将确认序号设置为客户的 ISN 加1以对客户的 SYN 报文段进行确认。一个 SYN 将占用一个序号
  3. 客户必须将确认序号设置为服务器的 ISN 加1以对服务器的 SYN 报文段进行确认(报文段3)。

这三个报文段完成连接的建立。这个过程也称为 三次握手(three-way handshake)

2.连接终止

建立一个连接需要三次握手,而终止一个连接要经过4次握手。这由TCP的半关闭(halfclose)造成的。既然一个TCP连接是全双工(即数据在两个方向上能同时传递),因此每个方向必须单独地进行关闭。这原则就是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向连接。当一端收到一个 FIN,它必须通知应用层另一端已经终止了那个方向的数据传送。发送 FIN 通常是应用层进行关闭的结果。

当服务器收到这个 FIN ,它发回一个 ACK,确认序号为收到的序号加1(报文段5)。和SYN一样,一个 FIN 将占用一个序号。同时TCP服务器还向应用程序(即丢弃服务器)传送一个文件结束符。接着这个服务器程序就关闭它的连接,导致它的TCP端发送一个 FIN (报文段6),客户必须发回一个确认,并将确认序号设置为收到序号加1(报文段7)。

3.TCP状态转换图

技术图片

参考资料

1.TCP/IP详解 卷1:协议 - 第18章 TCP连接的建立与终止

2.Wireshark 显示TCP的绝对序列号

3.单工通信、半双工通信和全双工通信之间有什么区别

网络编程-TCP连接的建立与终止

标签:height   ref   数据   端口   href   book   报文   全双工   三次握手   

原文地址:https://www.cnblogs.com/maxzuo/p/13773650.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!