1. 程式人生 > >UDP連線和TCP連線的異同

UDP連線和TCP連線的異同

簡單的說TCP與UDP的區別是有無連線狀態。
TCP是有連線狀態的,而UDP沒有,所以TCP是一種比較安全的通訊協議,而UDP則比較方便

TCP 127.0.0.1:1026 0.0.0.0:0 LISTENING 
TCP 是傳輸協議 TCP是主動連線 網頁什麼的用TCP(貌似)
UDP也是傳輸協議 UDP迂迴連線 QQ就用UDP (貌似)
127.0.0.1 是本地迴環地址 
1026 是埠 
LISTENING 是監聽 

TCP 127.0.0.1:1026 0.0.0.0:0 LISTENING 
全意是 監聽 TCP 1026埠 
0.0.0.0 是沒有東西 為零 
0 埠就是沒有。。。ING

TCP是面向連線的
UDP是面向無連線的

就是這種關係了


TCP(Transmission Control Protocol,傳輸控制協議)
UDP(User Datagram Protocol,使用者資料包協議)
當IP包通過路由將資料傳輸到目的地時,會根據TCP或UDP包頭中的源埠和目的埠資訊,請求和獲取不同的應用。也就是說,不管TCP還是UDP,都含有網路服務必須的源埠和目的埠資訊,以建立和實現網路傳輸服務。這時,你的疑問就來了:既然都用於傳輸,為何要搞兩個不同的協議呢?這就需要從網路中不同服務的需求來談起。 

在網路中,有些服務,如HTTP、FTP等,對資料的可靠性要求較高,在使用這些服務時,必須保證資料包能夠完整無誤的送達;而另外一些服務,如DNS、即時聊天工具等,並不需要這麼高的可靠性,高效率和實時性才是它們所關心的。根據這兩種服務不同的需求,也就誕生了面向連線的TCP協議,以及面向無連線的UDP協議。 

這裡的連線(Connection)和無連線(Connectionless)是網路傳輸中常用的術語,它們的關係可以用一個形象地比喻來說明,就是打電話和寫信。 

打電話時,一個人首先必須撥號(發出連線請求),等待對方響應,接聽電話(建立了連線)後,才能夠相互傳遞資訊。通話完成後,還需要結束通話電話(斷開連線),才算完成了整個通話過程。寫信則不同,你只需填寫好收信人的地址資訊,然後將信投入郵局,就算完成了任務。此時,郵局會根據收信人的地址資訊,將信件送達指定目的地。 

我們可以看到,這兩者之間有很大不同。打電話時,通話雙方必須建立一個連線,才能夠傳遞資訊。連線也保證了資訊傳遞的可靠性,因此,面向連線的協議必然是可靠的。無連線就沒有這麼多講究,它不管對方是否有響應,是否有回饋,只管將資訊傳送出去。就像信件一旦進了郵箱,在它到達目的地之前,你沒法追蹤這封信的下落;接收者即使收到了信件,也不會通知你信件何時到達。在整個通訊過程中,沒有任何保障。因此我們常說,面向無連線的協議也是不可靠的。當然,郵局會盡力將右鍵送到目的地,99%的情況信件會安全到達,但在少數情況下也有例外。 

面向連線的協議比面向無連線的協議在可靠性上有著顯著的優勢,但建立連線前必須等待接收方響應,傳輸資訊過程中必須確認資訊是否傳到,斷開連線時需要發出響應訊號等,無形中加大了面向連線協議的資源開銷。具體到TCP和UDP協議來說,除了源埠和目的埠,TCP還包括序號、確認訊號、資料偏移、控制標誌(通常說的URG、ACK、PSH、RST、SYN、FIN)、視窗、校驗和、緊急指標、選項等資訊,UDP則只包含長度和校驗和資訊。UDP資料報比TCP小許多,這意味著更小的負載和更有效的使用頻寬。許多即時聊天軟體採用UDP協議,與此有莫大的關係。

TCP---傳輸控制協議,提供的是面向連線、可靠的位元組流服務。當客戶和伺服器彼此交換資料前,必須先在雙方之間建立一個TCP連線,之後才能傳輸資料。TCP提供超時重發,丟棄重複資料,檢驗資料,流量控制等功能,保證資料能從一端傳到另一端。 UDP---使用者資料報協議,是一個簡單的面向資料報的運輸層協議。UDP不提供可靠性,它只是把應用程式傳給IP層的資料報傳送出去,但是並不能保證它們能到達目的地。由於UDP在傳輸資料報前不用在客戶和伺服器之間建立一個連線,且沒有超時重發等機制,故而傳輸速度很快。 用TCP還是UDP,那要看你的程式注重哪一個方面?可靠還是快速?
TCP UDP是兩個協議,簡單的說,TCP連線要對方確認的,而UDP卻不需要對方確認收到包,所以TCP連線更加安全,但是一般播放網路流媒體使用UDP協議
傳輸層協議一般有TCP和UDP,TCP為可靠傳輸,協議本身會保證資料傳輸的可靠,但為此會付出很多額外的網路開銷。UDP為不可靠傳輸,所以傳輸效率比較高,本端只負責傳送資料,不保證對端能否收到。對於UDP,可靠性可以在應用層實現