計算機網絡複習筆記(5)

                                                                                 今日複習運輸層

1.運輸層兩大協議

tcp(transmission control protocol)傳輸控制協議。

udp(user datagram protocol)用戶數據報協議。、

2.兩個對等運輸實體在通信時傳送得數據單位叫運輸協議數據單元TPDU。但在TCP/IP體系中,,則根據所使用的協議是TCP或UDP,分別稱之爲TCP報文段UDP用戶數據報

3.udp在傳送數據之前不需要先建立連接。遠地主機得運輸層在收到UDP報文後,不需要給出任何確認。

4.tcp則提供面向連接的服務。在傳送數據之前必須先建立連接,數據傳送結束,要釋放連接。TCP不提供廣播或多播服務。

5.解決不同主機之間應用程進程得通信的辦法爲使用端口。

6.端口又分爲兩大類

(1)服務器端使用的端口號 這裏又分爲兩類,最重要的一類叫做熟知端口號或系統端口號,數值爲0~1023。另外一種是登記端口號,數值爲1024~49151.這類端口號是爲沒有熟知端口號的應用程序使用的。使用這類端口號必須在IANA按照規定的手續登記,以防重複。

(2)客戶端使用的端口號 數值爲49125~65535.由於這類端口號僅在客戶進程運行時才動態選擇,因此又叫做短暫端口號。 

7.UDP的主要特點:

(1)UDP是無連接的,即發送數據之前不需要建立連接,因此減少了開銷和發送數據之前的延時。

(2)UDP使用盡最大努力交付,即不保證可靠交付,因此主機不需要維持複雜的連接狀態表。

(3)UDP是面向報文的。發送方的UDP對應用程序交下來的報文,在添加首部之後就向下交付IP層。

(4)UDP沒用擁塞控制,因此網絡出現的擁塞不會使源主機的發哦是那個速率降低。

(5)UDP支持一對一,一對多,多對一和多對多的交互通信。

(6)UDP的首部開銷小,只有8個字節,比TCP的20個字節的首部要短。

8.UDP的首部格式

(1)源端口 源端口號。在需要對方回信時選用。不需要時可用全0.

(2)目的端口 目的端口號。這在終點交付報文時必須使用。

(3)長度 UDP用戶數據報的長度,其最小值是8(僅有首部的情況)。

(4)檢驗和 檢測UDP數據報正在傳輸中是否有錯,有錯就丟棄。

9.TCP主要特點:

(1)TCP是面向連接的運輸層協議。應用程序在使用TCP協議之前,必須先建立TCP連接。在傳送數據完畢後,必須釋放已經建立的TCP連接。

(2)每一條TCP連接只能有兩個斷電,每一條TCP連接只能是點對點的。

(3)TCP提供可靠交付的服務。通過TCP連接傳送的數據,無差錯,不丟棄,不重複,並且按序到達。

(4)TCP提供全雙工通信。TCP允許允許通信雙方的應用進程在任何時候都能發送數據。

(5)面向字節流。TCP中的流指的是流入到進程或從進程流出的字節序列。面向字節流的含義是:雖然應用程序和TCP的交互是一次一個數據塊,但TCP把應用程序交下來的數據僅僅看成是一連串的無結構的字節流。TCP和UDP在發送報文時所採用的方式完全不同,TCP並不關心應用進程一次把多長的報文發送到TCP緩存中,而是根據對方給出的窗口值和當前網絡擁塞的程度來決定一個報文段應包含多少個字節。(UDP發送的報文長度是應用進程給出的)

10.TCP的連接:TCP的連接的端點叫做套接字(socket)或插口。端口號拼接到IP地址即構成了套接字。

套接字 socket = (IP地址:端口號)

每一條TCP連接唯一的被通信兩端的兩個端點(即兩個套接字)所確定。

TCP連接 ::= {socket1, socket2} = {(IP1:port1),(IP2:port2)}

同一個ip地址可以有多個不用的TCP連接,而同一個端口號也可以出現在多個不同的TCP連接中。

11.可靠傳輸的工作原理:

(1)傳輸信道不產生差錯。

(2)不管發送方以多快的速度發送數據,接收方總是來得及處理收到的數據。

12.停止等待協議ARP(Automati從Repeat reQuest):詳情請看下方鏈接。

https://blog.csdn.net/weixin_43584807/article/details/93800480

13.信道利用率  u = 發送分組需要的時間 / (發送分組需要的時間 + 往返時間 + 發送確認分組需要的時間)爲提高傳輸效率,發送方可以不使用停止等待協議,而是採用流水線傳輸。

14.TCP報文段的首部格式:

TCP報文段首部的前20個字節是固定的,後面又4n字節是根據需要而增加的選項。因此TCP首部的最小長度是20字節。

首部固定部分個字段的意義如下:

(1)源端口和目的端口號 各佔兩個字節,分別寫入源端口號和目的端口號。

(2)序號 佔四個字節。序號範圍[0, 2^32 - 1]共2^32個序號。序號增加到2^32 - 1後又從0開始。TCP是面向字節流的。在一個TCP連接中傳送的字節流中的每一個字節都按順序編號。整個要傳送的字節流的起始序號必須在連接建立時設置。首部中的序號字段值則指的是本報文段所發送的數據的第一個字節的序號。

(3)確認號 佔四個字節,是期望收到對方下一個報文段的第一個數據字節的序號。確認號 = N,則表明N - 1個字節已經正確收到。

(4)數據偏移 佔四位,它指出TCP報文段的數據起始處距離TCP報文段起始處有多遠。這個字段實際上是指出TCP報文段的首部長度。數據偏移的單位是32位字(即四字節)。

(5)保留 佔六位,保留爲今後使用,目前置爲0.

(6)緊急URG 當URG = 1時,表明緊急指針字段有效。它告訴系統此報文段有緊急數據,應儘快發送,而不要按原來的排隊順序來傳送。

(7)確認ACK(ACKnowlegment) 僅當ACK = 1時確認好字段纔有效。當ACK = 0時,確認號無效。TCP規定,在連接建立後所有傳送的報文段都必須把ACK置1.

(8)推送PSH 當兩個應用進程進行交互式的通信,有時在一端的應用進程希望在鍵入一個命令後立即就能夠收到對方的響應。這時就把PSH置1,並立即創建一個報文段發送出去。接收方TCP收到PSH = 1的報文段,就儘快交付接收應用進程,而不再等到整個混村都填滿了後再向上交付。

(9)復位RST(ReSet) 當RST爲1,表明TCP連接中出現嚴重差錯,必須釋放連接,然後再重新建立運輸連接。

(10)同步SYN(SYNchronization) 在連接建立時,用來同步序號。當SYN = 1,而ACK = 0,表明這是一個連接請求報文段。對方若同意建立連接,則應在響應的報文段中使 SYN = 1和ACK = 1.因此,SYN置爲1就表示i這是一個連接請求或者連接接受報文。

(11)終止FIN(FINis) 用來釋放一個連接。當FIN = 1時,表明此報文段的發送發的數據已發送完畢,並要求釋放連接。

(12)窗口 佔兩個字節。窗口值是[0, 2^16 - 1]之間的整數。窗口指的是發送本報文段的以放的接收窗口。窗口值告訴對方:從本報文段首部中的確認號算起,接收方目前語序對方發送的數據量。之所以要有這個限制,是因爲接收方的數據緩存空間是有限的。總之,窗口值作爲接收方讓發送方設置其發送窗口的依據。

(13)檢驗和 佔兩個字節。檢驗和字段檢驗的範圍包括首部和數據着兩部分。

(14)緊急指針 佔兩字節,僅當URG = 1時纔有效,他指出本報文段中的緊急數據的字節數。

(15)選項 長度可變,最長可達40字節。當沒有使用選項時,TCP的首部長度是20字節。

15.TCP可靠傳輸的實現

(1)以字節爲單位的滑動窗口。

(2)超時重傳的選擇 新的RTTs = (1 - а)* (舊的RTTs) + α * (新的RTT樣本),第一次測量到RTT樣本時,RTTs值就取爲所測量到的RTT。

RTO(retransmission time -out) 超時重傳時間 RTO =  RTTs + 4 * RTTD。

RTTD是RTT的偏差的加權平均值。

(3)選擇確認SACK(selective ACK)

16.TCP的流量控制:所謂流量控制就是讓發送發的發送速率不要太快,要讓接收方來得及接收。

(1)利用滑動窗口實現流量控制

發送方的發送窗口不能超過接收方給出的接受窗口的數值。TCP窗口的單位是字節,不是報文段。

17.TCP得擁塞控制

(1)擁塞:在計算機網絡中得鏈路容量,交換節點中得緩存和處理機等,都是網絡的資源。在某段時間,若對網絡中某一資源得需求超過了該資源所能提供得可用部分,網絡的性能就要變壞。這種情況就叫擁塞。可以把出現網絡擁塞得條件寫成如下的關係式:∑對資源得需求 > 可用資源。

(2)擁塞控制:所謂擁塞控制就是防止過多的數據注入到網絡中,這樣可以使網絡中的路由器或鏈路不致過載。擁塞控制所要做的都有一個前提,就是網絡能夠承受現有的網絡負荷。

(3)流量控制:流量控制往往使指點對點通信量的控制,是個端到端的問題。流量控制所要做的就是抑制發送端發送數據的速率,以便使接收端來得及接收。

(4)擁塞控制分爲兩種方法:開環控制和閉環控制。

開環控制就是在設計網絡時事先將有關發生擁塞的因素考慮到,力求網絡在工作時不產生擁塞。但一旦整個系統運行起來,就不再中途進行更改了。

閉環控制使基於反饋環路的概念主要有以下幾種措施:

監測網絡系統以便檢測到擁塞在何時,何處發生。

把擁塞發生的信息傳送到可採取行動的地方。

調整網絡系統的運行已解決出現的問題。

18.TCP的擁塞控制方法

TCP進行擁塞控制的算法有四種,即慢開始,擁塞避免,快重傳和快恢復。

慢開始和擁塞避免

判斷網絡擁塞的依據就是出現了超時。

慢開始算法的思路是這樣的:當主機開始發送數據時,由於並不清楚網絡的負荷情況,所以如果一開始就將大量數據字節注入到網絡,那麼就有可能引起網絡發發生擁塞。經驗證明,較好的方法實現探測一下,即由小到大逐漸增大發送窗口,也就是說,由小到大逐漸增大擁塞窗口數值。慢開始還規定,在每收到一個對新的報文段的確認後,可以把擁塞窗口增加最多一個SMSS的數值,即  擁塞窗口cwnd每次的增加量 = min(N, SMSS),其中N是原先未被確認的,但現在被剛收到的確認報文段所確認的字節數。每經過一個傳輸輪次,擁塞窗口cwnd就加倍。

爲了防止擁塞窗口cwnd增長過大引起網絡擁塞,還需要設置一個慢開始門限ssthresh狀態變量。

當cwnd < ssthresh時使用上述的慢開始算法。

當cwnd > ssthresh時,停止使用慢開始算法而改用擁塞避免算法。

當cwnd = ssthresh時,兩者即可。

擁塞避免算法的思路是:讓擁塞窗口cwnd緩慢地增大,即每經過一個往返時間RTT就把發送方的擁塞窗口cwnd加1,而不是像慢開始階段哪樣加倍增長。因此在擁塞避免階段就有“加法增大”AI(additive  increase)的特點。這表明在擁塞避免階段,用死啊窗口按線性規律緩慢增長。擁塞避免並非完全能夠避免了擁塞,而是使網絡比較不容易出現擁塞。一旦出現超時或3個重複的確認,就要把門限值設置爲當前擁塞窗口的一半,並大大減小擁塞窗口的數值。這常成爲“乘法減小”。

發送窗口的大小由網絡的擁塞程度來決定,但實際上接收方的緩存空間總是有限的。接收方根據自己的接收方窗口rwnd,並把這個窗口值寫入TCP首部中的窗口字段,傳送給發送方。發送方的發送窗口一定不能超過對方給的接收方窗口值rwnd,也就是說

                     發送方的窗口上限值 = Min[rwnd, cwnd]

rwnd和cwnd中數值較小的一個,控制了發送方發送數據的速率。

19.主動隊列管理AQM

路由器的隊列通常都是按照先進先出FIFO的規則處理到來的分組,當隊列滿了,後面來的分組都會丟棄。這就叫做尾部丟棄策略。路由器的尾部丟棄策略會導致一連串分組的丟失,這就使發送放超時重傳。在網絡中有很多TCP連接,這樣會導致許多TCP連接在同一時間進入到慢開始狀態。這種情況叫做全局同步。全局同步使得網絡通信量突然下降很多,而在網絡恢復後通信量又突然增大很多。爲了避免這種現象,可以使用主動隊列管理AQM(Active Queue Management)。

AQM:當隊列長度到達某個警惕的數值時,就主動丟棄分組。這樣就提醒了發送方應該降低發送速率。AQM可以有不用的實現方法,例如隨即早期檢測RED(Random Early Detection)。

RED:實現RED時需要使路由器維持兩個參數,即隊列長度最小門限和最大門限。當每一個分組到達時,RED就按照規定的算法先計算當前的平均隊列長度。

若平均隊列長度小於最小門限,則入隊。

若平均隊列長度大於最大門限,丟棄。

兩者之間,按照概率P把新到達的分組丟棄。

20.TCP的運輸連接管理

大家熟悉的三次握手來了。https://www.cnblogs.com/kaleidoscope/p/9701117.html詳情請看。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章