TCP的连接时的三次握手和四次挥手

TCP是一种有链接的,安全的,准确的网络通信协议,两个网络终端使用TCP通信时需要先进行建立连接。这也就是为什么即时通信类的服务不能使用TCP协议作为网络传输协议,时间成本过大。

首先通过一张草图描绘三次握手时,客户端和服务端之间的通信的情况,


由上图我们可以看到三次握手主要流程就是:

  1、客户端发送请求,等待服务度相应;

  2、服务端收到请求,发送请求确认信息;

  3、收到服务端的请求确认信息后,在发送一个确认,确保链接成功可以开始发送数据。

为什么要使用三次握手,明明第二次握手时,链路双方都已经确认并做好了准备:

这是因为如果仅仅使用两次握手,在第二步服务端发送完确认信息后,就认为客户端已经做好了准备,随机准备发送数据,如果在此过程中,确认数据包丢失,客户端没有收到确认信息,这服务端的数据包将会被拒绝丢弃,服务端收不到数据包接受确认信息,将会一直超时重发,白白占用链路带宽,严重时导致链路拥塞。


TCP链接结束时四次挥手主要的流程是:


四次挥手的主要流程是:

1、客户端没有数据再发送给服务端后,然后FIN终止链接请求;

2、服务端收到客户端的FIN终止链接请求之后,发送ACK确认报文,并继续发送数据;

3、服务端数据发送完毕之后,关闭链接,发送FIN和ACK确认报文;

4、客户端收到服务端的FIN请求之后,发送ack确认报文,等待两个时钟周期,如果没有数据传输就关闭链接。


为什么握手需要三次,而挥手却需要四次:

这是因为数据传输的问题,在建立连接时,服务端收到SYN同步信息之后,随即就可以发送SYN和ACK同步应答,建立连接,但是在关闭链接时,有时候收到客户端的FIN报文时只能说明客户端不会再发送数据给服务端,而不能确定服务端还有没有数据发送给客户端,所以此时只能发送给客户端一个ACK应答报文告知客户端,我已收到你关闭链接的请求,等待我数据传输结束,再发送关闭请求报文,所以挥手比握手多出一次报文传输过程

你可能感兴趣的:(TCP的连接时的三次握手和四次挥手)