浅谈TCP--三次握手及四次挥手

因为TCP是面向连接的,可靠流式服务,所以对于传输层中它是一个非常重要的协议,我们必须要掌握它。

接下来我们来看看连接过程(三次握手)及断开连接(四次挥手)过程。

1:三次握手

连接的时候只能是客户端主动连接服务器,服务器可不能请求连接客户端(因为服务器不会知道客户端的IP与端口)。

首先呢我们可以看出客户端给服务器发送一个连接请求SYN,然后服务器收到这个请求,会给客户端发送一个SYN/ACK,表示收到请求并同意连接。然后客户端收到之后会给服务器发送一个ACK确认信息,确认自己收到了服务器所发的消息。

你可能就会有疑问,为什么最后客户端还要给服务器发送一个确认信息呢,不是都连接上了吗?为什么要进行三次,两次就不行吗?两次的确是不行的,因为TCP是可靠的传输,确保它可靠传输的一个很重要的机制就是超时重传机制。所以,如果没有第三次的确认,服务器不知道是否已经连接上,他就会在一定的时间内采取超时重传,源源不断的给客户端发送。就有可能会导致服务器发送了很多次之后关闭,所以我们为了确保整个传输是可靠的,我们就必须有最后的一次确认。

2:四次挥手

断开连接的时候,可以是客户端发起的,也可以是服务器发起的,我们这里用客户端发起断开连接来举例。

首先,客户端给服务器发送一个FIN断开连接请求,服务器收到后会给客户端发送一个ACK,确认收到断开连接的消息。因为这个时候有可能服务器还没有处理完数据,所以他需要将数据处理完才能断开连接。等到数据处理完,他会给客户端发送断开连接的FIN消息,然后客户端收到后给服务器发送确认信息ACK。如果没有最后一次的确认信息,还是和上面一样,服务器还是会不断的发送FIN消息,所以最后一次的确认ACK绝对不能省略。但如果客户端请求断开的时候,服务器端并没有消息要处理,那么服务器就会一次发送FIN/ACK,可以省去一次,所以也有可能是三次挥手。

猜你喜欢

转载自blog.csdn.net/Eunice_fan1207/article/details/82800057
今日推荐