美文网首页@IT·互联网
TCP三次握手机制

TCP三次握手机制

作者: 咖啡爷爷 | 来源:发表于2017-11-20 09:33 被阅读0次
    三次握手
    image.png
    image.png
    • 第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。
    • 第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
    • 第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。

    四次挥手

    image.png
    image.png
    问题
    • 为什么说会有四次,因为不管在客户端发起fin还是客户端发起fin,这时都有可能当前正在处理请求数据,要等到客户端或者服务端处理结束,这时等待处理结束对方主动发起fin请求。
    • 为什么在第四次挥手后会有2个MSL的延时
      在网络不可靠的时候,第四次ack确认包可能丢失,对方无法收到ack确认包,会一直定时向A端重复发送,直到收到ACK确认包。
    过程
    • 第一次挥手
      当客户端向服务端请求断开,这时会发送fin的标记报文。
    • 第二次挥手
      当服务端收到客户端fin断开报文时候,可能正在处理数据,此时服务端会发生ack报文。
    • 第三次挥手
      当服务端处理完成后,会再次向客户端发送FIN报文,此时可以断开连接。
    • 第四次挥手
      当客户端收到服务端的fin报文,会向服务端发送确认ACK,经过两个msl《Maximum Segment Lifetime》时长后断开连接。
    image.png

    相关文章

      网友评论

        本文标题:TCP三次握手机制

        本文链接:https://www.haomeiwen.com/subject/ljvmvxtx.html