UDP的意思是什么 UDP與TCP的區(qū)別

字號:


    大家有沒有聽說過“udp”這個新詞,知道它的意思是什么嗎?下面是出國留學網(wǎng)小編為大家整理的“UDP的意思是什么 UDP與TCP的區(qū)別”,歡迎參閱。內(nèi)容僅供參考,想要了解更多關于詞義解釋的內(nèi)容,請關注出國留學實用資料欄目。
    UDP的意思是什么 UDP與TCP的區(qū)別
    udp的意思:是User Datagram Protocol的簡稱, 中文名是用戶數(shù)據(jù)包協(xié)議,是 OSI 參考模型中一種無連接的傳輸層協(xié)議,提供面向事務的簡單不可靠信息傳送服務。UDP 協(xié)議基本上是IP協(xié)議與上層協(xié)議的接口。它是IETF RFC 768是UDP的正式規(guī)范。UDP協(xié)議的主要作用是將網(wǎng)絡數(shù)據(jù)流量壓縮成數(shù)據(jù)包的形式。一個典型的數(shù)據(jù)包就是一個二進制數(shù)據(jù)的傳輸單位。...
    詞性:abbr. 用戶數(shù)據(jù)報協(xié)議(=User Datagram Protocol)
    Uliana Uonuki Ulisso Uzhviy Uliger Uborka Uzurov ugt. UGPase uberty
    udp的作用:
    為了在給定的主機上能識別多個目的地址,同時允許多個應用程序在同一臺主機上工作并能獨立地進行數(shù)據(jù)包的發(fā)送和接收,設計 用戶數(shù)據(jù)報協(xié)議UDP。
    使用UDP協(xié)議包括: TFTP、 SNMP、NFS、DNS、BOOTP。
    UDP使用底層的互聯(lián)網(wǎng)協(xié)議來傳送報文,同IP一樣提供不可靠的無連接數(shù)據(jù)包傳輸服務。它不提供報文到達確認、排序、及流量控制等功能。
    UDP適用于一次只傳送少量數(shù)據(jù)、對可靠性要求不高的應用環(huán)境。比如,我們經(jīng)常使用“ping”命令來測試兩臺主機之間TCP/IP通信是否正常,其實“ping”命令的原理就是向?qū)Ψ街鳈C發(fā)送UDP數(shù)據(jù)包,然后對方主機確認收到數(shù)據(jù)包,如果數(shù)據(jù)包是否到達的消息及時反饋回來,那么網(wǎng)絡就是通的。例如,在默認狀態(tài)下,一次“ping”操作發(fā)送4個數(shù)據(jù)包(如圖2所示)。大家可以看到,發(fā)送的數(shù)據(jù)包數(shù)量是4包,收到的也是4包(因為對方主機收到后會發(fā)回一個確認收到的數(shù)據(jù)包)。這充分說明了UDP協(xié)議是面向非連接的協(xié)議,沒有建立連接的過程。正因為UDP協(xié)議沒有連接的過程,所以它的通信效果高;但也正因為如此,它的可靠性不如TCP協(xié)議高。QQ就使用UDP發(fā)消息,因此有時會出現(xiàn)收不到消息的情況。
    UDP與TCP的區(qū)別:
    1.TCP是面向連接的運輸層協(xié)議,UDP是無連接的。
    2.每一條TCP連接只能有兩個端點,UDP支持一對一、一對多、多對一和多對多的通信。
    3.TCP提供可靠交付的服務,UDP使用盡最大努力交付。
    4.TCP面向字節(jié)流,UDP面向報文。
    5.TCP有擁塞控制,UDP沒有擁塞控制。
    6.TCP首部開銷較大最少20個字節(jié),UDP首部開銷較小只有8個字節(jié)。
    TCP與UDP基本區(qū)別
    1.基于連接與無連接
    2.TCP要求系統(tǒng)資源較多,UDP較少;
    3.UDP程序結(jié)構(gòu)較簡單
    4.流模式(TCP)與數(shù)據(jù)報模式(UDP);
    5.TCP保證數(shù)據(jù)正確性,UDP可能丟包
    6.TCP保證數(shù)據(jù)順序,UDP不保證
    UDP應用場景:
    1.面向數(shù)據(jù)報方式
    2.網(wǎng)絡數(shù)據(jù)大多為短消息
    3.擁有大量Client
    4.對數(shù)據(jù)安全性無特殊要求
    5.網(wǎng)絡負擔非常重,但對響應速度要求高
    具體編程時的區(qū)別
    1.socket()的參數(shù)不同
    2.UDP Server不需要調(diào)用listen和accept
    3.UDP收發(fā)數(shù)據(jù)用sendto/recvfrom函數(shù)
    4.TCP:地址信息在connect/accept時確定
    5.UDP:在sendto/recvfrom函數(shù)中每次均 需指定地址信息
    6.UDP:shutdown函數(shù)無效
    編程區(qū)別
    通常我們在說到網(wǎng)絡編程時默認是指TCP編程,即用前面提到的socket函數(shù)創(chuàng)建一個socket用于TCP通訊,函數(shù)參數(shù)我們通常填為SOCK_STREAM。即socket(PF_INET, SOCK_STREAM, 0),這表示建立一個socket用于流式網(wǎng)絡通訊。
    SOCK_STREAM這種的特點是面向連接的,即每次收發(fā)數(shù)據(jù)之前必須通過connect建立連接,也是雙向的,即任何一方都可以收發(fā)數(shù)據(jù),協(xié)議本身提供了一些保障機制保證它是可靠的、有序的,即每個包按照發(fā)送的順序到達接收方。
    而SOCK_DGRAM這種是User Datagram Protocol協(xié)議的網(wǎng)絡通訊,它是無連接的,不可靠的,因為通訊雙方發(fā)送數(shù)據(jù)后不知道對方是否已經(jīng)收到數(shù)據(jù),是否正常收到數(shù)據(jù)。任何一方建立一個socket以后就可以用sendto發(fā)送數(shù)據(jù),也可以用recvfrom接收數(shù)據(jù)。根本不關心對方是否存在,是否發(fā)送了數(shù)據(jù)。它的特點是通訊速度比較快。大家都知道TCP是要經(jīng)過三次握手的,而UDP沒有。
    基于上述不同,UDP和TCP編程步驟也有些不同,如下:
    TCP:
    TCP編程的服務器端一般步驟是:
    1、創(chuàng)建一個socket,用函數(shù)socket();
    2、設置socket屬性,用函數(shù)setsockopt(); * 可選
    3、綁定IP地址、端口等信息到socket上,用函數(shù)bind();
    4、開啟監(jiān)聽,用函數(shù)listen();
    5、接收客戶端上來的連接,用函數(shù)accept();
    6、收發(fā)數(shù)據(jù),用函數(shù)send()和recv(),或者read()和write();
    7、關閉網(wǎng)絡連接;
    8、關閉監(jiān)聽;
    TCP編程的客戶端一般步驟是:
    1、創(chuàng)建一個socket,用函數(shù)socket();
    2、設置socket屬性,用函數(shù)setsockopt();* 可選
    3、綁定IP地址、端口等信息到socket上,用函數(shù)bind();* 可選
    4、設置要連接的對方的IP地址和端口等屬性;
    5、連接服務器,用函數(shù)connect();
    6、收發(fā)數(shù)據(jù),用函數(shù)send()和recv(),或者read()和write();
    7、關閉網(wǎng)絡連接;
    UDP:
    與之對應的UDP編程步驟要簡單許多,分別如下:
    UDP編程的服務器端一般步驟是:
    1、創(chuàng)建一個socket,用函數(shù)socket();
    2、設置socket屬性,用函數(shù)setsockopt();* 可選
    3、綁定IP地址、端口等信息到socket上,用函數(shù)bind();
    4、循環(huán)接收數(shù)據(jù),用函數(shù)recvfrom();
    5、關閉網(wǎng)絡連接;
    UDP編程的客戶端一般步驟是:
    1、創(chuàng)建一個socket,用函數(shù)socket();
    2、設置socket屬性,用函數(shù)setsockopt();* 可選
    3、綁定IP地址、端口等信息到socket上,用函數(shù)bind();* 可選
    4、設置對方的IP地址和端口等屬性;
    5、發(fā)送數(shù)據(jù),用函數(shù)sendto();
    6、關閉網(wǎng)絡連接;
    TCP和UDP是OSI模型中的運輸層中的協(xié)議。TCP提供可靠的通信傳輸,而UDP則常被用于讓廣播和細節(jié)控制交給應用的通信傳輸。
    UDP補充:
    UDP不提供復雜的控制機制,利用IP提供面向無連接的通信服務。并且它是將應用程序發(fā)來的數(shù)據(jù)在收到的那一刻,立刻按照原樣發(fā)送到網(wǎng)絡上的一種機制。即使是出現(xiàn)網(wǎng)絡擁堵的情況下,UDP也無法進行流量控制等避免網(wǎng)絡擁塞的行為。此外,傳輸途中如果出現(xiàn)了丟包,UDO也不負責重發(fā)。甚至當出現(xiàn)包的到達順序亂掉時也沒有糾正的功能。如果需要這些細節(jié)控制,那么不得不交給由采用UDO的應用程序去處理。換句話說,UDP將部分控制轉(zhuǎn)移到應用程序去處理,自己卻只提供作為傳輸層協(xié)議的最基本功能。UDP有點類似于用戶說什么聽什么的機制,但是需要用戶充分考慮好上層協(xié)議類型并制作相應的應用程序。、
    傳輸控制協(xié)議(Transmission Control Protocol,TCP)是一種面向連接的、可靠的、基于字節(jié)流的運輸層通信協(xié)議,通常由IETF的RFC 793說明。在簡化的計算機網(wǎng)絡OSI模型中,它完成運輸層所指定的功能。
    與 TCP 不同, UDP 并不提供對 IP 協(xié)議的可靠機制、流控制以及錯誤恢復功能等。由于 UDP 比較簡單, UDP 頭包含很少的字節(jié),比 TCP 負載消耗少。
    UDP 適用于不需要 TCP 可靠機制的情形,比如,當高層協(xié)議或應用程序提供錯誤和流控制功能的時候。 UDP 是傳輸層協(xié)議,服務于很多知名應用層協(xié)議,包括網(wǎng)絡文件系統(tǒng)(NFS)、簡單網(wǎng)絡管理協(xié)議(SNMP)、域名系統(tǒng)(DNS)以及簡單文件傳輸系統(tǒng)(TFTP)。
    TCP補充:
    TCP充分實現(xiàn)了數(shù)據(jù)傳輸時各種控制功能,可以進行丟包的重發(fā)控制,還可以對次序亂掉的分包進行順序控制。而這些在UDP中都沒有。此外,TCP作為一種面向有連接的協(xié)議,只有在確認通信對端存在時才會發(fā)送數(shù)據(jù),從而可以控制通信流量的浪費。TCP通過檢驗和、序列號、確認應答、重發(fā)控制、連接管理以及窗口控制等機制實現(xiàn)可靠性傳輸。
    TCP與UDP區(qū)別總結(jié):
    1.UDP速度比TCP快
    2.UDP有消息邊界
    3.UDP可以一對多傳輸
    4.UDP可靠性不如TCP
    5.UDP不像TCP那樣能保證有序傳輸
    UDP速度比TCP快
    由于UDP不需要先與對方建立連接,也不需要傳輸確認,因此其數(shù)據(jù)傳輸速度比TCP快得多。
    UDP有消息邊界
    使用UDP不需要考慮消息邊界問題,使用上比TCP簡單
    UDP可以一對多傳輸
    利用UDP可以使用廣播或組播的方式同時向子網(wǎng)上的所有客戶發(fā)送信息。這一點也比TCP方便。
    UDP可靠性不如TCP
    與TCP不同,UDP并不提供數(shù)據(jù)傳送的保證機制。如果在從發(fā)送方到接收方的傳遞過程中出現(xiàn)數(shù)據(jù)報的丟失,協(xié)議本身并不能做出任何檢測或提示。因此,通常人們把UDP稱為不可靠的傳輸協(xié)議。
    UDP不像TCP那樣能保證有序傳輸
    UDP不能確保數(shù)據(jù)的發(fā)送和接收順序。對于突發(fā)性的數(shù)據(jù)報,有可能會亂序。事實上,UDP的這種亂序性基本上很少出現(xiàn),通常只會在網(wǎng)絡非常擁擠的情況下才有可能發(fā)生。