天天看點

tcp與udp傳輸對比

TCP(Transmission Control Protocol,傳輸控制協定)是面向連接配接的協定,也就是說,在收發資料前,必須和對方建立可靠的連接配接。一個TCP連接配接必須要經過三次“對話”才能建立起來,其中的過程非常複雜,隻簡單的描述下這三次對話的簡單過程:主機A向主機B發出連接配接請求資料包:“我想給你發資料,可以嗎?”,這是第一次對話;主機B向主機A發送同意連接配接和要求同步(同步就是兩台主機一個在發送,一個在接收,協調工作)的資料包:“可以,你什麼時候發?”,這是第二次對話;主機A再發出一個資料包确認主機B的要求同步:“我現在就發,你接着吧!”,這是第三次對話。三次“對話”的目的是使資料包的發送和接收同步,經過三次“對話”之後,主機A才向主機B正式發送資料。

詳細點說就是:

TCP三向交握過程

1 主機A通過向主機B 發送一個含有同步序列号的标志位的資料段給主機B ,向主機B 請求建立連接配接,通過這個資料段,

主機A告訴主機B 兩件事:我想要和你通信;你可以用哪個序列号作為起始資料段來回應我.

2 主機B 收到主機A的請求後,用一個帶有确認應答(ACK)和同步序列号(SYN)标志位的資料段響應主機A,也告訴主機A兩件事:

我已經收到你的請求了,你可以傳輸資料了;你要用哪佧序列号作為起始資料段來回應我

3 主機A收到這個資料段後,再發送一個确認應答,确認已收到主機B 的資料段:"我已收到回複,我現在要開始傳輸實際資料了

這樣3次握手就完成了,主機A和主機B 就可以傳輸資料了.

3次握手的特點

沒有應用層的資料

SYN這個标志位隻有在TCP建産連接配接時才會被置1

握手完成後SYN标志位被置0

TCP建立連接配接要進行3次握手,而斷開連接配接要進行4次

1 當主機A完成資料傳輸後,将控制位FIN置1,提出停止TCP連接配接的請求

2  主機B收到FIN後對其作出響應,确認這一方向上的TCP連接配接将關閉,将ACK置1

3 由B 端再提出反方向的關閉請求,将FIN置1

4 主機A對主機B的請求進行确認,将ACK置1,雙方向的關閉結束.

由TCP的三次握手和四次斷開可以看出,TCP使用面向連接配接的通信方式,大大提高了資料通信的可靠性,使發送資料端

和接收端在資料正式傳輸前就有了互動,為資料正式傳輸打下了可靠的基礎

名詞解釋

ACK  TCP報頭的控制位之一,對資料進行确認.确認由目的端發出,用它來告訴發送端這個序列号之前的資料段

都收到了.比如,确認号為X,則表示前X-1個資料段都收到了,隻有當ACK=1時,确認号才有效,當ACK=0時,确認号無效,這時會要求重傳資料,保證資料的完整性.

SYN  同步序列号,TCP建立連接配接時将這個位置1

FIN  發送端完成發送任務位,當TCP完成資料傳輸需要斷開時,提出斷開連接配接的一方将這位置1

TCP的標頭結構:

源端口 16位

目标端口 16位

序列号 32位

回應序号 32位

TCP頭長度 4位

reserved 6位

控制代碼 6位

視窗大小 16位

偏移量 16位

校驗和 16位

選項  32位(可選)

這樣我們得出了TCP標頭的最小長度,為20位元組。

UDP(User Data Protocol,使用者資料報協定)

(1) UDP是一個非連接配接的協定,傳輸資料之前源端和終端不建立連接配接,當它想傳送時就簡單地去抓取來自應用程式的資料,并盡可能快地把它扔到網絡上。在發送端,UDP傳送資料的速度僅僅是受應用程式生成資料的速度、計算機的能力和傳輸帶寬的限制;在接收端,UDP把每個消息段放在隊列中,應用程式每次從隊列中讀一個消息段。

(2) 由于傳輸資料不建立連接配接,是以也就不需要維護連接配接狀态,包括收發狀态等,是以一台服務機可同時向多個客戶機傳輸相同的消息。

(3) UDP資訊包的标題很短,隻有8個位元組,相對于TCP的20個位元組資訊包的額外開銷很小。

(4) 吞吐量不受擁擠控制算法的調節,隻受應用軟體生成資料的速率、傳輸帶寬、源端和終端主機性能的限制。

(5)UDP使用盡最大努力傳遞,即不保證可靠傳遞,是以主機不需要維持複雜的連結狀态表(這裡面有許多參數)。

(6)UDP是面向封包的。發送方的UDP對應用程式交下來的封包,在添加首部後就向下傳遞給IP層。既不拆分,也不合并,而是保留這些封包的邊界,是以,應用程式需要選擇合适的封包大小。

我們經常使用“ping”指令來測試兩台主機之間TCP/IP通信是否正常,其實“ping”指令的原理就是向對方主機發送UDP資料包,然後對方主機确認收到資料包,如果資料包是否到達的消息及時回報回來,那麼網絡就是通的。

UDP的標頭結構:

源端口 16位

目的端口 16位

長度 16位

校驗和 16位

小結TCP與UDP的差別:

1.基于連接配接與無連接配接;

2.對系統資源的要求(TCP較多,UDP少);

3.UDP程式結構較簡單;

4.流模式與資料報模式 ;

5.TCP保證資料正确性,UDP可能丢包,TCP保證資料順序,UDP不保證。