TCP三次握手,四次断开原则

TCP(传输控制协议)是TCP/IP协议族中最重要的协议之一,它提供了面向连接的、可靠的字节流服务。在TCP通信中,为了确保连接的建立和正确关闭,采用了三次握手和四次断开的规则。

TCP三次握手

TCP三次握手是建立TCP连接的过程,其目的是为了同步连接双方的序列号和确认号,并交换TCP窗口大小信息,以确保双方都能够正常通信。以下是三次握手的详细过程:

第一次握手:

客户端发送一个SYN(同步序列号)包给服务器,其中包含一个初始序列号(seq)和一个标志位SYN=1,表示请求建立连接。此时,客户端进入SYN_SENT状态。
客户端发送的SYN包中不能携带数据(但可以消耗一个序号),因为TCP规定SYN=1时不能携带数据,但要消耗一个序号。

第二次握手:

服务器收到客户端的SYN包后,会回复一个SYN+ACK(同步+确认)包给客户端。这个包中包含一个服务器的初始序列号(seq)和一个确认号(ack),ack的值为客户端初始序列号加1(ack=seq+1),以确认收到客户端的SYN包。同时,SYN=1,ACK=1,表示服务器同意建立连接。
服务器进入SYN_RCVD(同步收到)状态,等待客户端的确认。

第三次握手:

客户端收到服务器的SYN+ACK包后,会向服务器发送一个ACK包作为确认。这个包中ACK=1,确认号ack的值为服务器初始序列号加1(ack=seq+1),以确认收到服务器的SYN+ACK包。
客户端和服务器都进入ESTABLISHED(已建立连接)状态,此时TCP连接已经建立,双方可以开始进行数据传输。
TCP四次断开

TCP四次断开是关闭TCP连接的过程,其目的是为了确保双方都能够正确关闭连接,并释放系统资源。以下是四次断开的详细过程:

第一次挥手:

当客户端(或服务器)想要断开连接时,会发送一个FIN(结束)包给另一方,表示不再发送数据。此时,发送方进入FIN_WAIT_1(终止等待1)状态。

第二次挥手:

接收方收到FIN包后,会回复一个ACK包作为确认。这个包中ACK=1,确认号ack的值为收到的FIN包的序列号加1(ack=seq+1),表示已经收到对方的FIN包。此时,接收方进入CLOSE_WAIT(关闭等待)状态,但连接还处于半关闭状态。

第三次挥手:

当接收方也想要断开连接时(或者已经发送完所有数据),会发送一个FIN包给发送方,表示不再发送数据。此时,接收方进入LAST_ACK(最后确认)状态。

第四次挥手:

发送方收到接收方的FIN包后,会回复一个ACK包作为确认。这个包中ACK=1,确认号ack的值为收到的FIN包的序列号加1(ack=seq+1),表示已经收到对方的FIN包。此时,发送方进入TIME_WAIT(时间等待)状态,等待一段时间后(通常是2MSL,即两倍的报文段最大生存时间),再关闭连接。而接收方在收到这个ACK包后,就进入CLOSED(已关闭)状态,连接彻底关闭。

通过TCP的三次握手和四次断开规则,可以确保TCP连接的可靠性和正确性,避免数据丢失和连接错误等问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值