1、協議段格式不同
(1)udp的報頭有8位元組,tcp的報頭有20個位元組,udp比tcp更為簡單
(2)udp有16位udp長度能確認報文長度,而tcp只有4位首部長度,無法確認報文長度,容易發生粘包問題
(3)udp的報頭有源埠號、目的埠號、16位udp長度、16位校驗和;而tcp的報頭不僅有源埠號、目的埠號、16位校驗和,還有32位序號和確認序號、4位首部長度、16位視窗大小、16位緊急指標以及6位標誌位(urg/ack/psh/rst/syn/fin),通過更為複雜的設定來確保資料傳輸的可靠性
2.特點不同
(1)udp是無連線的協議, tcp是有連線的協議
udp協議,知道對方的ip和埠號就可以進行資料傳輸,不需要盡力連線;tcp協議,要經過「三次握手」與對方建立連線、「四次揮手」與對方斷開連線
(2)udp是不可靠的協議,tcp是可靠協議
udp協議,資料的傳輸沒有確認機制、也沒有重傳機制,若因為網路中斷而導致資料沒有傳輸成功,對方也不會給返回任何錯誤訊息,而且資料傳輸的順序與資料到達順序的一致性也不能保證,輸出傳授的過程中有沒有丟資料也不能保證; tcp協議,通過序號與確認組號給資料排序,經過確認應答、超時重傳、快重傳、視窗大小、流量控制等保證資料傳輸的可靠性與高效能。
(3)udp是一種面向資料報的傳輸,tcp是一種面向位元組流的傳
udp協議,因為有16位udp長度,可以確認報文長度,所以應用udp協議的報文都是整髮整取,如果接收的資料少於傳送的資料,那麼少的那部分資料永遠也接收不到了,不夠靈活的控制讀寫資料的數量和次數;tcp協議,它只有4位首部長度無法確認傳送報文的長度,所以tcp的資料丟鞋比較靈活,無確定長度,但是容易造成粘包問題。
(4)udp無傳送緩衝區,有接收緩衝區。每次呼叫sendto將資料交給核心,由核心將資料交給網路層各層協議完成後續操作,udp有接收緩衝區,但是卻無法保證資料的接受順序與傳送順序一致,如果接收緩衝區滿了,則再傳資料就會被丟棄;
tcp有接收緩衝區與傳送緩衝區,呼叫tcp的socket的同時,在核心建立乙個接收緩衝區與傳送緩衝區,由於緩衝區的存在,保證了tcp面向位元組流的傳輸
tcp粘包問題
(1)什麼是粘包問題
tcp是一種面向位元組流的傳輸,站在傳輸層角度,tcp是乙個報文乙個報文發過來的,按序號排好序放在緩衝區中。而應用層角度,看到的是一連串的位元組資料,它沒有明確的分界資訊,就不知道從哪部分開始哪部分結束,有可能讀不到乙個完整的包,容易出現讀半個包的錯誤。粘包問題的「包」粘的是應用層的資料報。
(2)粘包問題的解決
要想解決粘包問題,就得明確兩個包之間的邊界:
(3)udp不會出現粘包問題
站在應用層角度,若使用udp,則要麼不收到資料,收到的一定是乙個完整的udp報文,不會出現收半個的情況
UDP與TCP的比較
趁週末有時間,看了會兒書,看到網路傳輸協議這塊,對udp與tcp這兩種資料傳輸協議有了一定的認識,因此記錄下來,下次有些遺忘的時候可以翻出來看看。udp是tcp的替代品,有時將它和ip一起稱為udp ip。和tcp一樣,udp也使用ip在計算機之間進行真正的資料報傳輸。然而,udp不提供將資訊分組,...
TCP與UDP協議的比較
1 udp的特點 udp提供不可靠的交付,但也有優點 1 傳送資料前不需要建立連線,減少開銷與傳送資料的延遲。2 udp不使用擁塞控制,不保證交付,減少了複雜的連線狀態表,網路的擁塞不會使源主機的傳送速率降低。3 資料報首部位元組比tcp少,節約開銷。所以udp適用於實時應用,網路擁塞時允許丟失一點...
TCP和UDP的比較
1,tcp是面向連線 connection oriented 的協議,udp是無連線 connection less 協議 2,tcp無界,udp有界 3,tcp可靠,udp不可靠 4,tcp有序,udp無序 5,tcp有流量控制 擁塞控制 udp沒有 6,tcp的頭部比udp大 1,tcp是面向連...