菁英职教网 I T IT技术

TCP连接的建立与终止

发布时间: 2022-04-27 20:51:01
TCP连接的建立与终止,TCP连接的建立采用三次握手的方式,如图1所示。

图1 TCP连接的建立
首先,需要建立连接的双方(如客户/服务器)的一方的接收端(服务器)能够被动地等待,另一方的请求端(客户)发送一个初始(SYN)的数据包到接收端,以指明其打算连接到的服务器的IP地址和端口号,以及双方建立连接的初始序列号;并设置其能够接收的TCP段的上限和一些可选项(如口令)。

接着,接收端会检查请求端发送来的数据包,看是否包含以上所提到的内容。如果没有上述内容,则会发送一个应答数据包,以指明拒绝该连接的建立。如果包含必需的内容且某个应用程序正在对所含的端口进行侦听,接收端会发回包含接收端初始序列号的SYN数据包作为应答。同时将确认序列号设置为“请求端发送来的初始序列号+1”,从而对请求端的SYN数据包进行确认。

最后,请求端必须对接收端的SYN数据包进行确认,即将确认序号设置为“接收端的初始序列号加1”,以对服务器的SYN数据包进行确认。

通过以上步骤,TCP建立过程中的请求端和接收端分别向对方发送了用于同步的SYN数据包,并且分别为对方的SYN数据包进行了确认。双方都确认可以与对方进行正常的数据连接,从而在双方之间的TCP会话被建立,数据可以得到可靠的传输。

TCP建立一个连接需要三次握手,而终止一个连接需要经过四次握手,如图2所示(省略序列号说明)。

图2 TCP连接的终止

TCP连接终止的四次握手是由于TCP工作方式中的半关闭造成的。因为一个TCP连接是全双工的(即数据在两个方向上能同时向对方传递),因此在数据传输的每个方向必须单独地进行关闭。这种原则就是当一方完成它的数据发送任务后发送一个FIN来终止这个方向的连接。


当一端收到一个FIN时,它必须通知应用层中相应的应用程序:另一端已经终止了那个方向的数据传送。发送FIN通常是应用层进行关闭的结果。收到一个FIN信息只意味着在这一方向上没有数据流动。一个TCP连接在收到一个FIN后仍能发送数据。而这对于利用半关闭的应用来说是可能的,尽管在实际应用中只有很少的TCP应用程序这样做。

首先进行关闭的一方(即发送第一个FIN的)将执行主动关闭,而另一方(收到这个FIN的)执行被动关闭。通常一方完成主动关闭而另一方完成被动关闭。

发送FIN数据包的一方发起终止连接,它由客户端应用程序在关闭连接时发出。它将导致TCP客户端发送一个FIN,用来关闭从客户到服务器的数据传送。

当服务器收到这个FIN时,它发回一个ACK,确认序号为收到的序号加1的数据包。和SYN一样,一个FIN将占用一个序号。同时TCP服务器还向应用程序传送一个文件结束符。

接着这个服务器程序就关闭它的连接,导致它向TCP请求端发送一个FIN数据包,客户必须发回一个确认,并将确认序号设置为收到序号加1。

至此,终止连接过程结束,连接完全被终止。
温馨提示:
本文【TCP连接的建立与终止】由作者职教君提供。该文观点仅代表作者本人,菁英职教网系信息发布平台,仅提供信息存储空间服务,若存在侵权问题,请及时联系管理员或作者进行删除。
我们采用的作品包括内容和图片部分来源于网络用户投稿,我们不确定投稿用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的权利,请联系我站将及时删除。
内容侵权、违法和不良信息举报
Copyright @ 2024 菁英职教网 All Rights Reserved 版权所有. 七品教育网站地图xml 留求艺网站地图xml 湘ICP备17021685号