tcp和udp在socket程式設計中的區別
一、tcp與udp的區別
基於連線與無連線
對系統資源的要求(tcp較多,udp少)
udp程式結構較簡單
流模式與資料報模式
tcp保證資料正確性,udp可能丟包
tcp保證資料順序,udp不保證
部分滿足以下幾點要求時:應該採用udp
面向資料報方式
網路資料大多為短訊息
擁有大量client
對資料安全性無特殊要求
網路負擔非常重,但對響應速度要求高
具體程式設計時的區別
socket()的引數不同
udp server不需要呼叫listen和accept
udp收發資料用sendto/recvfrom函式
tcp:位址資訊在connect/accept時確定
udp:在sendto/recvfrom函式中每次均 需指定位址資訊
udp:shutdown函式無效
基於上述不同,udp和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程式設計的伺服器端一般步驟是:
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、關閉網路連線;
udp(user datagram protocol)
udp不提供複雜的控制機制,利用ip提供面向無連線的通訊服務。並且它是將應用程式發來的資料在收到的那一刻,立刻按照原樣傳送到網路上的一種機制。
即使是出現網路擁堵的情況下,udp也無法進行流量控制等避免網路擁塞的行為。此外,傳輸途中如果出現了丟包,udo也不負責重發。甚至當出現包的到達順序亂掉時也沒有糾正的功能。如果需要這些細節控制,那麼不得不交給由採用udo的應用程式去處理。換句話說,udp將部分控制轉移到應用程式去處理,自己卻只提供作為傳輸層協議的最基本功能。udp有點類似於使用者說什麼聽什麼的機制,但是需要使用者充分考慮好上層協議型別並製作相應的應用程式。
tcp(transmission control protocol)
tcp充分實現愛呢了資料傳輸時各種控制功能,可以進行丟包的重發控制,還可以對次序亂掉的分包進行順序控制。而這些在udp中都沒有。此外,tcp作為一種面向有連線的協議,只有在確認通訊對端存在時才會傳送資料,從而可以控制通訊流量的浪費。
tcp通過檢驗和、序列號、確認應答、重發控制、連線管理以及視窗控制等機制實現可靠性傳輸。此處不一一敘述。
tcp與udp如何加以區分使用?
tcp用於在傳輸層有必要實現可靠性傳輸的情況。由於它是面向有連線並具備順序控制、重發控制等機制的。所以它可以為應用提供可靠傳輸。
另一方面,udp主要用於那些對高速傳輸和實時性有較高要求的通訊或廣播通訊。舉乙個ip**進行通話的例子。如果使用tcp,資料在傳送途中如果丟失會被重發,但是這樣無法流暢地傳輸通話人的聲音,會導致無法進行正常交流。而採用udp,它不會進行重發處理。從而也就不會有聲音大幅度延遲到達的問題。即使有部分資料丟失,也只是影響某一小部分的通話。此外,在多播與廣播通訊中也使用udp而不是udp。rip、dhcp等基於廣播的協議也要依賴於udp。
6、tcp的邏輯通訊通道是全雙工的可靠通道,udp則是不可靠通道
TCP和UDP的區別及socket網路程式設計步驟
tcp和udp的區別 1.連線 tcp是面向連線的傳輸層協議,即傳輸資料之前必須先建立好連線。udp無連線。2.服務物件 tcp是點對點的兩點間服務,即一條tcp連線只能有兩個端點 udp支援一對一,一對多,多對一,多對多的互動通訊。3.可靠性 tcp是可靠交付 無差錯,不丟失,不重複,按序到達。u...
Socket 程式設計 TCP 和UDP
三次握手過程 1.建立連線時,客戶端傳送syn包到伺服器,並進入syn sent狀態,等待伺服器確認。2.伺服器收到syn包,反饋乙個syn ack包,進入syn recv狀態。3.客戶端接到伺服器的syn ack包,向伺服器傳送確認包ack,同時進入established狀態,三次握手完成。伺服器...
TCP 和 UDP 在socket程式設計中的區別
一 tcp與udp的區別 基於連線與無連線 對系統資源的要求 tcp較多,udp少 udp程式結構較簡單 流模式與資料報模式 tcp保證資料正確性,udp可能丟包 tcp保證資料順序,udp不保證 部分滿足以下幾點要求時,應該採用udp 面向資料報方式 網路資料大多為短訊息 擁有大量client 對...