TCP协议的三次握手-4次挥手

 

 

 

TCP的连接建立是一个三次握手过程,目的是为了通信双方确认开始序号,以便后续通信的有序进行。主要步骤如下:
连接开始时,连接建立方(Client)发送SYN包,并包含了自己的初始序号a;
连接接受方(Server)收到SYN包以后会回复一个SYN+ACK包,其中包含了对上一个a包的回应信息ACK,回应的序号为下一个希望收到包的序号,即a+1,然后还包含了自己的初始序号b;
连接建立方(Client)收到回应的SYN包以后,回复一个ACK包做响应,其中包含了下一个希望收到包的序号即b+1。
 
 

 

 

TCP终止连接的四次挥手过程如下:
客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=a(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态;
服务器收到连接释放报文,发出确认报文,ACK=1,ack=a+1,并且带上自己的序列号seq=b,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态;
客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文;
服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=a+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=c,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认;
客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=c+1,而自己的序列号是seq=a+1,此时,客户端就进入了TIME-WAIT(时间等待)状态;
服务器只要收到了客户端发出的确认,立即进入CLOSED状态,就结束了这次的TCP连接。
 
 

 

posted @ 2021-11-09 17:09  Anshenwang  阅读(45)  评论(0编辑  收藏  举报