目标:
    1:掌握什么是TCP 的四次挥手
    2:疑难问题解决(解决地址重用问题)

    一 : TCP 的四次挥手

    概念:在 TCP 的客户端与服务端断开连接时,客户端与服务端总共发送四个包后从而确认断开连接,这就叫 TCP 的四次挥手,TCP的四次挥手用于断开TCP连接

    内部流程图

    image.png

    面试题:
    为什么主动发起断开连接的一方要等待2MLS 时间才能断开连接,因为有一些原因造成第四个包丢失,主动发起断开连接的一方要等待另一方发送上一个包(TCP的应答机制和超时重传)的最大时间就是 2MLS



    2:当服务端主动断开连接时,再次运行这个服务端的话会报这样的错误 Address already in use ,这是怎么回事,该怎么解决?

    image.png

    答:Address already in use 翻译是该地址已经被使用,这是因为,主动发起断开tcp连接的一方会等待 2MLS时间才能真正断开连接,所以在 2MLS时间内重启这个服务端就会报这样的错误,下面是解决办法

    解决办法:设置负责客户端连接的套接字地址属性即可解决此问题
    代码:套接字. setsockopt(socket.SOL_SOCKET , socket . SO_REUSEADDR , True)
    上面这段代码的意思是,设置套接字的地址可以重用即可解决此问题

    截图

    image.png