美文网首页
三次握手、四次挥手

三次握手、四次挥手

作者: 围观工程师 | 来源:发表于2018-07-24 17:34 被阅读0次

    三次握手

    1. A发送请求报文,SYN置为1,seq = x
    2. B发送确认报文,SYN、ACK都置为1,ack = x + 1,seq = y
    3. A发送确认报文,SYN置为0,ACK置为1,seq = x + 1,ack = y + 1。这是一个普通报文段,可携带数据。若不携带数据,则不消耗序号。

    SYN=1的报文段不能携带数据,但要消耗一个序号。

    为什么需要第三次“握手”

    防止第一个连接请求报文段在某些网络节点滞留时间太长,以致这次的连接释放后才传送到B,B以为A又发起了一次连接请求。采用三次握手,B收不到确认,就不建立连接。

    四次挥手

    1. A发出释放连接请求,FIN置为1,seq = u,u 等于A前面已传送过的数据的最后一个字节的序号加1。
    2. B收到释放连接请求后即发出确认,ACK置为1,确认号是 ack = u + 1,seq = v。此时B还可以向A发送数据,但A不再向B发数据。
    3. B发出连接释放报文,FIN置为1,seq = v,ack = u + 1(因为2的确认报文不消耗序号)
    4. A发出确认报文,ACK = 1,seq = u + 1,ack = v + 1,B收到后,B到A方向的连接被释放,A等待一个超时时间,才能将整个连接释放。在这段超时时间内,A又收到B重传的FIN报文,A需要再次进行确认。收到A的最后确认,B才能最终将整个连接释放。

    相关文章

      网友评论

          本文标题:三次握手、四次挥手

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