<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    TCP 如何保證可靠傳輸


    發現錯別字 6個月前 提問
    回答
    1
    瀏覽
    15344
    請勿發布不友善或者負能量的內容。與人為善,比聰明更重要!
    回答數量: 1
    上官雨寶
    CISM-WSE 中級信息安全等級測評師

    TCP協議保證數據傳輸可靠性的方式主要有:

    • 校驗和:TCP將保持它首部和數據的檢驗和。這是一個端到端的檢驗和,目的是檢測數據在傳輸過程中的任何變化。如果收到段的檢驗和有差錯,TCP將丟棄這個報文段和不確認收到此報文段。

    • 序列號:TCP傳輸時將每個字節的數據都進行了編號,這就是序列號。(為了應對延時抵達和排序混亂)。每個連接都會選擇一個初始序列號,初始序列號(視為一個32位計數器),會隨時間而改變(每4微秒加1)。因此,每一個連接都擁有不同的序列號。序列號的作用不僅僅是應答的作用,有了序列號能夠將接收到的數據根據序列號排序,并且去掉重復序列號的數據。這也是TCP傳輸可靠性的保證之一。

    • 確認應答:TCP傳輸的過程中,每次接收方收到數據后,都會對傳輸方進行確認應答。也就是發送ACK報文。這個ACK報文當中帶有對應的確認序列號,告訴發送方,接收到了哪些數據,下一次的數據從哪里發。

    • 超時重傳:超時重傳機制。簡單理解就是發送方在發送完數據后等待一個時間,時間到達沒有接收到ACK報文,那么對剛才發送的數據進行重新發送。如果是剛才第一個原因,接收方收到二次重發的數據后,便進行ACK應答。如果是第二個原因,接收方發現接收的數據已存在(判斷存在的根據就是序列號,所以上面說序列號還有去除重復數據的作用),那么直接丟棄,仍舊發送ACK應答。那么發送方發送完畢后等待的時間是多少呢?如果這個等待的時間過長,那么會影響TCP傳輸的整體效率,如果等待時間過短,又會導致頻繁的發送重復的包。如何權衡?由于TCP傳輸時保證能夠在任何環境下都有一個高性能的通信,因此這個最大超時時間(也就是等待的時間)是動態計算的。

    • 連接管理:說白了就是三次握手四次揮手。

    • 流量控制:當接收方來不及處理發送方的數據,能提示發送方降低發送的速率,防止包丟失。

    • 擁塞控制:擁塞控制是TCP在傳輸時盡可能快的將數據傳輸,并且避免擁塞造成的一系列問題。是可靠性的保證,同時也是維護了傳輸的高效性。

    回答所涉及的環境:聯想天逸510S、Windows 10。

    6個月前 / 評論
    亚洲 欧美 自拍 唯美 另类