IT@程序员猿媛程序员Java架构技术栈

阿里面试题解析:TCP的三次握手四次挥手

2019-04-06  本文已影响5人  若丨寒

TCP(Transmission Control Protocol 传输控制协议)协议的作用是为了确保数据传输的可靠性;为了更容易传送大数据,使用了字节流服务(Byte Stream Service)将大块数据分割成报文段(segment)为单位的数据包进行管理和传输;而且TCP协议能够确认数据最终是否送达到对方。

为了准确无误的将数据送达目标处,TCP采用了三次握手(three-way handshaking)的策略。用TCP协议把数据包送出去后,TCP会向对方确认数据是否成功送达。握手过程中使用了TCP的标志(flag)——SYN(synchronize)和ACK(acknowledgement)。

三次握手步骤:

若在握手过程中某个阶段莫名中断,TCP协议会再次以相同的顺序发送相同的数据包。

四次挥手:

FIN:FINISH

MSL:Maximum Segment Lifetime(报文最大生存时间):他是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。

TIME-WAIT

客户端收到服务器端的FIN连接释放报文后进入此状态,而不是直接进入CLOSED状态,还需要等待一个时间计时器设置的时间2MSL;这么做的理由有两个:

  1. 确保最后一个确认报文ACK能够达到。如果服务器端没有收到客户端发来的确认报文ACK那么久需要从新发送连接释放请求报文FIN,客户端等待一段时间就是为了处理这种情况的发送。
  2. 等待一段时间是为了让本次连接持续时间内产生的所有报文都从网络中消失,使得下一个新的连接不会出现旧的连接请求报文SYN,从而错误打开连接。

四次挥手的过程:

四次挥手的原因:

客户端发送了FIN连接释放报文之后,服务器端收到了这个报文,就进入了CLOSE-WAIT状态。这个状态是为了让服务器端发送还未完毕的数据,传送完毕之后,服务器端会发送FIN连接释放报文。

上一篇 下一篇

猜你喜欢

热点阅读