源埠號和目的埠號:各16位,最大埠號為2到16次方減去1,即65535。
序列號字段:32位,TCP為資料流的每個位元組加乙個數字,序列號欄位的值是指資料包段中第乙個位元組的序列號。
確認序列號:32位,對方預期傳送的報文段資料第乙個位元組的序號,表示該序列號之前報文段內的所有資料都已接收到,ACK識別符號設定為1時有效。
報頭長度:4 位,表示 TCP 報文的長度,以 4 位元組計算,如果沒有選項字段,則值為 5,表示報頭 20 位元組。
保留:6 位,保留使用,必須為 0。
視窗:16位,滑動視窗大小,以位元組計算,最大位為65535位元組。
驗證字段:16位,用於資料驗證的字段,在計算測試和時,TCP頭和資料都會參與。
緊急指標:16 位,當 urg 標誌設定為 1 時有效,表示需要緊急傳送的資料,指示該訊息段中有多少位元組的緊急資料。
選項字段:最多 40 個位元組。
啟動器 SYN 設定為隨機生成序列號 A
設定接收機SYN和ACK,隨機生成序列號B,確認編號設定為A+1
設定發起方ACK,序列號為A+1,確認號為B+1
序號 SEQ 的值是對方傳送的最後乙個資料包段 ACK 的值。
確認號的值是對方傳送的最後乙個報文的序列號+有效載荷長度,表示所有序列號早於確認號的資料包都已收到。
win 欄位的值表示緩衝區大小,即當前可以接收的最大位元組數。
上次檢索資料後,將釋放相應的緩衝區。
傳送方 FIN 和 ACK 已設定到位,並且請求已斷開連線。
接收端接收到資料後,ACK設定位置進行回覆,變為半連線狀態。
在接收器沒有要傳送的資料後,FIN 和 ACK 將設定到位,並請求斷開連線。
傳送方 ACK 已設定並斷開連線。
源埠號和目的埠號:各16位,最大埠號為2到16次方減去1,即65535。
長度:16 位,包括 UDP 標頭長度和資料,最大長度為 65,535 位元組。
驗證總和:16位,用於資料驗證,驗證和計算涉及UDP頭和資料。
TCP 是面向連線的,UDP 是無連線的。 TCP資料在傳輸之前,需要經過三次握手過程,當資料傳輸完成後,通過四次揮手釋放連線。 TCP 報頭具有 6 位控制位,其中 SYN、ACK 和 FIN 參與連線和釋放過程。 另一方面,UDP 在沒有連線的情況下傳送資料包。
TCP 是可靠的,UDP 是不可靠的。 TCP在傳輸前建立連線,通過ACK確認接收到的資料包,如果未收到,則在傳送方重新傳輸資料包。 但是UDP沒有重傳和響應機制,只想給對方傳送報文,不管對方是否收到報文,也沒有擁塞控制手段,以恆定的速度傳送資料,並不關心網路擁塞。
TCP 用於位元組流,UDP 用於資料包。 TCP是面向位元組流的,不把訊息一一考慮,它識別所有的位元組流,不識別訊息的邊界,即訊息邊界不受保護,在這種情況下可能會出現粘性資料包的問題,而UDP是面向資料包的,乙個接乙個地傳送訊息, 所以沒有粘性資料包的問題。
TCP是一對一的,UDP支援一對。
一、一對多、多對多。 這是因為 TCP 在通訊前通過三向握手建立連線,而 UDP 具有單播、組播和廣播功能。
TCP 開銷大,UDP 開銷小。 最小TCP報頭為20位元組,最大為60位元組,UDP報頭固定為8位元組,因此UDP報頭開銷更小,傳輸效率更高。
TCP 和 UDP 有不同的應用場景。 TCP一般用於檔案傳輸,UDP一般用於音訊傳輸,這是由於對檔案傳輸的可靠性要求較高,對傳輸速率的要求較高,即使有一些丟包,也不會影響整體使用效果。