TCP UDP 通訊機制和優劣

2021-08-10 01:47:13 字數 3377 閱讀 3038

tcp協議  是面向連線的傳輸協議  ,它提供了全雙工和可靠互動的任務,採用了許多機制來確保端到端點的可靠的資料傳輸,如採用序列號 ,確認重傳 ,滑動視窗等。

1 首先,tcp要為所傳送的每乙個報文段加上序列號,保證每乙個報文段能被接收方接收,並只被確認的接收一次

2 tcp  採用具有重傳功能的積極確認技術作為可靠資料流傳輸服務的基礎,這裡的「確認」是指接收端正確接收到報文段之後向傳送端會送乙個確認ack資訊,傳送方將每個已傳送的報文段備份給自己的緩衝區,而且收到確認之前是不會丟棄所儲存的報文段

3 最後 ,採用可變長的滑動視窗協議進行流量控制,以防止傳送端和接收端之間的不匹配而引起的資料丟失,這裡所採用的變長的滑動視窗協議和資料鏈路層的滑動視窗協議在工作原理上完全相同,唯一不同的是滑動視窗協議用於傳輸層是為了實現端和端節點之間進行流量控制,而用於資料鏈路層是為了在相鄰節點之間實現流量控制。tcp採用可變長的滑動視窗,使得傳送端和接收端可根據自己的cpu和資料緩衝資源對資料傳送和接收能力進行動態調整,從而靈活性更強,也更合理。

4 tcp通過三次握手將傳送端和接收端建立聯絡,三次握手為應用陳翔提供了可靠的通訊連線,適合一次傳輸大批資料的情況,並適合要響應的應用程式。

udp 

使用者資料報協議,是一種無連線的協議,因此不需要像tcp那樣通過三次握手來建立乙個連線,同時,乙個udp應用可以同時作為應用的客戶或者伺服器方,由於建立udp協議不需要建立乙個明確的連線,因此建立udp應用協議比tcp協議簡單了很多

tcp與udp基本區別

1.基於連線與無連線

2.tcp要求系統資源較多,udp較少; 

3.udp程式結構較簡單 

4.流模式(tcp)與資料報模式(udp); 

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

6.tcp保證資料順序,udp不保證 

udp應用場景:

1.面向資料報方式

2.網路資料大多為短訊息 

3.擁有大量client

4.對資料安全性無特殊要求

5.網路負擔非常重,但對響應速度要求高

具體程式設計時的區別

1.socket()的引數不同 

2.udp server不需要呼叫listen和accept 

3.udp收發資料用sendto/recvfrom函式 

4.tcp:位址資訊在connect/accept時確定 

5.udp:在sendto/recvfrom函式中每次均 需指定位址資訊 

6.udp:shutdown函式無效

程式設計區別

sock_stream這種的特點是面向連線的,即每次收發資料之前必須通過connect建立連線,也是雙向的,即任何一方都可以收發資料,協議本身提供了一些保障機制保證它是可靠的、有序的,即每個包按照傳送的順序到達接收方。 

基於上述不同,udp和tcp程式設計步驟也有些不同,如下:

tcp:

tcp程式設計的伺服器端一般步驟是: 

1、建立乙個socket,用函式socket(); 

2、設定socket屬性,用函式setsockopt(); * 可選 

3、繫結ip位址、埠等資訊到socket上,用函式bind(); 

4、開啟監聽,用函式listen(); 

5、接收客戶端上來的連線,用函式accept(); 

6、收發資料,用函式send()和recv(),或者read()和write(); 

7、關閉網路連線; 

8、關閉監聽; 

tcp程式設計的客戶端一般步驟是: 

1、建立乙個socket,用函式socket(); 

2、設定socket屬性,用函式setsockopt();* 可選 

3、繫結ip位址、埠等資訊到socket上,用函式bind();* 可選 

4、設定要連線的對方的ip位址和埠等屬性; 

5、連線伺服器,用函式connect(); 

6、收發資料,用函式send()和recv(),或者read()和write(); 

7、關閉網路連線;

udp:

與之對應的udp程式設計步驟要簡單許多,分別如下: 

udp程式設計的伺服器端一般步驟是: 

1、建立乙個socket,用函式socket(); 

2、設定socket屬性,用函式setsockopt();* 可選 

3、繫結ip位址、埠等資訊到socket上,用函式bind(); 

4、迴圈接收資料,用函式recvfrom(); 

5、關閉網路連線; 

udp程式設計的客戶端一般步驟是: 

1、建立乙個socket,用函式socket(); 

2、設定socket屬性,用函式setsockopt();* 可選 

3、繫結ip位址、埠等資訊到socket上,用函式bind();* 可選 

4、設定對方的ip位址和埠等屬性; 

5、傳送資料,用函式sendto(); 

6、關閉網路連線;

tcp和udp是osi模型中的運輸層中的協議。tcp提供可靠的通訊傳輸,而udp則常被用於讓廣播和細節控制交給應用的通訊傳輸。

udp補充:

udp不提供複雜的控制機制,利用ip提供面向無連線的通訊服務。並且它是將應用程式發來的資料在收到的那一刻,立刻按照原樣傳送到網路上的一種機制。

即使是出現網路擁堵的情況下,udp也無法進行流量控制等避免網路擁塞的行為。此外,傳輸途中如果出現了丟包,udo也不負責重發。甚至當出現包的到達順序亂掉時也沒有糾正的功能。如果需要這些細節控制,那麼不得不交給由採用udo的應用程式去處理。換句話說,udp將部分控制轉移到應用程式去處理,自己卻只提供作為傳輸層協議的最基本功能。udp有點類似於使用者說什麼聽什麼的機制,但是需要使用者充分考慮好上層協議型別並製作相應的應用程式。

tcp補充:

tcp充分實現了資料傳輸時各種控制功能,可以進行丟包的重發控制,還可以對次序亂掉的分包進行順序控制。而這些在udp中都沒有。此外,tcp作為一種面向有連線的協議,只有在確認通訊對端存在時才會傳送資料,從而可以控制通訊流量的浪費。

tcp通過檢驗和、序列號、確認應答、重發控制、連線管理以及視窗控制等機制實現可靠性傳輸。

tcp與udp區別總結:

1、tcp面向連線(如打**要先撥號建立連線);udp是無連線的,即傳送資料之前不需要建立連線

2、tcp提供可靠的服務。也就是說,通過tcp連線傳送的資料,無差錯,不丟失,不重複,且按序到達;udp盡最大努力交付,即不保   證可靠交付

3、tcp面向位元組流,實際上是tcp把資料看成一連串無結構的位元組流;udp是面向報文的

4、每一條tcp連線只能是點到點的;udp支援一對一,一對多,多對一和多對多的互動通訊

5、tcp首部開銷20位元組;udp的首部開銷小,只有8個位元組

6、tcp的邏輯通訊通道是全雙工的可靠通道,udp則是不可靠通道

網路通訊TCP UDP

這個學期幾乎都在學網路通訊的內容。基於tcp協議的通訊,通過乙個socket來連線伺服器和客戶機之間的通訊。要求雙方必須要連線之後,才能傳送和接受訊息。如果有一方斷開連線,則通訊終止。這保證了訊息傳輸的準確性,不會發生訊息的丟失,但是通訊的速度有所降低。基於udp協議的通訊,不要求伺服器和客戶機連線...

TCP UDP區別 心跳包機制

tcp udp傳送 安全送達 只管傳送 接收與建立連線 是 三次握手 否 有資料報,無需連線 資料大小 無限制每個資料報64k 可靠性可靠 不可靠速度 慢 三次握手才能完成連線 快 無需連線 應用流 qq 什麼是三次握手?握手次數 具體情況 1建立連線時,客戶端傳送同步序列編號到伺服器,並進入傳送狀...

tcp udp收發包的機制

tcpudp 傳送安全送達 只管傳送 接收與建立連線 是 三次握手 否 有資料報,無需連線 資料大小 無限制每個資料報64k 可靠性可靠 不可靠速度 慢 三次握手才能完成連線 快 無需連線 應用流 qq 握手次數 具體情況 1建立連線時,客戶端傳送同步序列編號到伺服器,並進入傳送狀態,等待伺服器確認...