傳輸控制協議(TCP)和用戶數據報協議(UDP)是與網際協議(IP)一起使用的兩個標準傳輸層。
TDP和UDP都使用標題作為封裝消息數據的一部分,以通過網絡連接進行傳輸。 TCP報頭和UDP報頭每個包含一組稱為由協議技術規範定義的字段的參數。
TCP報頭格式
每個TCP報頭有十個必需的字段,總共20 個字節 (160 位 )。 它們還可以選擇包含最多40個字節的額外數據部分。
這是TCP標頭的佈局:
- 源TCP端口號(2字節)
- 目標TCP端口號(2個字節)
- 序號(4字節)
- 確認號碼(4字節)
- TCP數據偏移量(4位)
- 保留數據(3位)
- 控制標誌(最多9位)
- 窗口大小(2個字節)
- TCP 校驗和 (2個字節)
- 緊急指針(2字節)
- TCP可選數據(0-40字節)
TCP以上面列出的順序將報頭字段插入到消息流中。
- 源和目標TCP端口號是發送和接收設備的通信端點。
- 消息發送者使用序號來標記一組消息的排序。 發送方和接收方都使用確認號碼字段來傳送最近收到或預計要發送的消息的序列號。
- 數據偏移字段以四個字節的倍數存儲TCP標頭的總大小。 不使用可選TCP字段的標頭的數據偏移量為5(表示20個字節),而使用最大大小的可選字段的標頭的數據偏移量為15(表示60個字節)。
- TCP報頭中的保留數據的值始終為零。 該字段用於將總標題大小對齊為四個字節的倍數(對於計算機數據處理的效率而言非常重要)。
- TCP使用一組六個標準和三個擴展控制標誌 (每個標誌代表開或關 )來管理特定情況下的數據流。 例如,一位標誌啟動TCP連接重置邏輯。 這些領域的詳細操作超出了本文的範圍。
- TCP發送者使用一個稱為窗口大小的數字來調節發送給接收器的數據量,然後再作出回應確認。 如果窗口尺寸變得太小,網絡數據傳輸將會不必要地慢,而如果窗口尺寸變得太大,則網絡鏈路可能變得飽和(對於任何其他應用不可用),或者接收器可能無法快速處理傳入數據足夠(也導致性能下降)。 協議中內置的窗口算法動態計算大小值,並使用TCP報頭的這個字段來協調發送者和接收者之間的變化。
- TCP報頭中的校驗和值由協議發送方生成,作為一種數學技術來幫助接收方檢測被破壞或篡改的消息。
- 緊急指針字段通常設置為零並被忽略,但與其中一個控制標誌結合使用時,它可以用作數據偏移量,以將消息的子集標記為需要優先級處理。
- 可選TCP數據的使用超出了本文的範圍,但包括對特殊確認和窗口縮放算法的支持。
UDP頭格式
由於UDP在性能上明顯比TCP有限,因此它的頭部要小得多。 UDP頭包含8個字節,分為以下四個必填字段:
- 源端口號(2個字節)
- 目的地端口號(2字節)
- 數據長度(2字節)
- UDP校驗和(2個字節)
UDP按照上面列出的順序將標題字段插入到其消息流中。
- 源和目標UDP端口號是發送和接收設備的通信端點。
- UDP中的長度字段表示包括標題和數據的每個數據報的總大小。 該字段的值從最小8字節(所需的標題大小)到65,000字節以上的大小。
- 與TCP類似,UDP 校驗和允許接收者交叉檢查傳入數據是否有任何損壞的消息位。