三次握手和四次挥手

三次握手与四次挥手是TCP(Transmission Control Protocol)连接建立与断开过程中的两个核心概念,分别对应着TCP连接的建立阶段和关闭阶段。以下是这两个过程的详细步骤:


三次握手(TCP连接建立):


在客户端(Client)与服务器端(Server)之间建立一个可靠的TCP连接时,需要经过以下三个步骤的交互,确保双方数据发送与接收的准备就绪:


.第一次握手:

SYN(同步序列编号,Synchronize Sequence Numbers)请求
• 客户端主动发起连接请求,它向服务器端发送一个TCP报文段,该报文段的标志位(Flags)中的SYN位置为1,同时包含一个随机生成的序列号(seq=x),表示客户端的数据传输起始序列号。这标志着客户端进入SYN_SEND状态,等待服务器确认。


第二次握手:SYN+ACK确认


• 服务器端接收到客户端的SYN请求后,如果同意建立连接,则回应一个TCP报文段。这个报文段的标志位中,SYN和ACK(确认字符,Acknowledgement)均置为1,表示这是一个同步确认报文。报文中包含确认号(ack=x+1),表示已收到并确认客户端的序列号x,并且包含服务器端自己的初始序列号(seq=y)。此时服务器端进入SYN_RECV状态。


第三次握手:ACK确认


• 客户端收到服务器端的SYN+ACK报文后,再次发送一个TCP报文段作为确认。这个报文段的标志位中只有ACK置为1,确认号为ack=y+1,表示已收到服务器端的序列号y。同时,报文中携带的数据序列号seq=x+1,表示接下来将从这个序列号开始发送数据。服务器端收到这个报文后,确认连接建立成功,双方进入ESTABLISHED状态,可以开始传输数据。


四次挥手(TCP连接断开):


当通信双方中的一方想要终止TCP连接时,需要通过以下四个步骤来确保数据传输的完整性以及双方对连接终止达成一致:


 第一次挥手:FIN(结束,Finish)请求


• 主动关闭方(假设为客户端)发送一个FIN标志置为1的TCP报文段,表示它已经没有数据要发送了,请求关闭这一方向上的数据传输。客户端进入FIN_WAIT_1状态。


第二次挥手:ACK确认


• 服务器端收到客户端的FIN请求后,确认连接即将关闭,向客户端回送一个ACK标志置为1的报文段,确认号为ack=x+1(x为客户端FIN报文的序列号)。服务器端进入CLOSE_WAIT状态,客户端收到这个确认后进入FIN_WAIT_2状态,等待服务器端关闭其数据传输。


第三次挥手:FIN请求


• 服务器端完成所有数据发送或准备好关闭连接后,向客户端发送一个FIN标志置为1的报文段,表明服务器端也无数据发送,请求关闭连接。服务器端进入LAST_ACK状态。


第四次挥手:ACK确认


• 客户端收到服务器端的FIN请求后,发送一个ACK标志置为1的报文段作为确认,确认号为ack=y+1(y为服务器端FIN报文的序列号)。客户端进入TIME_WAIT状态,等待一段时间确保服务器端收到确认报文并正常关闭连接。服务器端收到这个确认后关闭连接,进入CLOSED状态。客户端在等待期结束后如果没有收到异常情况,也会关闭连接,进入CLOSED状态。


总结来说,三次握手保证了双方都能确认对方的接收和发送能力,建立起可靠的连接;而四次挥手则确保了双方都能有序地结束数据传输,最终安全地关闭连接。这是TCP协议为了保证数据传输的可靠性和顺序性所设计的重要机制。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值