TCP协议的三次握手和四次挥手
1.三次握手
TCP建立链接的过程为三次握手:TCP协议是面向连接的,就是说每次发送数据之前都要和对方建立一条可靠的链接,这个建立连接的过程分为3个步骤,就叫做三次握手。
①当客户端向服务器发送请求连接的报文时:
seq序列号=x(x为随机)
SYN=1(表示发送链接请求)
②服务器端收到客户端发来的请求报文后,同意建立链接,则向客户端发送确认报文:
seq序列号=y(这是服务器也会产生一个序列号y,和客户端的序号不相关)
Ack确认号=x+1(seq序列号x+1,表示确认收到了客户端的请求)
Ack=1(表示这是条确认请求)
SYN=1(同时也发送一个建立连接的请求)
③客户端进程收到服务端进程的确认后,还要向服务端给出确认,然后连接成功建立:
seq序列号=x+1(这是客户端的序号为1)
Ack确认号=y+1(表示确认收到了服务器的连接请求)
Ack=1(表示这是确认报文)
2.四次挥手
四次挥手即终止TCP连接,就是指断开一个TCP连接时,需要客户端和服务端总共发送4个包以确认连接的断开。
由于TCP连接是全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭。
①客户端发送一个断开的请求,用来关闭客户端到服务器的数据传送
FIN=1
Ack=1
②服务器收到断开连接的请求,往回发一个Ack报文,确认序号为收到的序号加1。当前链接处于半断开连接的特殊过程
Ack=1
③服务器关闭客户端的连接,发送一个FIN和Ack给客户端。
FIN=1
Ack=1
④客户端发回ACK报文确认断开这次链接。
Ack=1
END