<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          TCP為什么需要三次握手?用最通俗的話解釋給你聽

          共 1973字,需瀏覽 4分鐘

           ·

          2021-09-13 02:42


          正文

          TCP實現(xiàn)原理和為什么需要三次握手?兩次握手不可以?四次握手不可以?讀者可以帶著疑問,看一遍本篇博客的詳細講解


          ok,首先解釋原因之前還是要先復(fù)習(xí)一下TCP的基本知識和三次握手協(xié)議:

          1、什么是TCP協(xié)議?

          TCP:Transmission Control Protocol翻譯過來就是傳輸控制協(xié)議,TCP協(xié)議是一個面向連接的、可靠的、基于字節(jié)流的傳輸層協(xié)議

          RFC 793對TCP連接的定義:

          Connections:

          The reliability and flow control mechanisms described above require that TCPs initialize and maintain certain status information for each data stream.

          The combination of this information, including sockets, sequence numbers, and window sizes, is called a connection.

          其大致意思是TCP連接是為了用于保證可靠性和流控制機制的,包括 Socket、序列號及窗口大小。

          其中Socket是由IP加端口組成的,序列號是用來解決亂序問題的,而窗口大小則是用來做流量控制的。

          2、TCP協(xié)議的特性

          面向連接:是指TCP是通過服務(wù)端和客戶端進行連接的協(xié)議

          面向字節(jié)流:TCP服務(wù)端和客戶端之間的數(shù)據(jù)通訊是通過字節(jié)流數(shù)據(jù)傳輸?shù)?/p>

          可靠的:是指TCP服務(wù)端客戶端之間的數(shù)據(jù)傳輸是很穩(wěn)定的,即使網(wǎng)絡(luò)很差的情況,TCP都能保證將數(shù)據(jù)傳輸?shù)浇邮辗健?/p>


          ps:TCP傳輸?shù)目煽啃缘靡嬗赥CP會記錄信息的發(fā)送狀態(tài),哪些數(shù)據(jù)收到了,哪些數(shù)據(jù)沒收到,TCP都是會記錄的,然后哪些丟包的情況,就是發(fā)送不成功的情況,TCP會重新發(fā)包,所以TCP的可靠性就是這么保證的

          3、TCP三次握手執(zhí)行流程

          TCP的三次握手執(zhí)行過程是面試中的一個很常見的問題,因為這個問題也是計算機的一個很重要的基礎(chǔ),所以需要認真學(xué)習(xí)


          關(guān)鍵字說明:

          • SYN:Synchronize Sequence Numbers,同步序列編號

          • ACK:Acknowledge Character,確認字符

          • SEQ:Sequence Number,序列號

          TCP三次握手執(zhí)行過程:

          (1)首先,服務(wù)端和客戶端都是處于CLOSED狀態(tài)的,然后服務(wù)端啟動,監(jiān)聽端口,狀態(tài)變?yōu)長ISTEN(監(jiān)聽)狀態(tài)

          (2)客戶端為了請求資源,發(fā)送連接,發(fā)送同步序列號SYN,此時客戶端就變成了SYN-SEND狀態(tài)

          (3)服務(wù)端接收到客戶端請求之后,發(fā)送SYN和ACK,然后服務(wù)端狀態(tài)就變成SYN-RCVD狀態(tài)

          (4)客戶端接收到信息之后,再次發(fā)送ACK,然后變成ESTABLISHED(已確認)狀態(tài),服務(wù)端接收到返回信息后,狀態(tài)也變成ESTABLISHED(已確認)狀態(tài)

          4、TCP協(xié)議為什么需要三次握手?

          ok,知道了TCP的三次握手的基本工作原理之后,就可以解釋為什么TCP需要三次握手?為什么不設(shè)計成兩次握手就可以?

          原因:避免重復(fù)連接

          其實在RFC 793 Transmission Control Protocol里就有指出為什么要三次握手的原因

          The principle reason for the three-way handshake is to prevent old duplicate connection initiations from causing confusion.

          翻譯為中文大致意思是主要原因是為了防止舊的重復(fù)連接引起連接混亂問題

          比如在網(wǎng)絡(luò)環(huán)境比較復(fù)雜的情況,客戶端可能會連續(xù)發(fā)送多次請求。如果只設(shè)計成兩次握手的情況,服務(wù)端只能一直接收請求,然后返回請求信息,也不知道客戶端是否請求成功。這些過期請求的話就會造成網(wǎng)絡(luò)連接的混亂。

          所以設(shè)計成三次握手的情況,客戶端在接收到服務(wù)端SEQ+1的返回消息之后,就會知道這個連接是歷史連接,所以會發(fā)送報文給服務(wù)端,告訴服務(wù)端。

          所以TCP設(shè)計成三次握手的目的就是為了避免重復(fù)連接。

          然后可以設(shè)計成四次握手?五次握手?不可以?

          答案是也是可以的,不過為了節(jié)省資源,三次握手就可以符合實際情況,所以就沒必要設(shè)計成四次握手、五次握手等等情況

          版權(quán)申明:內(nèi)容來源網(wǎng)絡(luò),版權(quán)歸原創(chuàng)者所有。除非無法確認,都會標明作者及出處,如有侵權(quán),煩請告知,我們會立即刪除并致歉!

          --- EOF ---


          點分享

          點收藏

          點點贊

          點在看

          瀏覽 35
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本无码视频播放 | 精品久久久久久久久久大佬 | 国产精品久久久久久久久久久久久 | 东京热卡一卡二卡三卡四卡100 | 欧洲精品成人99 |