The important thing in life is to have a great aim , and the determination

          常用鏈接

          統計

          IT技術鏈接

          保險相關

          友情鏈接

          基金知識

          生活相關

          最新評論

          TCP/UDP區別以及UDP如何實現可靠傳輸

          TCP和UDP是OSI模型中的運輸層中的協議。TCP提供可靠的通信傳輸,而UDP則常被用于讓廣播和細節控制交給應用的通信傳輸。


          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。


          TCP與UDP區別總結:

          1、TCP面向連接(如打電話要先撥號建立連接);UDP是無連接的,即發送數據之前不需要建立連接

          2、TCP提供可靠的服務。也就是說,通過TCP連接傳送的數據,無差錯,不丟失,不重復,且按序到達;UDP盡最大努力交付,即不保證可靠交付
          3、TCP面向字節流,實際上是TCP把數據看成一連串無結構的字節流;UDP是面向報文的
          UDP沒有擁塞控制,因此網絡出現擁塞不會使源主機的發送速率降低(對實時應用很有用,如IP電話,實時視頻會議等)
          4、每一條TCP連接只能是點到點的;UDP支持一對一,一對多,多對一和多對多的交互通信
          5、TCP首部開銷20字節;UDP的首部開銷小,只有8個字節

          6、TCP的邏輯通信信道是全雙工的可靠信道,UDP則是不可靠信道


          UDP如何實現可靠傳輸

          由于在傳輸層UDP已經是不可靠的連接,那就要在應用層自己實現一些保障可靠傳輸的機制

          簡單來講,要使用UDP來構建可靠的面向連接的數據傳輸,就要實現類似于TCP協議的

          超時重傳(定時器)

          有序接受 (添加包序號)

          應答確認 (Seq/Ack應答機制)

          滑動窗口流量控制等機制 (滑動窗口協議)

          等于說要在傳輸層的上一層(或者直接在應用層)實現TCP協議的可靠數據傳輸機制,比如使用UDP數據包+序列號,UDP數據包+時間戳等方法。

          目前已經有一些實現UDP可靠傳輸的機制,比如

          UDT(UDP-based Data Transfer Protocol

          基于UDP的數據傳輸協議(UDP-based Data Transfer Protocol,簡稱UDT)是一種互聯網數據傳輸協議。UDT的主要目的是支持高速廣域網上的海量數據傳輸,而互聯網上的標準數據傳輸協議TCP在高帶寬長距離網絡上性能很差。 顧名思義,UDT建于UDP之上,并引入新的擁塞控制和數據可靠性控制機制。UDT是面向連接的雙向的應用層協議。它同時支持可靠的數據流傳輸和部分可靠的數據報傳輸。 由于UDT完全在UDP上實現,它也可以應用在除了高速數據傳輸之外的其它應用領域,例如點到點技術(P2P),防火墻穿透,多媒體數據傳輸等等。

          posted on 2017-07-19 22:25 鴻雁 閱讀(469) 評論(0)  編輯  收藏 所屬分類: IT技術相關

          主站蜘蛛池模板: 广安市| 申扎县| 清水河县| 天全县| 九龙坡区| 上犹县| 时尚| 宁都县| 陇西县| 同仁县| 抚顺县| 如皋市| 敦化市| 漠河县| 绍兴市| 舒城县| 宿迁市| 昌图县| 泊头市| 裕民县| 加查县| 永康市| 彰武县| 璧山县| 凤阳县| 曲松县| 濮阳市| 长子县| 巴东县| 卢龙县| 石门县| 唐海县| 寿光市| 麻江县| 巴彦淖尔市| 长治市| 浦东新区| 永丰县| 巴中市| 遵义县| 昌都县|