RTT(Round-Trip Time):往返時延。是指數據從網路一端傳到另一端所需的時間。通常,時延由發送時延、傳播時延、排隊時延、處理時延四個部分組成。
(1)發送時延
發送時延是結點將數據分組發送到傳輸媒介所需要的時間,也就是從分組的第一個比特開始發送算起,到最後一個比特發送完畢所需要的時間。顯然,發送時延與網路介面/信道的傳輸速率成反比,與數據分組的長度成正比。
(2)傳播時延
傳播時延是電磁波在信道中傳播一定距離所需要花費的時間,傳播時延和信道的傳輸速率無關,
而是取決於傳輸媒介的長度,以及某種物理形式的信號在傳輸媒介中的傳播速度。
如電磁波在自由空間的傳播速度是光速,即3×105km/s。電磁波在網路傳輸媒體中的傳播速度比在自由空間中的傳播速度要略低一些,在銅線中的傳播速度約為2.3×105km/s
,在光纖中的傳播速度約為2.0×105km/s 。
(3)排隊時延
排隊時延是分組在所經過的網路結點的緩存隊列中排隊所經歷的時延,排隊時延的長短主要取決於網路中當時的通信量,當網路的通信流量大時,排隊時間就長,極端情況下,當網路發生擁塞導致分組丟失時,該結點的排隊時延視為無窮大。
此外,在有優先順序演算法的網路中,排隊時延還取決於數據的優先順序和結點的隊列調度演算法。
(4)處理時延
處理時延是分組在中間結點的存儲轉發過程中而進行的一些必要的處理所花費的時間,這些處理包括提取分組的首部,進行差錯校驗,為分組定址和選路等。
(1)計算機網路rtt擴展閱讀
網路端到端的時延是幾種時延的總合,其計算公式是:
總時延=傳播時延+發送時延+排隊時延+處理時延
根據網路的不同情況,有時有些時延可以忽略不計,如在區域網中,傳播時延很小可以忽略不計;當網路沒有擁塞時,分組在各個結點的排隊時延可以忽略不計。
往返時延(Round-Trip Time,RTT)也是一個重要的性能指標,它表示從發送方發送數據開始,到發送方收到來自接收方的確認,總共經歷的時延。對於復雜的網路,往返時延要包括各中間結點的處理時延和轉發數據時的發送時延。
2. RTT 往返時延
RTT(Round-Trip Time),往返時延。在計算機網路中它是一個重要的性能指標,表示從發送端發送數據開始,到發送端收到來自接收端的確認(接收端收到數據後便立即發送確認),總共經歷的時延。
往返延時(RTT)由三個部分決定:即鏈路的傳播時間、末端系統的處理時間以及路由器的緩存中的排隊和處理時間。其中,前面兩個部分的值作為一個TCP連接相對固定 ,路由器的緩存中的排隊和處理時間會隨著整個網路擁塞程度的變化而變化。所以RTT的變化在一定程度上反映了網路擁塞程度的變化
3. [計算機網路之一] 網路基礎知識
協議就是計算機與計算機之間通過網路實現通信時事先達成的一種 「約定」。這種 「約定」 使那些由不同的廠商、不同的 CPU 以及不同的操作系統組成的計算機之間,只要遵循相同的協議就能夠實現通信。
TCP/IP、AppleTalk(僅限蘋果計算機使用)、SNA(IBM)、DECnet(DEC)、IPX/SPX(Novell)
分組交換是指將大數據分割為一個個叫做包的較小單位進行傳輸的方法。
ISO (International Organization for Stardards,國際標准化組織)制定了國際標准 OSI (Open System Interconnection,開放系統互聯參考模型),但是沒有得到普及,反而是隨 Apanet 而生的 TCP/IP 協議在大學研究機構和計算機行業的推動下成為實際的業界標准。
每個分層都接收由它下一層所提供的特定服務,並且負責為自己的上一層提供特定服務。上下層之間進行交互所遵循的約定叫做 「介面」 ,同一層之間交互所遵循的約定叫做 「協議」 。
協議分層參考了計算機軟體中的模塊化開發。
單播、廣播、多播、任播。
一個地址必須明確地表示一個主體對象,在同一個通信網路中不允許有兩個相同地址的通信主體存在。
有層次性的地址方便高效地找到通訊目標(eg: 快遞地址國家、省市區)
MAC地址有唯一性但沒有層次性。
乙太網、無線、幀中繼、ATM、FDDI、ISDN。
NIC(Network Interface Card,網路介面卡),計算機必須有網卡才能接入網路。
物理層面上延長網路的設備。將電纜傳遞過來的光電信號經過波形調整和放大之後傳遞給另一個電纜。
集線器 :提供多個埠的中繼器。
數據鏈路層面連接兩個網路的設備。 不同網路可能採用了不同的數據鏈路,數據傳輸的速率可能完全不一樣 ,網橋會緩存一個網段傳輸到另一個網段的數據幀,再重新生成信號作為全新的幀轉發給另一個網段(這里我理解不同數據鏈路幀的格式不一樣,所以網橋需要緩存數據並轉換位另一個數據鏈路中的幀格式)。
網橋的其他作用:
① 根據數據幀中的 FCS 檢查數據幀是否已損壞,是則不轉發;
② 自學習MAC設備來自哪些網路,並記錄在地址轉發表中(地址轉發表記錄硬體地址與網路的映射關系);
③ 過濾功能控制網路流量。
交換集線器 :每個埠都相當於一個網橋。
網路層面上連接兩個網路、並對分組報文進行轉發的設備。
應用場景:廣域網加速器、特殊應用訪問加速、防火牆。
將傳輸層到應用層的數據進行轉發和翻譯的設備。
代理伺服器 :控制流量和出於安全考慮,客戶端和服務端無需在網路上直接通信,而是從傳輸層到應用層對數據和訪問進行各種控制和處理。
研發基於分組交換技術的 ARPANET,取代容災性差的中央集中式網路。
單個網路無法解決所有通信問題,開始研究網路互連技術,出現了 TCP/IP,並首先被 BSD UNIX 採用,隨之被廣泛使用變得流程,所有使用 TCP/IP 協議的計算機都能利用互連網相互通信。
圍繞大型計算機中心建設計算機網路,即 NSFNET(國家科學基金網),它是一個三級網路,分為主幹網、地區網和校園網。這種三級計算機網路覆蓋了全美主要的大學和研究所,並成為互聯網中的主要組成部分。
NSFNET 逐漸被商用的互聯網主幹網替代,政府機構不再負責互聯網的運營。用戶接入互聯網需要通過 ISP(Internet Service Provider:互聯網服務提供商)。
IXP(Internet eXchange Point)互聯網交換點 的作用是允許兩個網路直接相連並交換分組,而不需要再通過第三個網路(如上圖中的主幹 ISP)來轉發分組。
所有的互聯網標准都是以 RFC 的形式在互聯網上發表的,但並非所有的 RFC 文檔都是互聯網標准。
制定互聯網的正式標准要經過以下三個階段
(1)互聯網草案
(2)建議標准
(3)互聯網標准
由所有連接在互聯網上的主機組成。這部分是用戶直接使用的額,用來進行通信和資源共享。
由大量網路和連接這些網路的路由器組成。這部分視為邊緣部分提供服務的(提供連通性和交換)。
① 電路交換的起源
② 電路交換的特點
在使用信道時,信道兩端的兩個用戶始終佔用端到端的通信資源,線路上真正傳送數據的時間比例很小,傳輸效率很低。
③ 電路交換的步驟
建立連接 (佔用通信資源)→ 通話 (一直佔用通信資源)→ 釋放連接 (歸還通信資源)
電報通信採用基於存儲轉發原理的報文交換,整個報文被發送到相鄰結點,存儲下來,再轉發到下一個結點。
① 分組交換的特點
把一個完整的報文劃分為一個個分組,每個分組傳送到相鄰結點後,存在下來查找轉發表,在轉發到下一個結點。
② 分組交換的優缺點
優點:每個分組可以經過不同的路由,使得有更好的可靠性,也能充分利用網路性能。
缺點:分組控制信息有一定開銷,路由器存儲轉發時需要排隊導致產生時延,無法確保通信時端到端所需的寬頻。
① 廣域網 WAN(Wide Area Network) 廣域網的作用范圍通常為幾十到幾千公里,是互聯網的核心,其任務是通過長距離運送主機鎖發送的數據。連接廣域網各結點交換機的鏈路一般都是高速鏈路,具有較大的通信量。
② 城域網 MAN(Metropolotan Area Network) 城域網的作用范圍一般是一個城市,作用距離約為 5 ~ 50 km。可以為一個或幾個單位所用歐,也可以是一種公用設置,用來將多個區域網進行互聯。目前很多城域網採用的是乙太網技術。
③ 區域網 LAN(Local Area Network) 區域網一般用微型計算機或工作站通過高速通信鏈路相連(速率通常在 10 Mbit/s 以上),但地理上則局限在較小的范圍(如 1 km 左右)。在區域網發展的初期,一個學校或工廠往往只擁有有個區域網,但現在區域網已非常廣泛地使用,學校或企業大都擁有多個互連的區域網(這樣的網路常稱為 校園網 或 企業網 )。
④ 個人區域網 PAN(Personal Area Network) 個人區域網就是在個人工作的地方把屬於個人使用的電子設備用無線技術連接起來的網路,因此也常稱為 無線個人區域網 WPAN(Wireless PAN) ,其范圍很小,大約在 10 m 左右。
① 公用網(pulic network) 電信公司出資建造的大型網路。
② 專用網(private network) 某個部門為滿足本單位的特殊業務工作的需要而建造的網路。這種網路不向本單位以外的人提供服務,例如,軍隊、鐵路、銀行、電力等系統均有本系統的專用網。
接入網(Access Network) ,又稱為本地接入網或居民接入網。
數據的傳輸速率,也稱為數據率或比特率,單位為 bit/s(比特每秒)(或 b/s,有時也寫為 bps,即 bit per second)。
1 kbit/s = 1 × 10³ bit/s,1 Mbit/s = 1 × 10^6 bit/s,1 Gbit/s = 1 × 10^9 bit/s,1 Tbit/s = 1 × 10^12 bit/s
吞吐量表示在單位時間內通過某個網路的實際的數據量,單位同速率帶寬。
時延是指數據從網路的一端傳送到另一端所需的時間,網路時延由幾個部分組成:
網路總時延 = 發送時延 + 傳播時延 + 處理時延 + 排隊時延
[誤區] 光纖的傳播速率實際上比銅線要慢,但是光纖的帶寬卻比普通的雙絞線要快,這是因為光信號的抗干擾性強,並且可以通過波分復用的信道復用技術,達到一路光纖傳輸多路信號的效果。
時延帶寬積表示信道中可以容納多少比特。
在計算機網路中,往返時間 RTT(Round-Trip Time)是一個重要的性能指標,因為在許多情況下,互聯網上的信息不僅僅單方向傳輸而是雙向交互的。
使用衛星通信時,發送時延很短,主要消耗在來回傳播時延上,即往返時間相對較長。
利用率有信道利用率和網路利用率兩種。信道利用率指出某信道有百分之幾的時間是被利用的(有數據通過)。完全空閑的信道的利用率為零。網路利用率則是全網路的信道利用率的加權平均值。
D0 表示網路空閑時的時延,D 表示網路當前的時延,U 表示利用率,則
U = 1 - D0/D,變形一下,有
信道利用率不是越高越好,因為信道利用率增大時,網路時延也會增加,因為排隊時延增大。所以當 U 趨於 1 時,D 會趨於無限大,所以 信道或網路的利用率過高會產生非常大的時延 。
費用、質量、標准化、可靠性、可擴展性和可升級性、易於管理和維護。
① 語法,即數據與控制信息的結構或格式;
② 語義,即需要發出何種控制信息,完成何種動作以及做出何種響應;
③ 同步,即時間實現順序的詳細說明。
① 各層獨立;
② 靈活性好;
③ 結構上可分割開;
④ 易於實現和維護;
⑤ 能促進標准化工作。
計算機網路的各層及其協議的集合就是網路的體系結構。
實體 :表示任何可發送或接收信息的硬體或軟體進程。
協議 :協議是水平的,控制兩個對等實體進行通信的規則的集合。
服務 :服務是垂直的,下層通過介面向上層提供服務。
服務訪問點 :SAP(Service Access Point),同一系統中相鄰兩層的實體進行交互的地方。
4. 怎麼計算網址的rtt
計算網址的rtt的方法是:
1、首先,先採樣RTT,記下最近好幾次的RTT值。
2、然後做平滑計算SRTT( Smoothed RTT),公式為:(其中的 α 取值在0.8 到 0.9之間,這個演算法英文叫Exponential weighted moving average,中文叫:加權移動平均)SRTT = ( α * SRTT ) + ((1- α) * RTT)。
3、開始計算rtt。公式如下:rtt= min [ UBOUND,max [ LBOUND, (β * SRTT) ]]。
其中:UBOUND是最大的timeout時間,上限值、LBOUND是最小的timeout時間,下限值、β 值一般在1.3到2.0之間。
RTT往返時間是:
RTT(Round-Trip Time)往返時間在計算機網路中它是一個重要的性能指標。表示從發送端發送數據開始,到發送端收到來自接收端的確認(接收端收到數據後便立即發送確認,不包含數據傳輸時間)總共經歷的時間。
RTT由三個部分決定:鏈路的傳播時間、末端系統的處理時間、路由器的緩存中的排隊和處理時間。其中前兩個部分的值作為一個TCP連接相對固定。
路由器的緩存中的排隊和處理時間會隨著整個網路擁塞程度的變化而變化。所以RTT的變化在一定程度上反映了網路擁塞程度的變化。簡單來說就是發送方從發送數據開始,到收到來自接受方的確認信息所經歷的時間。
5. 計算機網路有哪些常用的性能指標
計算機網路常用性能指標有:
1、速率:連接在計算機網路上的主機在數字信道上傳送數據的速率。
2、帶寬:網路通信線路傳送數據的能力。
3、吞吐量:單位時間內通過網路的數據量。
4、時延:數據從網路一端傳到另一端所需的時間。
5、時延帶寬積:傳播時延帶寬。
6、往返時間RTT:數據開始到結束所用時間。
7、利用率信道:數據通過信道時間。
(5)計算機網路rtt擴展閱讀:
計算機網路中的時延是由一下幾個不同的部分組成的:
(1)發送時延
發送時延是主機或路由器發送數據幀所需要的時間,也就是從發送數據幀的第一個比特算起,到該幀的最後一個比特發送完畢所需的時間。因此發送時延也叫做傳輸時延。發送時延的計算公式是:
發送時延=數據幀長度(bit)/發送速率(bit/s)
(2)傳播時延
傳播時延是電磁波在信道中傳播一定的距離需要花費的時間。傳播時延的計算公式是:
傳播時延=信道長度(m)/電磁波在信道上大的傳播速率(m/s)
電磁波在自由空間的傳播速率是光速。即3.0*10^5km/s。
發送時延發生在機器內部的發送器中,與傳輸信道的長度沒有任何關系。傳播時延發生在機器外部的傳輸信道媒體上,而與信道的發送速率無關。信號傳送的距離越遠,傳播時延就越大
(3)處理時延
主機或路由器在收到分組時需要花費一定時間進行處理,例如分析分組的首部,從分組中提取數據部分、進行差錯檢驗或查找合適的路由等,這就產生了處理時延。
(4)排隊時延
分組在進行網路傳輸時,要經過許多路由器。但分組在進入路由器後要先在輸入隊列中排隊等待,在路由器確定了轉發介面後,還要在輸出隊列中排隊等待轉發。這就產生了排隊時延。排隊時延的長短取決於網路當時的通信量。當網路的通信量很大時會發生隊列溢出,使分組丟失,這相當於排隊時延無窮大。
這樣數據在網路中經歷的總時延就是以上四種時延之和:總時延=發送時延+傳播時延+處理時延+排隊時延。
一般來說,小時延的網路要優於大時延的網路。
6. 計算機網路-可靠傳輸-超時重傳和選擇確認SACK
TCP每發送一個報文段,就對這個報文段設置一次計時器。發送方沒有按時收到對方發送的確認時,應何時再重傳:
TCP採用了一種自適應演算法,它記錄一個報文段發出的時間,以及收到相應的確認的時間。這 兩個時間之差就是報文段的往返時間RTT 。 TCP保留了RTT的一個加權平均往返時間RTTs (這又稱為平滑的往返時間,S表示Smoothed。因為進行的是加權平均,因此得出的結果更加平滑)。每當第一次測量到RTT樣本時,RTTs值就取為所測量到的RTT樣本值。但以後每測量到一個新的RTT樣本,就按下式重新計算一次RTTs: 新的RTTs=(1-a)×舊的RTTs)+a×(新的RTT樣本) (5-4)
在上式中,0≤a<1。RFC6298推薦的α值為1/8,即0.125。用這種方法得出的加權平均往返時間RTTs就比測量出的RTT值更加平滑。
而RTTD是RTT的偏差的加權平均值,它與RTTs和新的RTT樣本之差有關。RFC 6298建議這樣計算RTTD。當第一次測量時,RTTD值取為測量到的RTT樣本值的一半。在以後的測量中,則使用下式計算加權平均的RTTD: 新的RTTD=(I-a)×(舊的RTTD)+B×RTTs-新的RTT樣本 (5-6)
這里B是個小於1的系數,它的推薦值是1/4,即0.25。
超時計時器設置的 超時重傳時間RTO (RetransmissionTime-Out)應略大於上面得出的加權平均往返時間RTTs。RFC298建議使用下式計算RTO: RTO=RTTs+4×RTTD (5-5)
演算法方法:報文段每重傳一次,就把超時重傳時間RTO增大一些。典型的做法是取新的重傳時間為舊的重傳時間的2倍。當不再發生報文段的重傳時,才根據上面給出的(5-5)式計算超時重傳時間。
TCP 通過 選擇確認SACK解決Go-back-N現象 。
TCP的接收方在接收對方發送過來的數據位元組流的序號不連續,結果就形成了一些不連續的位元組塊'(如圖5-21所示)。可以看出,序號1~1000收到了,但序號1001~1500沒有收到。接下來的位元組流又收到了,可是又缺少了3001~3500。再後面從序號4501起又沒有收到。也就是說,接收方收到了和前面的位元組流不連續的兩個位元組塊。如果這些位元組的序號都在接收窗口之內,那麼接收方就先收下這些數據,但要把這些信息准確地告訴發送方,使發送方不要再重復發送這些己收到的數據。
我們知道,TCP的首部沒有哪個欄位能夠提供上述這些位元組塊的邊界信息。RFC2018規定,如果要使用選擇確認SACK,那麼在建立TCP連接時,就要在TCP首部的 選項 中加上「允許SACK」的選項,而雙方必須都事先商定好。如果使用選擇確認,那麼原來首部中的「 確認號欄位(ACK) 」的用法仍然不變。只是以後在TCP報文段的首部中都增加了SACK選項,以便報告收到的不連續的位元組塊的邊界。由於首部選項的長度最多隻有40位元組,而指明一個邊界就要用掉4位元組(因為序號有32位,需要使用4個位元組表示),因此在選項中最多隻能指明4個位元組塊的邊界信息。這是因為4個位元組塊共有8個邊界,因而需要用32個位元組來描述。另外還需要兩個位元組。一個位元組用來指明是SACK選項,另一個位元組是指明這個選項要佔用多少位元組。如果要報告五個位元組塊的邊界信息,那麼至少需要42個位元組。這就超過了選項長度的40位元組的上限。
互聯網建議標准RFC2018還對報告這些邊界信息的格式都做出了非常明確的規定但是,SACK文檔並沒有指明發送方應當怎樣響應SACK。因此大多數的實現還是重傳所有未被確認的數據塊。
7. 網路中的RTT是什麼意思
RTT(Round-Trip Time): 往返時延。在計算機網路中它是一個重要的性能指標,表示從發送端發送數據開始,到發送端收到來自接收端的確認(接收端收到數據後便立即發送確認),總共經歷的時延。 RTT(Radio Transmission Technology): 無線傳輸技術。參考CDMA2000詞條中的CDMA2000 1xRTT。 RTT(Radiation Tracking Transcer): 紅外線跟蹤系統, 輻射跟蹤換能器。 RTT(Radio Teletype (-writer)): 無線電電傳打字電報機。 RTT(Radioteletype Transmitter): 無線電電傳打字電報發射機。 RTT(Real-Time Tactics):即時戰術游戲又稱「實時戰術」游戲。它與即時戰略(RTS:Real-Time Strategy)相類似,但缺少必要的戰略要素,如資源採集、建造、發展等。一種常見的誤解是認為「只要是即時進行的戰爭游戲就是即時戰略游戲」。其實即時戰略游戲的定義是很嚴格的,即時戰略的「戰略(Strategy)」的謀定過程必須是即時的,如果只有戰斗是即時的,而採集、建造、發展等戰略元素卻以回合制進行,則該游戲不能歸為即時戰略游戲。如果該游戲完全沒有上述戰略元素,則只能歸為即時戰術(RTT:Real-Time Tactics)游戲。
8. 計算機網路,傳輸層擁塞控制小問題。謝謝。 假設在沒有發生擁塞的情況下,在一條往返時延RTT為10m
擁塞窗口初始值=1個TCP報文= 2 K B < 24 K B =2KB<24KB=2KB<24KB,發送窗口=min{擁塞窗口,接收窗口},採用慢啟動演算法:
T=0,第1次發送,發送窗口=擁塞窗口=2KB;
t=10ms,得到確認,擁塞窗口=4KB
T=10ms,第2次發送,發送窗口=4KB;
t=20ms,得到確認,擁塞窗口=8KB
T=20ms,第3次發送,發送窗口=8KB;
t=30ms,得到確認,擁塞窗口=16KB
T=30ms,第4次發送,發送窗口=16KB;
t=40ms,得到確認,擁塞窗口=32KB
T=40ms,第5次發送,發送窗口=min{擁塞窗口,接收窗口}=24KB;
因此,需要40ms才能發送第一個完全窗口。
9. RTT是什麼
這要看是在哪種場合了。
RTT(Real-Time Tactics):即時戰術游戲又稱「實時戰術」游戲。
RTT(Round-Trip Time): 往返時延。在計算機網路中它是一個重要的性能指標,表示從發送端發送數據開始,到發送端收到來自接收端的確認(接收端收到數據後便立即發送確認),總共經歷的時延。
RTT(Render to Texture):渲染到紋理。普通的圖形渲染流程中,最終結果是渲染到幀緩存中,最後顯示到屏幕上,然後可以把紋理繼續應用到場景繪制中。
RTT(RT-Thread):國產開源實時操作系統。
RTT(Radio Transmission Technology):無線傳輸技術。參考CDMA2000詞條中的CDMA2000 1xRTT。
RTT(Radiation Tracking Transcer): 紅外線跟蹤系統, 輻射跟蹤換能器。
RTT(Radio Teletype (-writer)): 無線電電傳打字電報機。
RTT(Radioteletype Transmitter): 無線電電傳打字電報發射機。
10. 計算機網路——TCP/UDP協議
計算機網路七層模型中,傳輸層有兩個重要的協議:
(1)用戶數據報協議UDP (User Datagram Protocol)
(2)傳輸控制協議TCP (Transmission Control Protocol)
UDP 在傳送數據之前不需要先建立連接。遠地主機的運輸層在收到UDP 報文後,不需要給出任何確認。雖然UDP 不提供可靠交付,但在某些情況下UDP 卻是一種最有效的工作方式。
TCP 則提供面向連接的服務。在傳送數據之前必須先建立連接,數據傳送結束後要釋放連接。TCP 不提供廣播或多播服務。由於TCP 要提供可靠的、面向連接的運輸服務,因此不可避免地增加了許多的開銷,如確認、流量控制、計時器以及連接管理等。
UDP 的主要特點是:
首部手段很簡單,只有8 個位元組,由四個欄位組成,每個欄位的長度都是兩個位元組。
前面已經講過,每條TCP 連接有兩個端點,TCP 連接的端點叫做套接字(socket)或插口。套接字格式如下:
套接寧socket= (IP 地址:埠號』)
每一條TCP 連接唯一地被通信兩端的兩個端點(即兩個套接宇)所確定。即:
TCP 連接= {socket1, socket2} = {(IP1: port1), (IP2: port2)}
3次握手鏈接
4次握手釋放鏈接
斷開連接請求可以由客戶端發出,也可以由伺服器端發出,在這里我們稱A端向B端請求斷開連接。
各個狀態節點解釋如下:
下面為了討論問題的萬便,我們僅考慮A發送數據而B 接收數據並發送確認。因此A 叫做發送方,而B 叫做接收方。
「停止等待」就是每發送完一個分組就停止發送,等待對方的確認。在收到確認後再發送下一個分組。
使用上述的確認和重傳機制,我們就可以在不可靠的傳輸網路上實現可靠的通信。像上述的這種可靠傳輸協議常稱為自動重傳請求ARQ (Automatic Repeat reQuest)。意思是重傳的請求是自動進行的。接收方不需要請求發送方重傳某個出錯的分組。
滑動窗口協議比較復雜,是TCP 協議的精髓所在。這里先給出連續ARQ 協議最基本的概念,但不涉提到許多細節問題。詳細的滑動窗口協議將在後面討論。
下圖表示發送方維持的發送窗口,它的意義是:位於發送窗口內的5 個分組都可連續發送出去,而不需要等待對方的確認。這樣,信道利用率就提高了。
連續ARQ 協議規定,發送方每收到一個確認,就把發送窗口向前滑動一個分組的位置。
接收方一般都是採用 累積確認 的方式。這就是說,接收方不必對收到的分組逐個發送確認,而是可以在收到幾個分組後,對按序到達的最後一個分組發送確認,這樣就表示:到這個分組為止的所有分組都己正確收到了。
累積確認 的優點是容易實現,即使確認丟失也不必重傳。但缺點是不能向發送方反映出接收方己經正確收到的所有分組的信息。
例如,如果發送方發送了前5 個分組,而中間的第3 個分組丟失了。這時接收方只能對前兩個分組發出確認。發送方無法知道後面三個分組的下落,而只好把後面的三個分組都再重傳一次。這就叫做Go-back-N (回退N ),表示需要再退回來重傳己發送過的N 個分組。可見當通信線路質量不好時,連續ARQ 協議會帶來負面的影響。
TCP 的滑動窗口是以位元組為單位的。現假定A 收到了B 發來的確認報文段,其中窗口是20 (位元組),而確認號是31 (這表明B 期望收到的下一個序號是31 ,而序號30 為止的數據己經收到了)。根據這兩個數據, A 就構造出自己的發送窗口,其位置如圖所示。
發送窗口表示:在沒有收到B 的確認的情況下, A可以連續把窗口內的數據都發送出去。凡是己經發送過的數據,在未收到確認之前都必須暫時保留,以便在超時重傳時使用。
發送窗口後沿的後面部分表示己發送且己收到了確認。這些數據顯然不需要再保留了。而發送窗口前沿的前面部分表示不允許發送的,因為接收方都沒有為這部分數據保留臨時存放的緩存空間。
現在假定A 發送了序號為31 ~ 41 的數據。這時發送窗口位置並未改變,但發送窗口內靠後面有11個位元組(灰色小方框表示)表示己發送但未收到確認。而發送窗口內靠前面的9 個位元組( 42 ~ 50 )是允許發送但尚未發送的。】
再看一下B 的接收窗口。B 的接收窗口大小是20,在接收窗口外面,到30 號為止的數據是已經發送過確認,並且己經交付給主機了。因此在B 可以不再保留這些數據。接收窗口內的序號(31~50)足允許接收的。B 收到了序號為32 和33 的數據,這些數據沒有按序到達,因為序號為31 的數據沒有收到(也許丟失了,也許滯留在網路中的某處)。 請注意, B 只能對按序收到的數據中的最高序號給出確認,因此B 發送的確認報文段中的確認號仍然是31 (即期望收到的序號)。
現在假定B 收到了序號為31 的數據,並把序號為31~33的數據交付給主機,然後B刪除這些數據。接著把接收窗口向前移動3個序號,同時給A 發送確認,其中窗口值仍為20,但確認號是34,這表明B 已經收到了到序號33 為止的數據。我們注意到,B還收到了序號為37, 38 和40 的數據,但這些都沒有按序到達,只能先存在接收窗口。A收到B的確認後,就可以把發送窗口向前滑動3個序號,指針P2 不動。可以看出,現在A 的可用窗口增大了,可發送的序號范圍是42~53。整個過程如下圖:
A 在繼續發送完序號42-53的數據後,指針P2向前移動和P3重合。發送窗口內的序號都已用完,但還沒有再收到確認。由於A 的發送窗口己滿,可用窗口己減小到0,因此必須停止發送。
上面已經講到, TCP 的發送方在規定的時間內沒有收到確認就要重傳已發送的報文段。這種重傳的概念是很簡單的,但重傳時間的選擇卻是TCP 最復雜的問題之一。
TCP採用了一種自適應演算法 ,它記錄一個報文段發出的時間,以及收到相應的確認的時間。這兩個時間之差就是報文段的往返時間RTT,TCP 保留了RTT的一個加權平均往返時間RTTs (這又稱為平滑的往返時間, S 表示Smoothed 。因為進行的是加權平均,因此得出的結果更加平滑)。每當第一次測量到RTT樣本時, RTTs值就取為所測量到的RTT樣本值。但以後每測量到一個新的RTT樣本,就按下式重新計算一次RTTs:
新的RTTs = (1 - α)×(舊的RTTs) + α ×(新的RTT樣本)
α 越大表示新的RTTs受新的RTT樣本的影響越大。推薦的α 值為0.125,用這種方法得出的加權平均往返時間RTTs 就比測量出的RTT值更加平滑。
顯然,超時計時器設置的超時重傳時間RTO (RetransmissionTime-Out)應略大於上面得出的加權平均往返時間RTTs。RFC 2988 建議使用下式計算RTO:
RTO = RTTs + 4 × RTTd
RTTd是RTT 的偏差的加權平均值,它與RTTs和新的RTT樣本之差有關。計算公式如下:
新的RTTd= (1- β)×(舊的RTTd) + β × |RTTs-新的RTT樣本|
發現問題: 如圖所示,發送出一個報文段。設定的重傳時間到了,還沒有收到確認。於是重
傳報文段。經過了一段時間後,收到了確認報文段。現在的問題是:如何判定此確認報文段是對先發送的報文段的確認,還是對後來重傳的報文段的確認?
若收到的確認是對重傳報文段的確認,但卻被源主機當成是對原來的報文段的確認,則這樣計算出的RTTs 和超時重傳時間RTO 就會偏大。若後面再發送的報文段又是經過重傳後才收到確認報文段,則按此方法得出的超時重傳時間RTO 就越來越長。
若收到的確認是對原來的報文段的確認,但被當成是對重傳報文段的確認,則由此計算出的RTTs 和RTO 都會偏小。這就必然導致報文段過多地重傳。這樣就有可能使RTO 越來越短。
Kam 提出了一個演算法:在計算加權平均RTTs 時,只要報文段重傳了就不採用其往返時間樣本。這樣得出的加權平均RTTs 和RTO 就較准確。
新問題: 設想出現這樣的情況:報文段的時延突然增大了很多。因此在原來得出的重傳時間內,不會收到確認報文段。於是就重傳報文段。但根據Kam 演算法,不考慮重傳的報文段的往返時間樣本。這樣,超時重傳時間就無法更新。
解決方案: 對Kam 演算法進行修正,方法是z報文段每重傳一次,就把超時重傳時間RTO 增大一些。典型的做法是取新的重傳時間為2 倍的舊的重傳時間。當不再發生報文段的重傳時,才根據上面給出的公式計算超時重傳時間。
流量控制(flow control)就是讓發送方的發送速率不要太快,要讓接收方來得及接收。
利用滑動窗口機制可以很方便地在TCP 連接上實現對發送方的流量控制。
接收方的主機B 進行了三次流量控制。第一次把窗口減小到rwnd =300,第二次又減到rwnd = 100 ,最後減到rwnd = 0 ,即不允許發送方再發送數據了。這種使發送方暫停發送的狀態將持續到主機B 重新發出一個新的窗口值為止。我們還應注意到,B 向A 發送的三個報文段都設置了ACK=1,只有在ACK=1 時確認號欄位才有意義。
發生死鎖: 現在我們考慮一種情況。上圖中, B 向A 發送了零窗口的報文段後不久, B 的接收緩存又有了一些存儲空間。於是B 向A 發送了rwnd = 400 的報文段。然而這個報文段在傳送過程中丟失了。A 一直等待收到B 發送的非零窗口的通知,而B 也一直等待A 發送的數據。如果沒有其他措施,這種互相等待的死鎖局面將一直延續下去。
解決方案: TCP 為每一個連接設有一個 持續計時器(persistence timer) 。只要TCP 連接的一方收到對方的零窗口通知,就啟動持續計時器。若持續計時器設置的時間到期,就發送一個 零窗口探測報文段 (僅攜帶1 宇節的數據),而對方就在確認這個探測報文段時給出了現在的窗口值。
1 TCP連接時是三次握手,那麼兩次握手可行嗎?
在《計算機網路》中是這樣解釋的:已失效的連接請求報文段」的產生在這樣一種情況下:client發出的第一個連接請求報文段並沒有丟失,而是在某個網路結點長時間的滯留了,以致延誤到連接釋放以後的某個時間才到達server。本來這是一個早已失效的報文段。但server收到此失效的連接請求報文段後,就誤認為是client再次發出的一個新的連接請求。於是就向client發出確認報文段,同意建立連接。假設不採用「三次握手」,那麼只要server發出確認,新的連接就建立了。由於現在client並沒有發出建立連接的請求,因此不會理睬server的確認,也不會向server發送ACK包。這樣就會白白浪費資源。而經過三次握手,客戶端和伺服器都有應有答,這樣可以確保TCP正確連接。
2 為什麼TCP連接是三次,揮手確是四次?
在TCP連接中,伺服器端的SYN和ACK向客戶端發送是一次性發送的,而在斷開連接的過程中,B端向A端發送的ACK和FIN是是分兩次發送的。因為在B端接收到A端的FIN後,B端可能還有數據要傳輸,所以先發送ACK,等B端處理完自己的事情後就可以發送FIN斷開連接了。
3 為什麼在第四次揮手後會有2個MSL的延時?
MSL是Maximum Segment Lifetime,最大報文段生存時間,2個MSL是報文段發送和接收的最長時間。假定網路不可靠,那麼第四次發送的ACK可能丟失,即B端無法收到這個ACK,如果B端收不到這個確認ACK,B端會定時向A端重復發送FIN,直到B端收到A的確認ACK。所以這個2MSL就是用來處理這個可能丟失的ACK的。
1 文件傳送協議
文件傳送協議FTP (File Transfer Protocol) [RFC 959]是網際網路上使用得最廣泛的文件傳送協議,底層採用TCP協議。
盯P 使用客戶伺服器方式。一個FTP 伺服器進程可同時為多個客戶進程提供服務。FTP的伺服器進程由兩大部分組成:一個主進程,負責接受新的請求:另外有若干個從屬進程,負責處理單個請求。
在進行文件傳輸時,客戶和伺服器之間要建立兩個並行的TCP 連接:「控制連接」(21埠)和「數據連接」(22埠)。控制連接在整個會話期間一直保持打開, FTP 客戶所發出的傳送請求,通過控制連接發送給伺服器端的控制進程,但控制連接並不用來傳送文件。實際用於傳輸文件的是「數據連接」。伺服器端的控制進程在接收到FTP 客戶發送來的文件傳輸請求後就創建「數據傳送進程」和「數據連接」,用來連接客戶端和伺服器端的數據傳送進程。
2 簡單文件傳送協議TFTP
TCP/IP 協議族中還有一個簡單文件傳送協議TFfP (Trivial File Transfer Protocol),它是一個很小且易於實現的文件傳送協議,埠號69。
TFfP 也使用客戶伺服器方式,但它使用UDP 數據報,因此TFfP 需要有自己的差錯改正措施。TFfP 只支持文件傳輸而不支持交耳。
3 TELNET
TELNET 是一個簡單的遠程終端協議,底層採用TCP協議。TELNET 也使用客戶伺服器方式。在本地系統運行TELNET 客戶進程,而在遠地主機則運行TELNET 伺服器進程,佔用埠23。
4 郵件傳輸協議
一個電子郵件系統應具如圖所示的三個主要組成構件,這就是用戶代理、郵件伺服器,以及郵件發送協議(如SMTP )和郵件讀取協議(如POP3), POP3 是郵局協議(Post Office Protocol)的版本3 。
SMTP 和POP3 (或IMAP )都是在TCP 連接的上面傳送郵件,使用TCP 的目的是為了使郵件的傳送成為可靠的。