Tcp協議基礎

2021-10-05 11:02:06 字數 1719 閱讀 9288

tcp全稱為 「傳輸控制協議(transmission control protocol」). 要對資料的傳輸進行乙個詳細的控制;

源/目的埠號:表示資料是從哪個程序來, 到哪個程序去;

4位tcp報頭長度: 表示該tcp頭部有多少個32位bit(有多少個4位元組); 所以tcp頭部最大長度是15 * 4 = 60

6位標誌位:

urg:緊急指標是否有效

ack:確認號是否有效

psh:提示接收端應用程式立刻從tcp緩衝區把資料讀走

rst:對方要求重新建立連線; 我們把攜帶rst標識的稱為復位報文段

syn:請求建立連線; 我們把攜帶syn標識的稱為同步報文段

fin:通知對方, 本端要關閉了, 我們稱攜帶fin標識的為結束報文段

16位校驗和:傳送端填充, crc校驗. 接收端校驗不通過, 則認為資料有問題.

16位緊急指標:標識哪部分資料是緊急資料;

每乙個ack都帶有對應的確認序列號, 意思是告訴傳送者, 我已經收到了哪些資料; 下一次你從**開始發.

主機a傳送資料給b之後, 可能因為網路擁堵等原因, 資料無法到達主機b;

如果主機a在乙個特定時間間隔內沒有收到b發來的確認應答, 就會進行重發;

但是, 主機a未收到b發來的確認應答, 也可能是因為ack丟失了;

因此主機b會收到很多重複資料. 那麼tcp協議需要能夠識別出那些包是重複的包, 並且把重複的丟棄掉.這時候我們可以利用前面提到的序列號, 就可以很容易做到去重的效果.

超時的時間如何確定?

最理想的情況下, 找到乙個最小的時間, 保證 「確認應答一定能在這個時間內返回」.

但是這個時間的長短, 隨著網路環境的不同, 是有差異的.

如果超時時間設的太長, 會影響整體的重傳效率;

如果超時時間設的太短, 有可能會頻繁傳送重複的包;

tcp為了保證無論在任何環境下都能比較高效能的通訊, 因此會動態計算這個最大超時時間.

linux中(bsd unix和windows也是如此), 超時以500ms為乙個單位進行控制, 每次判定超時重發的超時時間都是500ms的整數倍.

如果重發一次之後, 仍然得不到應答, 等待2*500ms後再進行重傳.

如果仍然得不到應答, 等待4*500ms進行重傳. 依次類推, 以指數形式遞增.

累計到一定的重傳次數, tcp認為網路或者對端主機出現異常, 強制關閉連線.

連線管理機制(三次握手以及四次揮手)

網路基礎 TCP協議

1 什麼是tcp協議 tcp是傳輸層最重要和最常用的協議 它提供一種面向連線的 可靠的 位元組流資料傳輸服務。2 tcp協議的特性 3 tcp協議的功能 1 tcp建立連線 由客戶端主動發起連線 三次握手建立連線 半開連線 一般將伺服器收到syn而未收到客戶端的ack時的連線狀態稱為半開連線。為什麼...

網路基礎 TCP協議簡介

tcp協議全稱 傳輸控制協議 顧名思義,要對資料的傳輸有乙個詳細的控制。tcp協議段格式 1.16位埠號 port number 源埠號和目的埠號 2.32位序號 sequence number 第乙個 序號值被初始化為某個隨機值isn initial sequence number tcp報文是位...

TCP 協議(滑動視窗 基礎)

同學 luffy 給你打 讓你記下一串手機號碼,可是你記憶力不太好,你跟 luffy 約定,一次只最多只能報 4 個數字,luffy 念一遍,如果你聽到了就把他說的話重複一遍。接下來 最後,你接收到的完整的號碼就是 139 7548 2669.上面的場景,你一次最多只能接受 4 個數字,表示你的滑動...