1. 程式人生 > >網路篇--TCP,UDP

網路篇--TCP,UDP

tcp

TCP是主機對主機層的傳輸控制協議,提供可靠的連線服務,採用三次握手確認建立一個連線:

位碼即tcp標誌位,有6種標示:

SYN(synchronous建立聯機)

ACK(acknowledgement 確認)

PSH(push傳送)

FIN(finish結束)

RST(reset重置)

URG(urgent緊急)

Sequence number(順序號碼)

Acknowledge number(確認號碼)

確認號:其數值等於傳送方的傳送序號 +1(即接收方期望接收的下一個序列號)。

建立連線:三次握手

狀態意義:

LISTEN - 偵聽來自遠方TCP埠的連線請求; 

SYN-SENT -在傳送連線請求後等待匹配的連線請求; SYN-RECEIVED - 在收到和傳送一個連線請求後等待對連線請求的確認; ESTAB-LISHED- 代表一個開啟的連線,資料可以傳送給使用者; 

關閉連線:四次揮手

狀態意義:

FIN-WAIT-1 - 等待遠端TCP的連線中斷請求,或先前的連線中斷請求的確認;FIN-WAIT-2 - 從遠端TCP等待連線中斷請求; CLOSE-WAIT - 等待從本地使用者發來的連線中斷請求; CLOSING -等待遠端TCP對連線中斷的確認; LAST-ACK - 等待原來發向遠端TCP的連線中斷請求的確認; TIME-WAIT -等待足夠的時間以確保遠端TCP接收到連線中斷請求的確認; 

CLOSED - 沒有任何連線狀態;

客戶端TCP狀態遷移:CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSED伺服器TCP狀態遷移:CLOSED->LISTEN->SYN收到->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSED面向非連線的UDP

"面向非連線"就是在正式通訊前不必與對方先建立連線,不管對方狀態就直接傳送。與手機簡訊非常相似:你在發簡訊的時候,只需要輸入對方號碼就OK了。

UDP(User Data Protocol,使用者資料報協議)是與TCP相對應的協議。它是面向非連線的協議,它不與對方建立連線,而是直接就把資料包傳送過來!

UDP適用於一次只傳少量資料,對可靠性要求不高的應用環境。比如,經常使用"ping"命令來測試兩臺主機之間TCP/IP通訊是否正常,其實"ping"命令的原理就是向對方主機發送UDP資料包,然後對方主機確認收到資料包,如果資料包是否到達的訊息及時反饋回來,那麼網路就是通的。

TCP協議和UDP協議的區別是什麼

  1. TCP協議是有連線的,有連線的意思是開始傳輸實際資料之前TCP的客戶端和伺服器端必須通過三次握手建立連線,會話結束之後也要結束連線。而UDP是無連線的
  2. TCP協議保證資料按序傳送,按序到達,提供超時重傳來保證可靠性,但是UDP不保證按序到達,甚至不保證到達,只是努力交付,即便是按序傳送的序列,也不保證按序送到。
  3. TCP協議所需資源多,TCP首部需20個位元組(不算可選項),UDP首部欄位只需8個位元組。
  4. TCP有流量控制和擁塞控制,UDP沒有,網路擁堵不會影響傳送端的傳送速率
  5. TCP是一對一的連線,而UDP則可以支援一對一,多對多,一對多的通訊。
  6. TCP面向的是位元組流的服務,UDP面向的是報文的服務。