1. 程式人生 > >Socket程式設計的UDP與TCP,應用在哪些地方

Socket程式設計的UDP與TCP,應用在哪些地方

隨著網路技術飛速發展,網速已不再是傳輸的瓶頸,UDP協議以其簡單、傳輸快的優勢,在越來越多場景下取代了TCP,如網頁瀏覽、流媒體、實時遊戲、物聯網。

1,網速的提升給UDP穩定性提供可靠網路保障

CDN服務商Akamai(NASDAQ: AKAM)報告從2008年到2015年7年時間,各個國家網路平均速率由1.5Mbps提升為5.1Mbps,網速提升近4倍。網路環境變好,網路傳輸的延遲、穩定性也隨之改善,UDP的丟包率低於5%,如果再使用應用層重傳,能夠完全確保傳輸的可靠性。

2,對比測試結果UDP效能優於TCP

為了提升瀏覽速度,Google基於TCP提出了SPDY協議以及HTTP/2。Google在Chrome上實驗基於UDP的QUIC協議,傳輸速率減少到100ms以內。

1

Google採用QUIC後連線速率能有效提升75%。
Google搜尋採用QUIC後頁面載入效能提升3%。
YouTube採用QUIC後重新緩衝次數減少了30%。

3, TCP設計過於冗餘,速度難以進一步提升

TCP為了實現網路通訊的可靠性,使用了複雜的擁塞控制演算法,建立了繁瑣的握手過程以及重傳策略。由於TCP內建在系統協議棧中,極難對其進行改進。

2

4UDP協議以其簡單、傳輸快的優勢,在越來越多場景下取代了TCP

4.1 網頁瀏覽

使用UDP協議有三個優點 :

  • 能夠對握手過程進行精簡,減少網路通訊往返次數;
  • 能夠對TLS加解密過程進行優化;
  • 收發快速,無阻塞。

4.2 流媒體

採用TCP,一旦發生丟包,TCP會將後續包快取起來,等前面的包重傳並接收到後再繼續傳送,延遲會越來越大。基於UDP的協議如WebRTC是極佳的選擇。

2010年google 通過收購 Global IP Solutions,獲得了WebRTC(網頁實時通訊,Web Real-Time Communication)技術,用於提升網頁視訊速率。

4.3 實時遊戲

對實時要求較為嚴格的情況下,採用自定義的可靠UDP協議,比如Enet、RakNet(使用者有sony online game、minecraft)等,自定義重傳策略,能夠把丟包產生的延遲降到最低,儘量減少網路問題對遊戲性造成的影響。
採用UDP的經典遊戲如FPS遊戲Quake、CS,著名的遊戲引擎Unity3D採用的也是RakNet。

4.4 物聯網

2014年google旗下的Nest建立Thread Group,推出了物聯網通訊協議Thread,完善物聯網通訊。

3

採用UDP有3個關鍵點:

  • 網路頻寬需求較小,而實時性要求高;
  • 大部分應用無需維持連線;
  • 需要低功耗。

小結

如今全球將近50%的人都在使用網際網路,人們不斷的追求更快、更好的服務,一切都在變化,在越來越多的領域,UDP將會搶佔TCP的主導地位。

相關推薦

Socket程式設計UDPTCP應用哪些地方

隨著網路技術飛速發展,網速已不再是傳輸的瓶頸,UDP協議以其簡單、傳輸快的優勢,在越來越多場景下取代了TCP,如網頁瀏覽、流媒體、實時遊戲、物聯網。1,網速的提升給UDP穩定性提供可靠網路保障CDN服務商Akamai(NASDAQ: AKAM)報告從2008年到2015年7年

從 0 開始學習 Linux 系列之「27.Socket 程式設計基礎(TCPUDP)」

Socket 介面簡介 Socket 套接字是由 BSD(加州大學伯克利分校軟體研發中心)開發的一套獨立於具體協議的網路程式設計介面,應用程式可以用這個介面進行網路通訊。要注意:Socket 不是一套通訊協議(HTTP,FTP 等是通訊協議),而是程式設計的介

Linux關於socket(深入UDPTCP區別)

socket之資料報套接字(UDP) 資料報套接字(SOCK_DGRAM) 資料報套接字定義了一種無連線的服務,資料通過相互獨立的報文進行傳輸,是無序的,並且不保證可靠,無差錯。使用資料報協議UDP協議。 socket之UDP實現 udp沒有伺服器和客戶端的概念,但是我們為了和前一篇文章

網路程式設計之網路通訊是什麼——UDPTCP的區別

      首先,補充一下其他的知識,會更加方便了解。      OSI模型:是ISO(國際標準化組織)組織在1985年研究的網路互聯模型,推薦所有公司使用這個規範來控制網路。這樣所有公司都有相同的規範,就能互聯了。  

UDP程式設計以及TCP的區別

UDP程式設計函式原型: int socket(int domain, int type, int protocol); int bind(int sockfd, const struct sockaddr* my_addr, int addrlen); /*

基於 SocketUDPTCP 程式設計介紹

一、概述 TCP(傳輸控制協議)和UDP(使用者資料報協議是網路體系結構TCP/IP模型中傳輸層一層中的兩個不同的通訊協議。 TCP:傳輸控制協議,一種面向連線的協議,給使用者程序提供可靠的全雙工的位元組流,TCP套介面是位元組流套介面(stream socket)

基於SocketUDPTCP程式設計介紹

main(){     int sock_fd,client_fd; /*sock_fd:監聽socket;client_fd:資料傳輸socket */     struct sockaddr_in ser_addr; /* 本機地址資訊 */     struct sockaddr_in cli_a

Linux C語言的Socket程式設計例子(TCPUDP

     套接字是一種程序間的通訊的方法,不同於以往介紹的程序間通訊方法的是,它並不侷限於同一臺計算機的資源,例如檔案系統空間,共享記憶體或者訊息佇列。套接字可以認為是對管道概念的擴充套件——一臺機器上的程序可以使用套接字與另一臺機器上的程序通訊。因此客戶與伺服器可以分散在網

socket程式設計(一)實現伺服器客戶端簡單通訊

本節主講客戶端向服務傳送資訊,伺服器轉發給客戶端,當然也可以稍微改一下程式碼可以實現互傳訊息,不再贅述。 難點在於伺服器端的程式碼思路: (1)主程式Socket socket=server.acc

Windows下C語言的Socket程式設計例子(TCPUDP

1 #include "stdafx.h" 2 #include <stdio.h> 3 #include <winsock2.h> 4 5 #pragma comment(lib,"ws2_32.lib") 6 7 int main(int argc, char

網絡 UDPTCP

套接字 OS udp協議 隨機 資源 創建 擁塞 超時 綁定 一張思維導圖搞懂 UTP與TCP tcp服務器一般情況下都需要綁定,否則客戶端找不到這個服務器 tcp客戶端一般不綁定,因為是主動鏈接服務器,所以只要確定好服務器的ip、port等信息就好,本地客戶端可以隨機

socket程式設計UDP協議以及注意事項

//伺服器 #include <stdlib.h> #include <stdio.h> #include <errno.h> #include <string.h> #include <unistd.h> #include <

【Java TCP/IP Socket程式設計】----NIO----TCP通道

NIO介紹 基本Java套接字對於小規模系統可以很好執行,涉及同時有上千個客戶端,就會出現問題,其中一客戶一執行緒的方式線上程的建立,維護和切換需要系統開銷較大,而使用執行緒池的方式雖然節省了一定的系統開銷,但是對於連線生存期比較長的協議,執行緒池的大小限制了系統可以同時服務的客戶端總數。隨著執

談談傳輸層的UDPTCP

傳輸層的概述 傳輸層為應用程序之間提供了端到端的邏輯通訊,在該層中主要有兩個協議:無連線的使用者資料報協議(UDP)和麵向連線的傳輸控制協議(TCP) 傳輸層的埠 運輸層用16位埠號來標誌一個埠,允許有65535個不同埠,特別要注意的是這些埠是隻針對本地才有意義的,兩臺不同的

UDPTCP的區別

https://blog.csdn.net/persistencegoing/article/details/84376427   TCP (Transmission Control Protocol)---傳輸控制協議,提供的是面向連線、可靠的位元組流服務。當客戶和伺服

【Linux】UDPTCP的對比並寫出TCPUDP的服務端

UDP   (1.)無連線            UDP在傳輸資料的時候不需要建立連線,可以直接傳輸。(這一點在UDP服務端程式中可以看到),因此傳輸速度比較快,適用於傳視訊,音訊。 (2.)傳輸層協議 (3.)不可靠傳輸             a:

C語言socket程式設計---udp通訊及廣播

上篇實現了TCP通訊的例子。由於專案中需要一個伺服器向多臺客戶端傳送訊息。 通過udp這種無連線的通訊,將client.c增加一句 /* 設定通訊方式對廣播,即本程式傳送的一個訊息,網路上所有主機均可以收到 */ yes = 1; setsockopt(fd

UDPTCP穿洞技術學習筆記

TCP 服務端的埠 複用為 客戶端的埠  ( 服務端傳送無歧義, 服務端接收無歧義, 客戶端傳送無歧義, 客戶端接收無歧義) 服務端的埠 複用為 服務端的埠   正常現象 客戶端的埠 複用為 服務端的埠   (客戶端傳送無歧義, 客戶端傳送無歧義,服務端傳送無歧義,  )

Windows socket程式設計 udp協議傳送封裝自定義幀

最近在出差,要在內網做個傳送自定義幀結構的資料的程式,一時間沒做過這類東西,在網上學習了許多新的概念,也回顧了網路程式設計課上所學的關於網路位元組序的相關知識,總結如下: 自定義幀結構如下: 需要用到的東西包括子系統編號,裝置編號,資訊型別,資料體長度,資料體 作為傳送

Socket程式設計 ——UDP 實驗報告

一 客戶端資料反射互動 (1)實驗內容 要求:利用資料報套接字實現資料傳輸 客戶端建立UDP套接字,向指定的服務端傳送資料; 服務端接收到新資料,顯示是誰傳送過來的,並把該資料回傳給傳送方;