美文网首页网络协议学习
八.网络协议学习笔记 传输层TCP-释放连接

八.网络协议学习笔记 传输层TCP-释放连接

作者: crazyfox | 来源:发表于2021-07-22 15:32 被阅读0次
    image.jpeg

    释放连接-状态解读

    FIN-WAIT-1:表示主动关闭连接

      向对方发送FIN报文,进入FIN-WAIT-1状态
    

    CLOSE-WAIT:表示等待关闭

    对方发送FIN给自己,自己回应ACK给对方,进入CLOSE-WAIT状态
    
    需要考虑自己是否还有数据要发送,没有,就发送FIN给对方
    

    FIN-WAIT-2:只要对方发送ACK确认后,主动方就处在这个状态

    CLOSING:一种比较罕见的例外状态

    表示你发送FIN报文后,并没有收到对方的ACK报文,反而却也收到了对方的FIN报文,如果双方几乎在同时准备关闭连接的话,那么就出现了双方同时发送FIN报文的情 况,也即会出现CLOSING状态,表示双方都正在关闭连接
    

    LAST-ACK:被动关闭一方在发送FIN报文后,最后等待对方的ACK报文

    当收到ACK报文后,即可进入CLOSED状态了
    

    TIME-WAIT:表示收到了对方的FIN报文,并发送出了ACK报文,就等2MSL后即可进入 CLOSED状态了

    如果FIN-WAIT-1状态下,收到了对方同时带FIN标志和ACK标志的报文时,可以直接进入到TIME-WAIT状态,而无须经过FIN-WAIT-2状态
    

    CLOSED:关闭状态

    由于有些状态的时间比较短暂,所以很难用netstat命令看到,比如SYN-RCVD、FIN-WAIT-1等
    

    为什么释放连接需要四次?

    全双工模式

    第一次挥手:主机1发出FIN报文
    
    表示主机1告诉主机2,主机1已经没有数据要发给主机2,但是主机2还是可以发数据给主机1
    
    第二次挥手:当主机2返回ACK报文
    
    表示主机2知道主机1没有数据要发送,但是主机2还是可以发送数据给主机1
    
    第三次挥手:当主机2发出FIN报文
    
    表示主机2告诉主机1,主机2已经没有数据要发给主机1
    
    第四次挥手:当主机1返回ACK报文
    
    表示主机1知道主机2没有数据要发送
    

    TCP释放连接 细节

    有时候在抓包时,可能只看到3次挥手
    
    是将第二第三次合并了
    
    当server接收到client的Fin时,如果server后面也没有数据要发送
    
    server可以将2,3次挥手合并,同时告诉client
    
    已经知道client没有数据发
    
    server没有数据要发了
    

    相关文章

      网友评论

        本文标题:八.网络协议学习笔记 传输层TCP-释放连接

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