美文网首页
(2)TCP三次握手和四次挥手

(2)TCP三次握手和四次挥手

作者: hedgehog1112 | 来源:发表于2020-12-07 22:49 被阅读0次

    tcp最重要一点是全双工:client 和server同时童话,有两个信道

    1、三次握手(过程,简化三动作,中间2状态)

    2、TCP 数据传输(tcp重传、互相喊话、批量ack、tcp窗口大小)

    3、TCP 四次挥手(过程、没合并、time_wait、偶尔合并)

    一、TCP 三次握手过程

    好比在街上隔50米看见对方,因为雾霾不能100%确认,招手确定

    1)C先向S招手(syn),

    2)S看到C向自己招手后,向对方点头(ack)。C看到S点头确认(进入estalished状态)。

    3)S还有点狐疑,有没有可能C在看别人,向C招了招手确认(syn),

       C看到S向自己招手确认,也点头(ack),S确认(进入established状态)。

    相互拥抱。

    1、简化成三个动作:C招手--S点头微笑--S招手--C点头微笑。S连续2个动作,点头+再次招手,可合(syn+ack)。

    2、两个中间状态,syn_sent和syn_rcvd,「半打开」向对方招手,还没看到对方点头微笑

        syn_sent: syn package has been sent        主动  客户端

        syn_rcvd: syn package has been received    被动 服务端

    二、握手完成:开始TCP 数据传输

    C喊话(data),S听后回复自己听见(ack)

    1、tcp重传:如半天没听到回复,重新喊话,就是。(也可能S听到,但回复被风吹走,C不用管,重传)

    PS:「重传」和「去重」网络内核处理

    2、可互相喊话,因为tcp链接「双工」,都收到对方确认

    3、批量ack:C连说八句话,S回一句都听见了

    4、TCP窗口大小:不能一次说太多,S无法消化,协商好合适发送和接受速率

    ps:操作系统的网络内核,对数据包排序,保证到用户层时顺序一致

    三、TCP 四次挥手

    和建立链接比较类似,只不过中间两部没合成C挥手(fin)—S伤感地微笑(ack)—S挥手(fin)—C微笑(ack)

    1、没合并,是因为tcp存在「半关闭」状态,单向关闭。1)C挥了手,人还没走,不再说话,但可继续听,2)S继续喊话,累了不再说话了,朝C挥手,C伤感地微笑,才彻底结束

    2、time_wait,非常特殊状态:主动关闭方C回复完对方挥手后,进入一个长期状态,标准4分钟(可调),然后closed状态,释放套接字资源。ps:提分手,得付代价。

        1)作用:重传最后一个ack报文,确保对方收到。如对方没收到ack,重传fin报文,处于time_wait状态套接字,会立即向对方重发ack报文

        2)同时在这段时间内,该链接对话期间,于网际路由上产生的残留报文(因路径崎岖,数据报文走时间太长,重传报文都收到原始报文还在路上)传过来时,被立即丢掉。4分钟足以让残留报文彻底消逝。

        ps:每个MSL是2分钟(maximium segment lifetime最长报文寿命,RFC协议规定的)

    3、偶尔三次挥手,中间两动作有时候可合并,主动关闭方从fin_wait_1状态直接到time_wait状态,跳过fin_wait_2状态

    相关文章

      网友评论

          本文标题:(2)TCP三次握手和四次挥手

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