運輸層:
11、tcp與udp的區別及應用場景
tcp和udp的區別:
tcp是面向連線的傳輸層協議,傳輸資料之前必須先建立連線;udp是無連線傳輸。
tcp是點對點服務,一條tcp連線只有連個斷點;udp是多對多連線互動通訊。
tcp是可靠連線:無差錯、無重複、無丟失、按序到達;udp:盡最大努力交付,不保證可靠性。
tcp由擁塞控制和流量控制保證資料傳輸的安全性;udp無擁塞控制,網路擁塞不影響傳送速率。
tcp是動態報文。即tcp報文長度是根據接受方視窗大小和當前網路擁塞情況來決定的;udp是面向報文的,不合併、不拆分,保留上面下來的報文邊界。
tcp首部開銷大,20個位元組;udp首部僅有8個位元組(源埠、目的埠、資料長度、校驗和)
12、tcp首部報文格式(syn、ack、fin、rst必須知道)
urg 指示報文段裡存在著被傳送方的上層實體標記為」緊急」資料,當urg=1時,其後的緊急指標指示緊急資料在當前資料段中的位置(相對於當前序列號的位元組偏移量),tcp接收方必須通知上層實體。
ack 當ack=0時,表示該資料段不包含確認資訊,當ack=1時,表示該報文段包括乙個對已被成功接收報文段的確認。
psh 當psh=1時,接收方在收到資料後立即將資料交給上層,而不是直到整個緩衝區滿。
rst 用於重置乙個已經混亂的連線(如主崩潰),也可用於拒絕乙個無效的資料段或者拒絕乙個連線請求。一般而言,如果你得到的資料段被設定了rst位,那說明你這一端有問題了。
syn 用於建立連線過程,在連線請求中,syn=1和ack=0表示該資料段沒有使用捎帶的確認域,而連線應答捎帶乙個確認,即syn=1和ack=1。注:捎帶是指對客戶機到伺服器資料的確認被裝載在乙個承載伺服器到客戶機的資料
fin 用於釋放乙個連線,表示傳送方已經沒有資料要傳輸了。此時,接收方可能繼續接收資料,好在syn和fin資料段都有序列號,從而保證了這兩種資料段以正確順序被處理
13、tcp滑動視窗原理
tcp 協議通過採用滑動視窗的方式控制資料流的傳輸。在傳輸層中, 資料按照一定的
格式打成大小相同的包。每乙個滑動視窗中包含一定數目的資料報, 滑動視窗的大小可以
進行調整。每台網路上的主機維護乙個傳送視窗和乙個接收視窗。傳送方一次可傳送相當於滑動視窗大小的資料報數目, 並在每個資料報前新增包頭資訊, 然後等待接收方返回確認資訊。由於tcp 是面向連線的協議, 可以保證資料傳輸的完整性和準確性, 當傳輸過程中發生丟包時, 接收方會要求傳送方從斷點處重傳資料。
當tcp 從應用層中接收到資料時, tcp 將乙個帶序列號的報頭加入資料報並將其交給
ip, 由ip 將它傳送到目標主機。
當每乙個資料報傳送時, 源主機設定重發計時器, 描述在重新傳送資料報前將等待
ack 的時間。在一般情況下, 當第一次傳送失敗後, 重發計時器的重試時間將設定為前一
次的兩倍。在傳送視窗中有每乙個資料報的備份, 直到收到ack。
當資料報到達目的主機接收視窗, 它們按照序列號放置。當目的主機接收到連續的數
據段時, 就向源主機傳送乙個關於資料的認可( ack) 的應答報文, 其中帶有當前視窗尺寸。一旦源主機接收到資料報並認可, 傳送視窗將進行滑動。如果在重發計時器設定的時
間內, 源主機沒有接收到對現存資料的認可, 資料將重新傳送。重發資料報將加重網路和源主機的負擔。
14、tcp超時重傳時間選擇
第二次的rtt1要大於第一次的rtt0,於是第一次的rt0的選擇值在這裡就不適合了。針對這乙個複雜的問題,我們不能用某次測量的值來計算超時重傳時間rto。這時就需要借鑑中華名族的優秀傳統-折中。利用每次測量的rtt樣本,然後取乙個加權平均值rtts。
新的加權平均往返時間rtts = (1 - a)x 舊的rtts + a x 新的rtt樣本。(其中0 < a < 1)
如果 a很小,趨近於0,說明新的rtt樣本作用不大。
如果 a 很大,趨近於1,則說明舊的rtts對新的rtts的影響很小。
現在通用的a的取值為1/8,即0.125。
顯然,新的rt0的值應該要略大於rtts的值。
rto = rtts + 4 x rttd(rttd為rtt偏差的加權平均)
rttd1 = rtt1 / 2
新的rttd = (1-b) x 舊的rttd+b x |rtts-新的rtt樣本|。 (其中0< b<1)
b的建議取值為1/4,即0.25
15、tcp流程控制
tcp是利用滑動視窗機制就可以實施流量控制。原理這就是運用tcp報文段中的視窗大小欄位來控制,傳送方的傳送視窗不可以大於接收方發回的視窗大小。
16、tcp擁塞控制(一定要弄清楚與流量控制的區別)
如果把視窗定義的很大,傳送端連續傳送大量的資料,可能會造成網路的擁堵,甚至造成網路的癱瘓。所以tcp為了防止這種情況進行擁塞控制。
慢啟動:定義擁塞視窗,一開始將該視窗大小設為1,之後每次收到確認應答(經過乙個rtt),將擁塞視窗大小*2。
擁塞避免:設定慢啟動閾值,一般開始設定為65536。擁塞避免是當擁塞視窗大小達到這個閾值,擁塞視窗的值不在指數上公升,而是加法增加。將報文段的超市重傳看作擁塞,則一旦發生擁塞,先將閾值設為當前視窗大小的一般,並且將視窗大小設為1,再次進入慢啟動過程。
快速重傳:在遇到3此重複應答時,代表收到3個報文段,但是之前的1個段丟失了便對它進行立即重傳。然後先將閾值設為當前視窗大小的一般,然後將擁塞視窗大小設為慢啟動閾值+3的大小。
這樣:在tcp通訊是,網路吞吐量呈現逐漸的上公升,並且隨著擁堵來減低吞吐量,再進入慢慢上公升的過程,網路不會輕易發生癱瘓。
17、tcp三次握手及狀態變化。為啥不是兩次握手?
確保自己訊息已發出和已收到
18、tcp四次揮手及狀態變化。為啥不是三次揮手?
關閉連線可能不在同一時間點
19、tcp連線釋放中time_wait狀態的作用
原因1:防止連線關閉時四次揮手中的最後一次ack丟失:
21、tcp粘包
tcp粘包就是指傳送方傳送的若干包資料到達接收方時粘成了一包,從接收緩衝區來看,後一包資料的頭緊接著前一包資料的尾,出現粘包的原因是多方面的,可能是來自傳送方,也可能是來自接收方。
造成tcp粘包的原因
(1)傳送方原因
tcp預設使用nagle演算法(主要作用:減少網路中報文段的數量),而nagle演算法主要做兩件事:
(2)接收方原因
tcp接收到資料報時,並不會馬上交到應用層進行處理,或者說應用層並不會立即處理。實際上,tcp將接收到的資料報儲存在接收快取裡,然後應用程式主動從快取讀取收到的分組。這樣一來,如果tcp接收資料報到快取的速度大於應用程式從快取中讀取資料報的速度,多個包就會被快取,應用程式就有可能讀取到多個首尾相接粘到一起的包。
22、tcp心跳包
23、路由器與交換機的區別
我們可以看出這兩者的主要工作就是**資料,但是不同之處是,依靠的位址不同,這是乙個根本區別!
路由器內有乙份路由表,裡面有它的定址資訊(就像是一張地圖),它收到網路層的資料報後,會根據路由表和選路演算法將資料報**到下一站(可能是路由器、交換機、目的主機)
交換機內有一張mac表,裡面存放著和它相連的所有裝置的mac位址,它會根據收到的資料幀的首部資訊內的目的mac位址在自己的表中查詢,如果有就**,如果沒有就放棄
24、udp如何實現可靠傳輸
只能通過應用層來實現了。實現的方式可以參照tcp可靠性傳輸的方式,只是實現不在傳輸層,實現轉移到了應用層。
實現確認機制、重傳機制、視窗確認機制。
如果你不利用linux協議棧以及上層socket機制,自己通過抓包和發包的方式去實現可靠性傳輸,那麼必須實現如下功能:
傳送:包的分片、包確認、包的重發
接收:包的調序、包的序號確認
目前有如下開源程式利用udp實現了可靠的資料傳輸。分別為rudp、rtp、udt。
3.1rudp
rudp 提供一組資料服務質量增強機制,如擁塞控制的改進、重發機制及淡化伺服器演算法等,從而在包丟失和網路擁塞的情況下, rtp 客戶機(實時位置)面前呈現的就是乙個高質量的 rtp 流。在不干擾協議的實時特性的同時,可靠 udp 的擁塞控制機制允許 tcp 方式下的流控制行為。
3.3udt
基於udp的資料傳輸協議(udp-baseddata transfer protocol,簡稱udt)是一種網際網路資料傳輸協議。udt的主要目的是支援高速廣域網上的海量資料傳輸,而網際網路上的標準資料傳輸協議tcp在高頻寬長距離網路上效能很差。顧名思義,udt建於udp之上,並引入新的擁塞控制和資料可靠性控制機制。udt是面向連線的雙向的應用層協議。它同時支援可靠的資料流傳輸和部分可靠的資料報傳輸。由於udt完全在udp上實現,它也可以應用在除了高速資料傳輸之外的其它應用領域,例如點到點技術(p2p),防火牆穿透,多**資料傳輸等等。
計算機網路知識點二
對稱金鑰加密是指加密和解密使用同乙個金鑰的方式,這種方式存在的最大問題就是金鑰傳送問題,即如何安全地將金鑰發給對方 而非對稱加密是指使用一對非對稱金鑰,即公鑰和私鑰,公鑰可以隨意發布,但私鑰只有自己知道。傳送密文的一方使用對方的公鑰進行加密處理,對方接收到加密資訊後,使用自己的私鑰進行解密。由於非對...
計算機網路知識點
internet protocol有7層。卡車運硬碟問題 相同時間內兩種方案要傳輸相同的資料量。tb gb,b means byte,1 byte 8 bits.what is a connection it consists of four values 1.source ip 2.source ...
計算機網路知識點
應用層 http 傳輸層 tcp,udp 網路層 ip 資料鏈路層 mac 物理層 網線 傳輸層中用tcp協議傳送資料 三次握手 syn 同步 ack 答覆 fin 結束 6.http的請求報文 請求行 request line 請求頭部 header 空行,請求資料 requesdata 請求行 ...