網上很多文章都說tcp協議可靠,udp協議不可靠!為什麼前者可靠,後者不可靠呢?既然udp協議不可靠,為什麼還要使用它呢?所謂的tcp協議是面向連線的協議,面向連線是什麼呢?這篇文章,我們就是要弄懂以上問題!
tcp和udp都是傳輸層的協議!從程式設計的角度看,就是兩個模組(模組就是**的集合,一系列**的組合提供相應的功能!模組化最終目的就是:分工協作!模組化好處:便於擴充套件開發以及維護!)。
先說tcp協議:
這個協議,是面向的連線!面向連線這個概念,我們要從物理層看起。大家都知道,因為「通道復用技術」的迅猛發展,才促使了計算機網路的發展!如果沒有「通道復用技術」,那麼單條線路上(這裡的線路指物理傳輸介質,例如:雙絞線、光纖、**線)單位時間內只能供一台計算機使用!還是舉例說明:就拿你自己的計算機來說,你跟同學「小明」聊天的時候,就不能跟另外一位同學「小強」聊天,如果你想同時跟兩位同學聊天,那麼你就得裝兩條線路!那麼同時與第三位、第四位同學。。。第n位同學聊天的時候,你需要裝幾根線路?全世界人民聊天的時候,又需要裝幾根線路?
「通道復用技術」實現了,在同一條線路上,單位時間內可供x臺計算機同時通訊!toad知道以下幾種復用技術:
1、頻分復用
2、時分復用
3、波分復用
4、碼分復用
5、空分復用
6、統計復用
7、極化波復用
關於「通道復用技術」更深層次的問題,需要你自己去研究!toad在這方面的知識很薄弱。
上一講,我們提到了「通道復用技術」!知道了這一點,我們就很容易明白「物理通道」上的「虛擬通道」概念了!不同的通道復用技術,使用不同的復用技術,目的就是建立「虛擬通道」。
乙個tcp協議連線其實就是在物理線路上建立的一條「虛擬通道」。這條「虛擬通道」建立後,在tcp協議發出fin包之前(兩個終端都會向對方傳送乙個fin包),是不會釋放的。正因為這一點,tcp協議被稱為面向連線的協議!
udp協議,一樣會在物理線路上建立一條「虛擬通道」,否則udp協議無法傳輸資料!但是,當udp協議傳完資料後,這條「虛擬通道」就被立即登出了!因此,稱udp是不面向連線的協議!
大家要知道,一種物理線路,單位時間內,能夠建立的「虛擬通道」是有限的!從這個問題,大家應該明白了tcp協議和udp協議為什麼會共存了吧,然而,這只是其中乙個原因而已!
那為什麼又說tcp協議可靠,udp協議不可靠呢?以上說的是乙個原因,還有乙個原因是:使用tcp協議傳輸資料,當資料從a端傳到b端後,b端會傳送乙個確認包(ack包)給a端,告知a端資料我已收到!udp協議就沒有這種確認機制!這一點,我們在做tcp協議首部分析時,會詳加解釋!
qq普通會員就是使用的udp協議進行傳輸資料!既然udp協議自身沒有確認機制,這個工作可以交給應用層的程序來完成(qq)!大家使用qq的時候,感覺出錯的機率還是非常小吧!當然,把這個確認工作完全交給qq自身來做,就直接導致了,qq軟體體積增大!
有些應用,對資料傳輸可靠性要求非常高,例如大家瀏覽網頁,通過網頁註冊帳號、轉帳等服務,這是不容許出錯的,使用tcp協議能把出錯的可能性降到最低(當然,網路自身很糟糕,tcp協議也沒辦法)。但是,提供這種可靠服務,會加大網路頻寬的開銷,因為「虛擬通道」是持續存在的,同時網路中還會出現大量的ack和fin包!
因此,魚和熊掌不可兼得,需,根據實際情況選擇傳輸協議
---------------------------------------
tcp協議提供了可靠的資料傳輸,但是其擁塞控制、資料校驗、重傳機制的網路開銷很大,不適合實時通訊,所以選擇開銷很小的udp協議來傳輸資料。
但對於命令包這種需要精確收發的資料, 可在程式的開發中加入丟包重發和超時丟棄的處理。 當然,如果開發的是對於實時性要求不高的事件型控制命令的傳輸,不希望發生指令的丟失也可以直接採用tcp協議。tcp的重傳機制正好適合這種情況。
非面向連線的傳輸協議在資料傳輸之前不建立連線,而是在每個中間節點對非面向連線的包和資料報進行路由。沒有點到點的連線,非面向連線的協議,如udp,是不可靠的連線。當乙個udp資料報在網路中移動時,傳送過程並不知道它是否到達了目的地,除非應用層已經確認了它已到達的事實。非面向連線的協議也不能探測重複的和亂序的包。標準的專業術語用「不可靠」來描述udp。在現代網路中,udp並不易於導致傳輸失敗,但是你也不能肯定地說它是可靠的。
TCP協議與UDP協議的區別
tcp建立連線要進行3次握手,而斷開連線要進行4次 1 當主機a完成資料傳輸後,將控制位fin置1,提出停止tcp連線的請求 2 主機b收到fin後對其作出響應,確認這一方向上的tcp連線將關閉,將ack置1 3 由b 端再提出反方向的關閉請求,將fin置1 4 主機a對主機b的請求進行確認,將ac...
TCP協議與UDP協議的區別
tcp協議和ucp協議與tcp ip協議的聯絡,一直都是說tcp ip協議與udp協議的區別。所以我想解釋一點的是tcp ip協議是乙個協議簇。裡面包括很多協議的。udp只是其中的乙個。之所以命名為tcp ip協議,因為tcp,ip協議是兩個很重要的協議,就用他兩命名了。那首先我們先總結幾個區別 1...
TCP協議與UDP協議的區別
tcp協議與udp協議的區別 tcp面向位元組流,udp面向資料報 tcp協議較為複雜,udp協議較為簡單 tcp是可靠連線,udp不可靠 tcp的可靠性體現於 1.確認應答機制 三次握手,四次揮手 2.資料的按序到達 3.超時重傳 4.去重 1到4的保證利用32位序號和確認序號來保證 5.流量控制...