TCP的基本認識
- 一、TCP的頭部格式
- 二、TCP的特點
- 三、TCP連接
- 確定唯一的一個TCP連接
- TCP的最大連接數
- 四、UDP和TCP的區別以及應用場景
- UDP和TCP的區別
- UDP和TCP的應用場景
一、TCP的頭部格式

- 序列號:在建立連接時由計算機生成的亂數作為其初始值,通過 SYN 包傳給接收端主機,每發送?次資料,就累加?次該資料位元組數的大小,用來解決網路包亂序問題,
- 確認應答號:指下?次期望收到的資料的序列號,發送端收到這個確認應答以后可以認為在這個序號以前的資料都已經被正常接收,用來解決不丟包的問題,
- 控制位
- ACK:該位為1時,表示確認應答號的欄位為有效,TCP規定除了最初建立連接時的SYN包之外該位必須設定為1,
- RST:該位為1時,表示TCP連接中出現例外必須強制斷開連接,
- SYN:該位為1時,表示希望建立連接,并在其序列號的欄位進行序列號初始值的設定,
- FIN:該位為1時,表示今后不會再有資料發送,希望斷開連接,當通信結束希望斷開連接時,通信雙方的 主機之間就可以相互交換FIN 位為1的TCP段,
- URG:該位為1時,表示的是此報文段中有緊急資料,將緊急資料排在普通資料的前面;當接受端收到此報文后后必須先處理緊急資料,而后再處理普通資料,
- PSH:該位為1時,當發送端將PSH置為1時,TCP會立即創建一個報文并發送,接受端收到PSH為1的報文后就立即將接受緩沖區內資料向上交付給應用程式,而不是等待緩沖區滿后再交付,
- 視窗大小:表示準備收到的每個TCP資料的大小,
- 校驗和:計算TCP頭部,從而證明資料的有效性,
- 緊急指標:緊急資料點,當功能bit中的URG取值為1時有效,
- 選項:如果這里有設定其他引數,會導致頭部增大,
二、TCP的特點
TCP是面向連接的、可靠的、基于位元組流的傳輸層通信協議,
- 面向連接:?定是?對?才能連接,不能像 UDP 協議可以?個主機同時向多個主機發送訊息,也就是?對多是無法做到的
- 可靠的:無論的網路鏈路中出現了怎樣的鏈路變化,TCP 都可以保證?個報文一定能夠到達接收端
- 位元組流:訊息是沒有邊界的,所以無論我們訊息有多大都可以進行傳輸,并且訊息是有序的,當前?個訊息沒有收到的時候,即使它先收到了后面的位元組,那么也不能扔給應用層去處理,同時對重復的報文會自動丟棄,
三、TCP連接
用于保證可靠性和流量控制維護的某些狀態資訊,這些資訊的組合,包括Socket、序列號和視窗大小稱為連接,
建立?個 TCP 連接是需要客戶端與服務器端達成上述三個資訊的共識
- Socket:由 IP 地址和埠號組成
- 序列號:用來解決亂序問題等
- 視窗大小:用來做流量控制
確定唯一的一個TCP連接
四元組
- 源地址
- 源埠
- 目標地址
- 目標埠
源地址和目標地址的欄位(32位)是在IP頭部中,作用是通過IP協議發送報文給對方主機, 源埠和目的埠的欄位(16位)是在TCP頭部中,作用是告訴TCP協議應該把報文發給哪個行程,
TCP的最大連接數
最大TCP連接數 = 客戶端IP數 * 客戶端埠數
一般為 2 ^ 32 * 2 ^ 16 = 2 ^ 48 ,但是服務端最大并發TCP連接數遠不能達到理論上限,存在檔案描述符和記憶體限制,
四、UDP和TCP的區別以及應用場景
UDP的頭部格式

- 目標埠號和源埠號:主要是告訴 UDP 協議應該把報文發給哪個行程
- 包長度:該欄位保存了 UDP 首部的長度跟資料的長度之和
- 校驗和:校驗和是為了提供可靠的UDP首部和資料而設計
UDP和TCP的區別
-
連接:
- TCP是面向連接的傳輸層協議,傳輸資料前先要建立連接,
- UDP是不需要連接,即刻傳輸資料,
-
服務物件:
- TCP是一對一的兩點服務,即?條連接只有兩個端點,
- UDP支持一對一、一對多、多對多的互動通信,
-
可靠性:
- TCP 是可靠交付資料的,資料可以無差錯、不丟失、不重復、按需到達,
- UDP是盡最大努力交付,不保證可靠交付資料,
-
擁塞控制、流量控制:
- TCP有擁塞控制和流量控制,保證資料傳輸的安全性,
- UDP則沒有,即使網路非常堵了,也不會影響UDP的發送速率,
-
首部開銷:
- TCP首部長度較長,會有?定的開銷,首部在沒有使用選項欄位時是20個位元組,如果使用了選項欄位則會變長的,
- UDP首部只有8個位元組,并且是固定不變的,開銷較小,
-
傳輸方式:
- TCP是流式傳輸,沒有邊界,但保證順序和可靠,
- UDP是?個包?個包的發送,是有邊界的,但可能會丟包和亂序,
-
分片不同:
- TCP的資料大小如果大于 MSS大小,則會在傳輸層進行分片,目標主機收到后,也同樣在傳輸層組裝TCP資料包,如果中途丟失了一個分片,只需要傳輸丟失的這個分片,
- UDP的資料大小如果大于MTU大小,則會在IP層進行分片,目標主機收到后,在IP層組裝完資料,接著再傳給傳輸層,但是如果中途丟了?個分片,在實作可靠傳輸的UDP時則就需要重傳所有的資料包,這樣 傳輸效率非常差,所以通常UDP的報文應該小于MTU,
-
包長度:
- TCP:TCP沒有包長度,是因為TCP的包長度是可以算出來的
TCP資料長度 = IP總長度 - IP首部長度 - TCP首部長度 - UDP:UDP有包長度,因為為了網路設備硬體設計和處理方便,首部長度需要是 4節的整數倍, 如果去掉 UDP包長度欄位,那 UDP 首部?度就不是4位元組的整數倍了,
- TCP:TCP沒有包長度,是因為TCP的包長度是可以算出來的
UDP和TCP的應用場景
TCP:FTP檔案傳輸,HTTP/HTTPS
UDP:包總量小的通信,如DNS、SNMP等;視頻、音頻等多媒體通信;廣播通信,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/321166.html
標籤:其他
上一篇:Linux中DHCP服務原理
下一篇:jq命令使用curl給出無效負載
