01.06 「計算機網絡」第五章:傳輸層

5.1 OSI和DoD模型

下圖必須背下來。尤其是傳輸層和網絡層的協議。

「計算機網絡」第五章:傳輸層

傳輸層最大數據包是65535字節,而網絡層數據最大隻有1480字節。所以需要分段,但是隻要分段,就有可能丟包,因為網絡層不負責可靠傳輸。所以要求服務器和客戶端保持會話,直到數據傳輸完成。

->TCP(Transmission Control Protocol)傳輸控制協議

應用場景:需要將要傳輸的文件分段傳輸時;就需要TCP協議來建立會話實現可靠傳輸;同時也有流量控制功能。(例如QQ傳文件)

查看會話 netstat -n

查看建立會話的進程 netstat -nb

->UDP(User Data Protocol)用戶數據報協議

應用場景:一個數據包就能完成數據通信;不需要建立會話和流量控制;多播/廣播;是一種不可靠傳輸。(例如QQ聊天,屏幕廣播)

5.2 傳輸層協議和應用層協議的關係

「計算機網絡」第五章:傳輸層

(1)TCP和UDP協議和不同的端口即可對應一個應用層的協議。注意,53大部分是與UDP相連。

(2)熟知數值一般為0-1023,登記端口號數值1024-49151,客戶端口號數值為49152-65535.

(3)常用的應用層協議使用的端口(號):

http = TCP + 80

Https = TCP + 443

RDP = TCP + 3389

ftp = TCP + 21

共享文件夾 = TCP + 445

SMTP = TCP + 25

POP3 = TCP + 110

telnet = TCP + 23

SQL = TCP + 1433

DNS = UDP + 53

(注意與4.6 的協議號的區別)

5.3 服務和應用層協議的關係

防火牆是基於網卡的,只打開必要的端口,不必要的端口不允許接收數據,不影響服務的運行和監聽。

服務使用TCP或UDP的端口偵聽客戶端請求;

客戶端使用IP地址定位服務器,使用目標端口,定位服務;

可以在服務器網卡上設置只開放必要的端口,實現服務器網絡安全。

5.3.1 如何在Windows上安裝服務

DNS服務

Web服務

SMTP

POP3

5.3.2 如何查看服務偵聽的端口

netstat -a

netstat -an 以數字的形式查看端口

netstat -n 查看建立的會話

netstat -nb 查看建立會話的進程

telnet 192.168.80.100 3389 測試到遠程計算機某個端口是否打開

「計算機網絡」第五章:傳輸層

5.3.3 如何更改服務使用默認端口

可以迷惑病毒,使系統更加安全。

5.3.4 如何設置Windows網絡安全

設置本地連接 TCP/IP篩選

5.4 傳輸層功能和端口範圍

「計算機網絡」第五章:傳輸層

5.4.1 傳輸層協議和網絡層協議的主要區別

網絡層實現如何把數據包從這個地址(服務器)發送到另一個地址(服務器)。
傳輸層實現如何讓這個應用程序找到對應計算機的應用程序(相對應的應用程序實現邏輯通信)。

「計算機網絡」第五章:傳輸層

5.4.2 傳輸層的主要功能

(1)傳輸層為應用進程之間提供了端到端的邏輯通信(但網絡層是為主機之間提供邏輯通信)。


(2)傳輸層還要對收到的報文進行差錯檢驗。
(3)傳輸層提供面向連接(TCP)和無連接(UDP)的服務。

5.4.3 傳輸層的端口

「計算機網絡」第五章:傳輸層

(1)TCP的端口

端口用一個16位端口號進行標誌。

端口號只具有本地意義,即端口號只是為了標誌本計算機應用層的各進程。在Internet中不同計算機的相同端口號是沒有聯繫的(最好不要有衝突)。

5.5 UDP協議

(1)UDP是無連接的,即發送數據之前不需要建立連接。

(2)UDP使用盡最大努力交付,即不保證可靠交付,同時也不使用擁塞控制。

(3)UDP是面向報文的,適合多媒體通信的要求。

(4)UDP支持一對一,一對多,多對一,多對多交互通信。

(5)UDP首部開銷小,只有8個字節。

「計算機網絡」第五章:傳輸層

5.5.1 UDP的首部格式

「計算機網絡」第五章:傳輸層

首部中的長度指的是UDP用戶數據報的長度(首部+數據)。
偽首部用於檢驗和,我的理解是偽首部是IP數據包首部的後部分。

「計算機網絡」第五章:傳輸層

5.6 TCP協議

(1)TCP是面向連接的傳輸層協議。(三次握手)

(2)每一條TCP連接智能有兩個端點(endpoint),每一條TCP連接只能時點對點的(一對一)。

(3)TCP提供可靠交付的服務。(確保不丟包)

(4)TCP提供全雙工通信。(因為需要接收端的反饋,例如如果接收端處理不過來,可讓發送端慢一點,流量控制)

(5)面向字節流。

「計算機網絡」第五章:傳輸層

如果要傳輸一個比較大的數據,首先一次只會傳輸一小塊,這個數據塊的大小是沒有規律的。加上數據包數據幀的頭,發送給接收端,接收端去掉首部,再次拼接。

5.6.1 TCP的連接

(1)TCP把連接作為最基本的抽象。

(2)每一條TCP連接有兩個端點。

(3)TCP連接的端點不是主機,不是主機的IP地址,不是應用程序,也不是傳輸層協議端口,TCP連接的端點叫 套接字(socket).

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

->每一條TCP連接唯一地被通信兩端的兩個套接字所確定,即:

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

(4)端口號拼接到IP地址即構成了套接字。

5.7 TCP如何實現可靠傳輸

(1)可靠傳輸的工作原理——停止等待協議。

「計算機網絡」第五章:傳輸層

->在發送完一個分組後,必須暫時保留已發送的分組的副本。
->分組和確認分組都必須進行編號。
->超時計時器的重傳時間應當比數據在分組傳輸的平均往返時間更長一些。
(2)確認丟失和確認遲到

「計算機網絡」第五章:傳輸層

(3)可靠通信的實現

->使用上述的確認和重傳機制,微秒就可以在不可靠的傳輸網絡上實現可靠的通信。

->這種可靠傳輸的協議常稱為自動重傳請求ARQ(Automatic Repeat reQuest)。

->ARQ表明重傳的請求是自動進行的。接收方不需要請求發送方重傳某個出錯的分組。

->缺點,信道利用率低。

「計算機網絡」第五章:傳輸層

->信道利用率U

「計算機網絡」第五章:傳輸層

(4)流水線傳輸(發送方)
發送方可連續發送多個分組,不必每發完一個分組就停頓下來等待對方的確認。由於信道上一直有數據不間斷的傳送,這種傳輸方式可獲得很高的信道利用率。

「計算機網絡」第五章:傳輸層

(5)連續ARQ協議

「計算機網絡」第五章:傳輸層

如果1確認收到了,則滑動窗口。

「計算機網絡」第五章:傳輸層

如果12收到了,3沒有收到,則滑動窗口會會回溯到3位置,重新發送。
(6)累計確認(接收方)
接收方一般採用累計確認的方式。
優點:容易實現,信道利用率高。
缺點:不能向發送方反映出接收方已經正確收到的所有分組的信息。

5.8 TCP報文段的首部格式

「計算機網絡」第五章:傳輸層

(1)源端口:2個字節16位。

(2)目的端口:2個字節16位。

(3)序號:當前數據的第一個字節在整個文件中的序號。

(4)確認號ack:接收端發送,提示發送端下一次該發的數據在整個文件中的序號。接收端收到後,會把這個序號之前的數據從緩存中刪掉。

(5)數據偏移:當前TCP報文段第多少個字節後是TCP的數據部分了。數據偏移最多表示1111,即15,他最多可以表示15乘以4,即60個字節的偏移量,所以選項+填充最多隻能是40個字節。

(6)保留:6位,無作用。

(7)URG:urgent,意思是優先級高,發送端優先發送,而不是在緩存中排隊。

(8)ACK:acknowledge,1意味著確認建立了會話。

(9)PSH:1意味著接收端優先讀取,而不是在緩存中排隊。

(10)RST:reset,1意味著TCP會話出現嚴重錯誤,必須釋放和重新連接。

(11)SYN:同步。1意味著要發起會話。

(12)FIN:finish,1意味著釋放連接。

(13)窗口:接收端先發,發送端根據接收端的窗口尺寸確定發送端窗口尺寸。

(14)檢驗和:

(15)緊急指針:只有URG為1才有用。

5.8.1 抓包分析P64

(1)

「計算機網絡」第五章:傳輸層

第一步,ARP,建立可靠傳輸
第二步,UDP(DNS同時佔用UDP和TCP的53端口),域名解析
第三步,TCP,識別網關MAC地址

(2)cmd打開控制檯如下,當前是建立了2個會話。

「計算機網絡」第五章:傳輸層

(3)淺藍:請求的數據包;深藍:得到的結果;
192是我方地址;8是服務器地址;

「計算機網絡」第五章:傳輸層

(4)兩個SYN是雙方確認建立了會話,MSS意思是最大數據包1460字節,web端(219.148.36.48)最多能緩存win=64240字節,我端(192.168.80.63)最多能緩存win=65535字節,如果某一方發了另一方win字節個數據對方都沒有確認,那麼就暫停。標記為TCP這三行(12,13,14),不光是建立對話,還協商了一些參數。

「計算機網絡」第五章:傳輸層

(5)第15行,開始正式通信,HTTP。GET的意思是我要訪問這個網站了。白框內寫著各個層的數據首部的結構。

「計算機網絡」第五章:傳輸層

目標端口Src Port是80,源端口Dst Port是1057,序號Sep是1,確認號Ack是1,數據部分長度是1-203字節。

「計算機網絡」第五章:傳輸層

(6)219->192是發送網頁信息,192->219是確認反饋。注意,16第一次發送數據和19反饋接收是沒有數據len=0。

「計算機網絡」第五章:傳輸層

從建立會話,到傳輸數據到確認反饋的一個過程如下,15-19。

「計算機網絡」第五章:傳輸層

5.9 TCP如何實現可靠傳輸P67

5.9.1 以字節為單位的滑動窗口技術

A的發送窗口是由B的接受窗口長度決定的。
在沒有收到B確認收到之前,A不能刪掉滑動窗口內的內容。
A可以持續給B發送,直到A的滑動窗口內數據都發了。


「計算機網絡」第五章:傳輸層


B收到後給A發確認收到的反饋ACK,序號是下一個應該發送的字節的序號,A收到後,就可以滑動窗口到對應的位置。例如B反饋ACK是7,那麼A的滑窗可以移動到7位置,1-6刪除。21-26可以發送。

「計算機網絡」第五章:傳輸層

B收到1-6之後,也開始滑窗,B的應用程序可以讀取1-6的數據。B的滑窗繼續接收。

「計算機網絡」第五章:傳輸層

以上是正常狀態下的情況。如果出現丟失情況,例如7-9丟失,此時B反饋的ACK=7.因為10-12收到了,因此B發送SACK(選擇性確認),A只發送7-9.

「計算機網絡」第五章:傳輸層

「計算機網絡」第五章:傳輸層

5.9.2 超時重傳時間的確定

TCP美髮送一個報文段,就對這個報文段設置一次計時器。只要計時器設置的重傳時間到了,但是還沒有收到數據,那麼就重傳這一報文段。

RTTs(new) = (1 - alpha) x (RTTs(old)) + alpha x (new RTT樣本)

超時重傳時間應略大於上面得出的加權平均往返時間RTTs。alpha推薦值是0.125.

這個公式的目的是根據網速和帶寬的實時情況調整往返時間。

5.10 TCP如何實現流量控制P68

解決通信兩端處理時間不一樣的問題。通過實時調整滑窗尺寸的大小(尺寸甚至可以是0)來實現流量控制。接收端主動調整滑窗大小,發送端根據接收端發送的報文調整相應的滑窗。發送端也會定時發送報文向接收端確認滑窗信息,避免接收端發送的相關調整滑窗大小的報文丟失帶來的影響。

5.11 TCP如何避免網絡擁塞

(1)出現資源擁塞的條件:對資源需求的總和>可用資源。

(2)擁塞控制是一個全局性的過程,涉及到所有的主機,所有的路由區,以及與降低網絡傳輸性能有關的所有因素。

(3)流量控制往往指在給定的發送端和接收端之間的點對點通信量的控制,它所要做的就是抑制發送端發送數據的速率,以便使接收端來得及接收。

5.11.1 擁塞控制起到的作用

紅線和綠線之間是數據丟失內容。

「計算機網絡」第五章:傳輸層

5.11.2 慢開始和擁塞避免

(1)發送方維持 擁塞窗口cwnd(congestion window)

(2)發送方控制擁塞窗口的原則是:

只要網絡沒有出現擁塞,擁塞窗口就再增大一些,以便把更多的分組發送出去;

只要網絡出現擁塞,擁塞窗口就減少一些,以減少注入到網絡中的分組數。

(3)慢開始算法的原理

「計算機網絡」第五章:傳輸層

(4)設置慢開始門限狀態變量ssthresh

慢開始門限狀態變量ssthresh的用法如下:

當cwnd<ssthresh>

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

當cwnd=ssthresh時,使用慢開始算法或擁塞避免算法均可;

(5)擁塞避免算法的思路

讓擁塞窗口cwnd緩慢地增大,即每經過一個往返時間RTT就把發送方的擁塞窗口cwnd加1,而不是加倍,使擁塞窗口cwnd按線性規律緩慢增長。

(6)當網絡出現擁塞時對策

無論是在慢開始階段還是在擁塞避免階段,只要發送方判斷網絡出現擁塞(其根據就是沒有按時收到確認),就要把慢開始門限ssthresh設置為出現擁塞時的發送方窗口值的一半(但是不能小於2)。

然後把擁塞窗口cwnd重新設置為1,執行慢開始算法。

這樣做的目的就是要迅速減少主機發送到網絡中的分組數,使得發生擁塞的路由器有足夠的時間吧隊列中積壓的分組處理完畢。

(7)慢開始和擁塞避免算法的實現舉例

「計算機網絡」第五章:傳輸層

->擁塞避免並非指完全能夠避免擁塞。利用以上的措施要完全避免網絡擁塞還是不可能的。

->擁塞避免是說在擁塞避免階段吧擁塞避免窗口控制為按線性規律增長,使網絡比較不容易出現擁塞。

5.11.3 快重傳和快恢復

快重傳算法首先要求接收方每收到一個失序的報文段後就立即發出重複確認,這樣做可以讓發送方及早知道有報文段沒有到達接收方。

當發送端收到連續三個重複的確認時,就執行“乘法減少”算法,即把慢開始門限ssthresh減半,但擁塞窗口cwnd現在不設置為1,而是設置為慢開始門限ssthresh減半後的數值,然後開始執行擁塞避免算法(“加法增大”),使擁塞窗口緩慢地線性增大。

「計算機網絡」第五章:傳輸層

5.11.4 發送窗口的實際上限制

取接收方窗口和 擁塞窗口 這兩個變量中的較小值。

發送窗口的上限制 = min {rwnd, cwnd}.

5.12 TCP傳輸連接管理

傳輸連接有三個階段,即:連接建立,數據傳送,連接釋放。

TCP連接的建立都是採用客戶服務器方式。

主動發起連接建立的應用進程叫做客戶(client)。

被動等待連接建立的應用進程叫做服務器(server)。

「計算機網絡」第五章:傳輸層

頭兩次握手除了確定雙方都能聯通外,還通知了雙方的一些端口信息。

第三次握手原因:假如沒有第三次握手,A發送報1,B沒有收到,A又發了一遍,B收到了,反饋報2.此時之前的報1,B又收到了,再次反饋報2. 因為A已經收到了報2了,他不會理會第二次的報2,但是B又在等A的反饋,於是雙方都在等。

「計算機網絡」第五章:傳輸層

"/<ssthresh>


分享到:


相關文章: