分析udp資料報 網路協議之TCP和UDP

2021-10-14 18:17:10 字數 2126 閱讀 9241

首先強調一點,tcp/ip協議是乙個協議簇。裡面包括很多協議的,udp只是其中的乙個, 之所以命名為tcp/ip協議,因為tcp、ip協議是兩個很重要的協議,就用他兩命名了。

兩個協議的區別實際使用時,只需要記住「tcp正常連線傳送資料時一般不會產生丟包(排除上下層其他因素),而udp產生丟包是很常見的事。」

1 下面著重講解一下tcp協議和udp協議的區別

1、基於連線與無連線;

2、對系統資源的要求(tcp較多,udp少);

3、udp程式結構較簡單;

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

5、tcp保證資料正確性,udp可能丟包;

6、tcp保證資料順序,udp不保證。

通過以上分析,可能會有人認為,鑑於tcp可靠的傳輸協議,那麼它一定優於udp,其實不然。

下面舉例說明這個問題:

tcp用於在傳輸層有必要實現可靠傳輸的情況。由於它是面向有鏈結並具備順序控制、重發控制等機制,所以它可以為應用提供可靠傳輸。

在另方面,udp主要用於那些對高速傳輸和實時性較高要求的通訊或廣播通訊。我們舉乙個例子-通過ip**進行通話,如果使用tcp,資料在傳輸圖中如果丟失會被重發,但這樣無法流暢地傳輸通話人的聲音,會導致無法進行正常交流。而採用udp,它不會進行重發處理。從而也就不會有聲音大幅度延遲到達的問題。即使有部分資料丟失,也只是會影響某一小部分的通話。此外,在多播與廣播通道中也使用udp而不是tcp。

tcp(transmission control protocol,傳輸控制協議)是面向連線的協議,也就是說,在收發資料前,必須和對方建立可靠的連線。 乙個tcp連線必須要經過三次「對話」才能建立起來,其中的過程非常複雜,只簡單的描述下這三次對話的簡單過程:

1)主機a向主機b發出連線請求資料報:「我想給你發資料,可以嗎?」,這是第一次對話;

2)主機b向主機a傳送同意連線和要求同步 (同步就是兩台主機乙個在傳送,乙個在接收,協調工作)的資料報 :「可以,你什麼時候發?」,這是第二次對話;

3)主機a再發出乙個資料報確認主機b的要求同步:「我現在就發,你接著吧!」, 這是第三次對話。

三次「對話」的目的是使資料報的傳送和接收同步,經過三次「對話」之後,主機a才向主機b正式傳送資料,這也是保證可靠傳輸的先決條件。

6 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資料報,然後對方主機確認收到資料報, 如果資料報是否到達的訊息及時反饋回來,那麼網路就是通的。

ping命令是用來探測主機到主機之間是否可通訊,如果不能ping到某台主機,表明不能和這台主機建立連線。ping命令是使用 ip 和網路控制資訊協議 (icmp),因而沒有涉及到任何傳輸協議(udp/tcp) 和應用程式。它傳送icmp回送請求訊息給目的主機。

icmp協議規定:目的主機必須返回icmp回送應答訊息給源主機。如果源主機在一定時間內收到應答,則認為主機可達。

網路之使用者資料報協議UDP

udp是運輸層的協議,所以呢在這要稍微提一下運輸層了。運輸層為相互通訊的應用程序提供邏輯通訊。它向高層使用者遮蔽了下面網路核心的細節 運輸層還有乙個重要的功能 復用 傳送方不同的應用程序都可以使用同乙個運輸層協議傳送資料 和分用 接收方的運輸層在剝去報文的首部後能夠把這些資料正確交付目的應用程序 u...

python 網路程式設計(udp資料報)

什麼是udp udp是乙個簡單的面向資料報的運輸層協議 程序的每個輸出操作都正好產生乙個udp資料報,並組裝成乙份待傳送的ip資料報。這與面向流字元的協議不同,如tcp,應用程式產生的全體資料與真正傳送的單個ip資料報可能沒有什麼聯絡。接收端是伺服器 server 傳送端是客戶機 client py...

UDP資料報的最佳長度分析

在進行udp程式設計的時候,我們最容易想到的問題就是,一次傳送多少bytes好?當然,這個沒有唯一答案,相對於不同的系統,不同的要求,其得到的答案是不一樣的。首先,我們知道,tcp ip通常被認為是乙個四層協議系統,包括鏈路層 網路層 傳輸層和應用層。udp屬於傳輸層,下面我們由下至上一步一步來看 ...