tcp状态装换

命名:netstat -apn  查看状态

netstat -apn | grep ......

TCP状态时序图:

    1.主动发起连接请求端:  CLOSE --发送SYN--SEND_SYN --接受 ACK、SYN --SEND_SYN--发送 ACK --ESTABLISHED(数据通信状态)

    2.主动关闭连接请求端;  ESTABLISHED(数据通信状态) --发送FIN --FIN_WAIT_1 --接受 ACK --FIN_WAIT_2(半关闭)

                --接受对端发送 FIN --FIN_WAIT_2(半关闭) --回发 ACK --TIME_WAIT(只有主动关闭连接方会经历该状态)


                 -- 等 2MLS时长(大约40s) --CLOSE

    3.被动接受连接请求端:    CLOSE -- LISTEN --接收 SYN -- LISTEN --发送 ACK SYN --SYN_RCVD --接收ACK --ESTABLISHED

    4.被动关闭连接请求端:    ESTABLISHED -- 接收 FIN --ESTABLISHED --发送ACK

                --CLOSE_WAIT (说明对端【主动关闭连接请求端】处于半关闭状态)

                --发送 FIN--LASK_ACK --接收ACK--CLOSE

    重点记忆: ESTABLISHED 、FIN_WAIT_2 <->CLOSE_WAIT 、TIME_WAIT(2MLS)
2MLS时长:

    一定出现在 主动关闭连接请求端  ---TIME_WAIT
    
    保证,最后一个 ACK 能成功被对端收到。(等待期间,对端没收到我发的 ACK ,对端会再次发送 FIN 请求)

端口复用:

    int opt =1 ; //设置端口复用。

    setsockopt(lfd,SOL_SOCKET,SO_REUSEADDR,(void*)&opt,sizeof(opt))

半关闭:    


    通信双方中,只有一端关闭通信   --FIN_WAIT_2

    close(lfd);

    shutdown (int fd,int how)


        how:  SHUT_RD  关读端
        
            SHUT_WR  关写端

            SHUT_RDWR  关读写

    shutdown 在关闭多个文件描述符对应的文件时(采用dup2后),采用全关闭方法。close 值关闭一个

发布了78 篇原创文章 · 获赞 10 · 访问量 3815

猜你喜欢

转载自blog.csdn.net/weixin_44374280/article/details/104381240
今日推荐