<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 四次揮手 ![](https://img.kancloud.cn/79/27/7927cbed07182edfdc5d0fd332f53bd7_1728x974.png) 1、客戶端調用`close`方法,執行「主動關閉」,會發送一個 FIN 報文給服務端,從這以后客戶端不能再發送數據給服務端了,客戶端進入`FIN-WAIT-1`狀態。FIN 報文其實就是將 FIN 標志位設置為 1。 FIN 段是可以攜帶數據的。不管 FIN 段是否攜帶數據,都需要消耗一個序列號。 客戶端發送 FIN 包以后不能再發送數據給服務端,但是還可以接受服務端發送的數據。這個狀態就是所謂的「半關閉(half-close)」 2、服務端收到 FIN 包以后回復確認 ACK 報文給客戶端,服務端進入`CLOSE_WAIT`,客戶端收到 ACK 以后進入`FIN-WAIT-2`狀態。 3、服務端也沒有數據要發送了,發送 FIN 報文給客戶端,然后進入`LAST-ACK`狀態,等待客戶端的 ACK。同前面一樣如果 FIN 段沒有攜帶數據,也需要消耗一個序列號。 4、客戶端收到服務端的 FIN 報文以后,回復 ACK 報文用來確認第三步里的 FIN 報文,進入`TIME_WAIT`狀態,等待 2 個 MSL 以后進入`CLOSED`狀態。服務端收到 ACK 以后進入`CLOSED`狀態。 ## 為什么 FIN 報文要消耗一個序列號 如果 FIN 包不消耗一個序列號。客戶端發送了 100 字節的數據包和 FIN 包,都等待服務端確認。如果這個時候客戶端收到了ACK=1000 的確認包,就無法得知到底是 100 字節的確認包還是 FIN 包的確認包。 ## 為什么揮手要四次,變為三次可以嗎 可以,因為有**延遲確認**的存在,把第二步的 ACK 經常會跟隨第三步的 FIN 包一起捎帶會對端。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看