udp/tcp

1. 理解:窗口和滑動窗口
TCP的流量控制
TCP使用窗口機制進行流量控制
什麼是窗口?

連接建立時,各端分配一塊緩衝區用來存儲接收的數據,並將緩衝區的尺寸發送給另一端

接收方發送的確認信息中包含了自己剩餘的緩衝區尺寸

剩餘緩衝區空間的數量叫做窗口

2. TCP的流控過程(滑動窗口)

2. TCP 與UDP的區別 

很多文章都說TCP協議可靠,UDP協議不可靠!爲什麼前者可靠,後者不可靠呢?既然UDP協議不可靠,爲什麼還要使用它呢?所謂的TCP協議是面向連接的協議,面向連接是什麼呢?   
TCP和UDP都是傳輸層的協議!從編程的角度看,就是兩個模塊(模塊就是代碼的集合,一系列代碼的組合提供相應的功能!模塊化最終目的就是:分工協作!模塊化好處:便於擴展開發以及維護!)。   
先說TCP協議:   
這個協議,是面向的連接!面向連接這個概念,我們要從物理層看起。大家都知道,因爲“信道複用技術”的迅猛發展,才促使了計算機網絡的發展!如果沒有“信道複用技術”,那麼單條線路上(這裏的線路指物理傳輸介質,例如:雙絞線、光纖、電話線)單位時間內只能供一臺計算機使用!還是舉例說明:就拿你自己的計算機來說,你跟同學“小明”聊天的時候,就不能跟另外一位同學“小強”聊天,如果你想同時跟兩位同學聊天,那麼你就得裝兩條線路!那麼同時與第三位、第四位同學。。。第N位同學聊天的時候,你需要裝幾根線路?全世界人民聊天的時候,又需要裝幾根線路?   
“信道複用技術”實現了,在同一條線路上,單位時間內可供X臺計算機同時通信!Toad知道以下幾種複用技術:   
  1、頻分複用    2、時分複用    3、波分複用    4、碼分複用    5、空分複用    6、統計複用    7、極化波複用   
關於“信道複用技術”更深層次的問題,需要你自己去研究!   
上面我們提到了“信道複用技術”!知道了這一點,我們就很容易明白“物理信道”上的“虛擬信道”概念了!不同的信道複用技術,使用不同的複用技術,目的就是創建“虛擬信道”。   
一個TCP協議連接其實就是在物理線路上創建的一條“虛擬信道”。這條“虛擬信道”建立後,在TCP協議發出FIN包之前(兩個終端都會向對方發送一個FIN包),是不會釋放的。正因爲這一點,TCP協議被稱爲面向連接的協議!   


UDP協議,一樣會在物理線路上創建一條“虛擬信道”,否則UDP協議無法傳輸數據!但是,當UDP協議傳完數據後,這條“虛擬信道”就被立即註銷了!因此,稱UDP是不面向連接的協議! 

TCP協議和UDP協議爲什麼會共存?

1. 大家要知道,一種物理線路,單位時間內,能夠創建的“虛擬信道”是有限的!

2. 使用TCP協議傳輸數據,當數據從A端傳到B端後,B端會發送一個確認包(ACK包)給A端,告知A端數據我已收到!UDP協議就沒有這種確認機制!這就是爲什麼說TCP協議可靠,UDP協議不可靠. 

QQ普通會員就是使用的UDP協議進行傳輸數據!既然UDP協議自身沒有確認機制,這個工作可以交給應用層的進程來完成(QQ)!大家使用QQ的時候,感覺出錯的機率還是非常小吧!當然,把這個確認工作完全交給QQ自身來做,就直接導致了,QQ軟件體積增大!   

 

有些應用,對數據傳輸可靠性要求非常高,例如大家瀏覽網頁,通過網頁註冊帳號、轉帳等服務,這是不容許出錯的,使用TCP協議能把出錯的可能性降到最低(當然,網絡自身很糟糕,TCP協議也沒辦法)。但是,提供這種可靠服務,會加大網絡帶寬的開銷,因爲“虛擬信道”是持續存在的,同時網絡中還會出現大量的ACK和FIN包!  

  因此,魚和熊掌不可兼得,需根據實際情況選擇傳輸協議.TCP協議提供了可靠的數據傳輸,但是其擁塞控制、數據校驗、重傳機制的網絡開銷很大,不適合實時通信,所以選擇開銷很小的UDP協議來傳輸數據。   

UDP 協議是無連接的數據傳輸協議並且無重傳機制,會發生丟包、收到重複包、亂序等情況。而對於數據精確性要求不高的狀態數據以及視頻數據,丟包的影響不大。因爲會不斷收到新的包,丟失的個別包會有新的包來覆蓋,所以只需在遠程控制系統的通信部分自行處理亂序及重複包的問題,而對於丟包的問題一般不作處理。    但對於命令包這種需要精確收發的數據, 可在程序的開發中加入丟包重發和超時丟棄的處理。 當然,如果開發的是對於實時性要求不高的事件型控制命令的傳輸,不希望發生指令的丟失也可以直接採用TCP協議。TCP的重傳機制正好適合這種情況。   

 

非面向連接的傳輸協議在數據傳輸之前不建立連接,而是在每個中間節點對非面向連接的包和數據包進行路由。沒有點到點的連接,非面向連接的協議,如UDP,是不可靠的連接。當一個UDP數據包在網絡中移動時,發送過程並不知道它是否到達了目的地,除非應用層已經確認了它已到達的事實。非面向連接的協議也不能探測重複的和亂序的包。標準的專業術語用“不可靠”來描述UDP。在現代網絡中,UDP並不易於導致傳輸失敗,但是你也不能肯定地說它是可靠的


TCP和UDP都是傳輸層的協議!


應用層 (QQ)
物理連接層
各自協議使用的常用端口:如http, https, tcp, udp, ftp等等

TCP:
FTP:21, Telnet:23, SMTP:25

UDP:
DNS:53, TFTP:69, SNMP:161, RIP:520

https:
http:80
發佈了8 篇原創文章 · 獲贊 18 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章