更新時間:2025-02-09 08:53:44作者:佚名
網絡層可以將數據從一個主機傳輸到另一個主機,但不能與該過程建立連接。
傳輸層是關于將過程與接收到的數據聯系起來,以便數據可以為應用程序服務。
因此,傳輸層是只有主機具有的級別
1.2傳輸層的兩個協議
1.3運輸層的地址和端口
端口號僅用于計算機來區分本地過程。總共有2^16 = 65536端口號。端口號有很多,不能隨便使用。
1.3.1通用申請端口號
2。UDP協議2.1 UDP概述
筆記:
由于UDP一次發送完整的消息,因此不會碎片,因此應用程序層傳輸的數據不應太大,否則網絡層碎片任務將非常重,但是不能太小,否則效率將很低
UDP適用于某些實時應用程序,因為實時應用程序的延遲要求很高,需要立即響應。
2.2 UDP標頭格式
2.2.1 UDP檢查位構圖
偽標頭僅用于計算驗證總和,并在完成計算后將其丟棄。您可以在下面看到UDP驗證方法。
3。TCP協議3.1 TCP協議的功能
TCP必須在執行數據交換之前建立連接,因此TCP已連接。
TCP隨機傳輸數據
3.2 TCP段的第一部分
請參閱上圖,您可以看到TCP隨機將數據分配并用TCP標頭傳輸。因此,序列編號是標記這些隨機劃分的數據。在這里,第一個字節的數量被視為序列編號。
確認編號是在收到它后標記它避免的英文,這意味著您之前收到的所有內容。我希望我收到的下一個編號數據是從確認號碼開始的數據。
偏移是要標記從TCP開始的數據是數據。這里的單元是4B,此偏移是TCP標頭的長度。
窗口是接收器告訴發件人多少位置(緩存)來存儲數據的地方。
緊急指針告訴TCP緊急數據的位置
3.2.1 TCP的六個控制位
URG的特征是讓數據排列。如果urg = 1,它將預先發送到緩存中的第一個變速箱。
它是接收端的URG,并盡快接收具有PSH = 1的數據。
請注意,如果沒有PSH,則接收器通常在緩存完成后將數據發送到主機。
要在主機A和B之間建立連接,A首先發送消息,其中SYN = 1
b收到它后,它還回復了帶有SYN = 1的消息,這意味著連接已接受。
3.3 TCP連接管理3.3.1 TCP三次握手(建立連接)
第一段的意思是
SYN = 1:(a)即將建立連接!
seq = x(隨機):由于還沒有數據,所以寫什么都沒關系
第二段意味著
syn = 1:i(b)同意您(a)建立連接!
ACK = 1:建立了連接,并且必須將后續的ACK設置為1。
seq = y(隨機):由于還沒有數據,所以寫什么都沒關系
ack = x+1:發件人(a)說發件人正在發送x-thit數據(盡管發件人在談論胡說八道),所以我(b)想要的是x+1位數據
第三段意味著
SYN = 0:建立連接時SYN僅為1,在其他時間設置為0。
ACK = 1:建立了連接,并且必須將后續的ACK設置為1。
seq = x+1:消息段i(a)的第一個字節為x+1
ack = y+1:收件人(b)在之前說,yth位數據的發送(盡管接收者是胡說八道),所以我(a)想要的是y+1位數據
請注意,TCP是雙向的,因此沒有絕對不變的發件人和接收器。這里的兩個主機都同時既是發件人又是接收器。
TCP三次握手引起的SYN洪水攻擊
3.3.2 TCP四波(連接釋放)
第一段的意思是
fin = 1:(a)連接即將發布!
seq = u:我發送了很多數據,我只是在這里使用u來引用它。在這里你有一個確定的價值
第二段意味著
ACK = 1:建立了連接,并且必須將后續的ACK設置為1。
seq = v:我發送了很多數據,我只是在此處使用V來引用它。這里V具有確定的價值。
ack = u+1:發件人(a)說發送是u-thit數據,所以我(b)想要的是u+1位數據(盡管目前已決定發布連接)
第三段意味著
fin = 1 :( b)連接即將發布!
ACK = 1:建立了連接,并且必須將后續的ACK設置為1。
seq = w:我發送了很多數據,在這里我只用w指它,這里有一個確定的值
ack = u+1:發件人(a)說發送是u-thit數據,所以我(b)想要的是u+1位數據(因為a沒有直接發送數據,所以第二個數據第三段所有ack均為u+1)
第四段意味著
ACK = 1:建立了連接,并且必須將后續的ACK設置為1。
seq = u+1:當u-bit數據之前發送的數據時,b也需要u-bit數據,因此我發送u-bit數據
ack = w+1:發件人(b)說發送是wth位數據,所以我(a)想要的是w+1位數據
為什么我需要等待計時器到2MSL?
因為這確保B可以接收A的終止消息段,然后輸入封閉狀態
例如,如果A的第四條消息丟失,則在等待MSL之后,B將重新發送第三條消息。花費少于1MSL后,A將再次收到第三條消息,然后您可以再次返回B。發送第四條消息并提示B關閉連接
3.4 TCP可靠傳輸
TCP提供可靠的傳輸,并且可以通過應用程序層來解決仍然不可靠的傳輸的UDP。
3.4.1序列號
也就是說,TCP根據下面的數據鏈路層的MTU(最大傳輸單元)將數據切成幾端,并將其切成數字。
3.4.2確認
每次發送者發送數據之后,接收器都需要確認。
TCP使用累積確認機制,這需要第一個丟失字節中缺少的數據包段。如圖所示,丟失了456,有78個到達,但要求發送的數據編號為4
3.4.3重新傳播
為什么使用自適應算法?網絡環境太復雜了,路徑漫長而短。如果RTT設置短,則無法照顧距離。如果RTT設置很長,則將降低網絡利用率,因此使用RTT。
3.5 TCP交通控制
簡而言之,接收器可以動態發送信息以告訴發送者發送窗口的大小。
如果接收器無法接受,請讓發件人發送窗口較小,以使發件人的發送率將減慢速度,并且接收器將有時間處理其數據。
接收器完成處理后,他還可以發送請求以使發件人發送更大的窗口,以便發件人的發送率會更快提高,并且接收器可以處理更多數據,而不是等待免費收集數據。
3.5.1計時器
在此示例中,使用了累積的確認機制(一個回復ACK = 201)和三種流控制機制。
但是在某種情況下,B不允許A最后一次發送數據,如果B發送RWND大小的數據報我在處理數據后要恢復窗口大小時,該怎么辦?目前,A前面有B的指令,而發送窗口為0,無法發送數據。 B也在等待A回復,導致類似的僵局現象
解決方案:使用計時器
3.6 TCP擁塞控制
流量控制適用于一個,擁塞控制是一組
3.6.1四種用于擁塞控制的算法
盡管這里有四種算法,但它們通常與對結合使用。
3.6.2緩慢的啟動和避免交通擁堵
它在開始時成倍增長。 SSTHRESH表示緩慢的啟動閾值,這意味著從這個地方注入更多的數據包段,您需要開始緩慢增加。
隨后的時期將線性增長,每次增加1個,直到達到網絡擁塞狀態為止。
立即將CWND設置為1,并將原始STHRESH值調整為以前的網絡擁塞狀態的1/2(這里是24至12)
重復上述步驟,但請注意,SSTHRESH變化后線性生長的轉折點也發生了變化
3.6.3快速重傳和快速恢復
這類似于上面的緩慢啟動和避免交通擁堵的初始步驟,均以指數級增長,然后變成線性生長。
不同的觀點是,在收到持續的確認后,快速重傳和快速恢復算法是執行的。在這里,ACK是一個冗余的ACK。冗余ACK的特征是,如果未接收到某個部分的數據很多次,則將在達到一定數字后立即進行重傳。但是目前,它僅降至CWND的一半貝語網校,然后又有線性增長。而不是像慢速開始和避免交通擁堵那樣從頭開始。
在本文中比較常見名詞
多路復用和反復交流
積極的致謝還可以
負面確認負面確認
倒數計時器(倒計時)計時器
累積承認
接收緩沖區接收緩沖區或接收緩存
資源管理單元格
源(端口號)源端口號
目的地(端口號)目標端口號
校驗和校驗和
選擇性重復
快速重新翻新快速重新翻譯
流控制
三道握手
序列號(序列號:SEQ)
確認號(縮寫為ACK;請注意避免的英文,它與大小的ACK不同)
擁塞控制
額外增加,乘法減少
慢起始開始啟動
避免擁堵
快速恢復
重復(ACK)冗余(ACK)
隨機早期檢測隨機早期檢測