TCP和UDP的基礎知識

前言

運輸層兩個協議TCP和UDP,真正做到主機進程到主機進程的傳輸,它的上層應用層定義的是和端到端無關的規定,它的下層網絡層定義的是數據在網絡間的轉發。

學習首部格式的意義:

運輸層就兩個協議:TCP和UDP。UDP功能較少,用的也較少(幸運的是要學的也少)。TCP用的多,主要原因是他功能強大,如建立連接、保證可靠、實現流量控制和擁塞控制,所以要學的也多。TCP和UDP的這些功能能夠實現是基於他們的首部數據,所以我們這節將先學習首部格式。

 

TCP和UDP的定義和區別

傳輸控制協議TCP是一種面向連接的、可靠的、基於字節流的傳輸層通信協議。僅支持單播傳輸。提供擁塞控制、流量控制等功能。首部最小20字節,最大60字節。大多數場景下使用

用戶數據報協議UDP是一個簡單的面向數據報的傳輸層協議,提供的是非面向連接的、不可靠,盡最大努力交付的數據傳輸。支持一對一、一對多和多對多的交互通信。沒有擁塞控制,適合實時性強的應用 。首部開銷小,僅8字節。適合實時視頻回憶、DNS、TCP等協議的控制查詢報文。

區別:

  TCP UDP
是否連接 面向連接的 無連接的
是否可靠 可靠的 不可靠,盡最大努力交付
連接對象個數 點對點的全雙工通信 支持一對一、一對多和多對多的交互通信
傳輸方式 基於字節流的 面向報文的,即對應用層的報文不拆分也不合並
擁塞控制和流量控制 沒有擁塞控制,適合實時性強的應用
首部開銷 首部最小20字節,最大60字節 首部開銷小,僅8字節
適用場景 除UDP的場景 功能少、要求低。適合實時視頻回憶、DNS、TCP等協議的控制查詢報文

 

UDP的用戶數據報首部格式

img

UDP長度:最小爲8,即只有首部

UDP檢驗和:計算時會臨時增加一個僞首部(包括源IP、目標IP、UDP長度等)計算後刪除

僞首部, 又稱爲僞包頭(Pseudo Header):是指在 TCP 的分段或 UDP 的數據報格式中,在數據報首部前面增加源 IP 地址、目的 IP 地址、IP 分組的協議字段、TCP 或 UDP 數據報的總長度等共12字節,所構成的擴展首部結構。此僞首部是一個臨時的結構,它既不向上也不向下傳遞,僅僅只是爲了保證可以校驗套接字的正確性。

計算方法 發送方 1.檢驗和置0 2.把僞首部、首部和數據部分拆分爲16位的字串 3.按二進制反碼計算出這些16位字的和 4.將和求反填入校驗和字段 接收方 1.按發送方2、3步計算出結果 2.無差錯時結果爲1,否則出錯

 

TCP的報文段首部格式

序號:TCP對字節流的每個字節都按順序編號,序號指的是本報文段所發送的數據的第一個字節的序號

確認號ack:期望收到對方下一個報文段的第一個數據字節的序號,同時表明前面的所有數據都已經收到了

數據偏移:數據起始處距離報文段的起始處多遠,實際指出的是TCP報文段的首部長度

保留:佔6位,目前爲0,沒被使用

控制位:

  • 緊急URG:URG=1代表開啓緊急指針

  • 確認ACK:ACK=1代表首部帶確認好ack

  • 推送PSH(PuSH):URG=1立即把報文段發送出去,不再等到緩存都填滿後再向上交付

  • 復位RST(ReSeT):RST=1釋放連接,重新建立運輸連接

  • 同步SYN:SYN=1說明在建立連接同步序號

  • 終止FIN:數據已發送完畢,釋放連接

窗口(重點):發送本報文段的一方的接收窗口大小,讓接收本報文段的接收方設置其發送窗口大小值。用於流量控制

檢驗和:和UDP一樣,僞首部第四個字段爲6

緊急指針:指出緊急數據的大小,即緊急數據的末尾(從0到末尾)

選項:最大報文段長度MSS、時間戳等等

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章