TCP&UDP基礎

TCP

TCP/IP是一種網絡通信協議,而socket則是TCP/IP網絡最爲通用的API,即一種應用程序接口,稱爲套接字。TCP是面向鏈接的協議,在進行數據收發前必須鏈接,且在收發時必須保持該鏈接。在TCP層,有個FLAGS字段,這個字段有如下幾個標識:SYN, FIN, ACK, PSH, RST, URG。其中SYN(synchronous)表示要求創建鏈接,ACK(acknowledgement)表示應答,FIN(finish)表示要求關閉鏈接,PSH(push)表示有數據傳輸,RST(reset)表示鏈接重置,URG(urgent)表示緊急。程序員

1. TCP的三次握手鍊接:安全

第一次握手:客戶端發送SYN包(SYN = 1)到服務器,隨機生成Sequence number = X,並進入SYN_SEND狀態,等待服務器確認;服務器

第二次握手:服務器收到SYN包,必須確認客戶的SYN(SYN = 1),同時本身也發送一個ACK包(ACK = X+1),即SYN+ACK包,同時隨機生成一個Sequence number = Y,此時服務器進入SYN_RECV狀態;網絡

第三次握手:客戶端收到服務器的SYN + ACK包,向服務器發送確認包ACK(ACK = Y+1),同時隨機生成一個Sequence number = Z,此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。socket

其中握手過程當中傳送的包裏不包含數據,三次握手完畢後,客戶端與服務器才正式開始傳送數據。spa

2. TCP的四次揮手斷開鏈接blog

第一次揮手:主動方發送FIN + ACK包到被動方,隨機生成Sequence number = X,並進入FIN_WAIT_1狀態,等待被動方確認;接口

第二次揮手:被動方接收到主動方的FIN + ACK包後,並返回ACK(ACK = X + 1)包,並隨機生成Sequence number = Z發送給主動方,並進入CLOSE_WAIT狀態,此時主動方接收到信息後隨即進入FIN_WAIT_2狀態;ci

第三次揮手:被動方發送FIN+ACK(ack = X + 1)包給主動方,並隨機生成Sequence number = Y,並進入LAST_ACK狀態;資源

第四次揮手:主動方接收到被動方的FIN+ACK包之後,向被動方發送ACK(ack = Y+1)包,隨即自身進入TIME_WAIT狀態,被動方接收到ACK包後進入CLOSED狀態,緊接着主動方等待2MSL後也進入CLOSED狀態,至此鏈接斷開。

 

 

UDP

UDP(User Datagram Protocol)用戶數據報協議,它在OSI模型的傳輸層,OSI模型的傳輸層有UDP協議,TCP協議和剛開發出來的一種新的協議SCTP。若是網絡中兩個主機上的應用程序要相互通訊,其一要知道彼此主機的IP,其二要知道主機中運行程序可監聽的端口。由於同一主機上的程序使用網絡是經過端口號來區分的。所以爲了使用UDP,咱們須要一對套接字地址:客戶端套接字地址和服務器套接字地址。

UDP提供無鏈接服務。客戶端向服務端發送數據時沒必要先創建鏈接。客戶端建立一個套接字並向服務器發送一個數據報,而後客戶端能夠當即用這個套接字向另一個服務器發送其它數據。不能確保UDP數據報最終到達目的地。UDP對接收的數據報不發生確認,發送端不知道數據是否被正確接收,也不會重發數據。UDP傳輸數據較TCP快,佔用系統資源少。

TCP和UDP的區別

1. TCP是面向連接的,雖說網絡的不安全不穩定特性決定了多少次握手都不能保證鏈接的可靠性,但TCP的三次握手在最低限度上(實際上也很大程度上保證了)保證了鏈接的可靠性。而UDP不是面向鏈接的,UDP傳送數據前並不與對方創建鏈接,對接收到的數據也不發送確認信號,發送端不知道數據是否會正確接收,固然也不用重發,因此說UDP是無鏈接的、不可靠的一種數據傳輸協議。

2. 也正因爲1所說的特色,使得UDP的開銷更小數據傳輸速率更高,由於沒必要進行收發數據的確認,因此UDP的實時性更好。知道了TCP和UDP的區別,就不難理解爲什麼採用TCP傳輸協議的MSN比採用UDP的QQ傳輸文件慢了,但並不能說QQ的通訊是不安全的,由於程序員能夠手動對UDP的數據收發進行驗證,好比發送方對每一個數據包進行編號而後由接收方進行驗證啊什麼的,即便是這樣,UDP由於在底層協議的封裝上沒有采用相似TCP的「三次握手」而實現了TCP所沒法達到的傳輸效率。

3. 人們一般用電話連線來講明TCP協議,而UDP協議,則經常用郵遞來作比喻。

 

TCP

UDP

是否鏈接

面向鏈接

面向非鏈接

傳輸可靠性

可靠

不可靠

應用場合

傳輸大量數據

少許數據

速度

相關文章
相關標籤/搜索