
第一節傳輸層的基本服務
傳輸層的核心任務:應用行程之間提供端到端的邏輯通信服務,傳輸層是除應用層外唯一的端到端層
主機具有OSI七層模型任意一層協議;
網路核心中的路由器、交換機、集線器等只用到OSI七層模型的下三層功能
傳輸層功能:(分復流擁尋差錯-可靠;吩咐劉墉尋差錯-可靠)
- 1)對應用層報文進行分段和重組
- 2)面向應用層實作復用與分解
- 3)實作端到端的流量控制
- 4)擁塞控制
- 5)傳輸層尋址
- 6)對報文進行差錯檢測
- 7)實作行程間的端到端可靠資料傳輸控制
傳輸層尋址與埠:
- 一臺計算機中,不同應用行程用行程識別符號(行程ID)來區分;
- TCP/IP體系結構網路中通過在傳輸層使用協議埠號,通常簡稱為埠(port),在全網范圍內利用 “IP 地址+埠號”唯一標識一個通信端點
埠號:傳輸層埠號為16位整數,可以編號65536個(2的16次方)
傳輸層埠號:
- 1、服務器端使用的埠號:熟知埠號和登記埠號(在 IANA 登記)
- 2、客戶端使用的埠號:臨時性,在客戶行程運行時由作業系統隨機選擇唯一的未被使用的埠號

無連接服務與面向連接服務:

第二節 傳輸層的復用與分解
多路復用:在源主機,傳輸層協議從不同的套接字收集應用行程發送的數 據塊,并為每個資料塊封裝上首部資訊(包括用于分解的資訊)構成報文段,然后將報文段傳遞給網路層,
多路分解:在目的主機,傳輸層協議讀取報文段中的欄位,標識出接收套接字,進而通過該套接字,將傳輸層的報文段中的資料交付給正確的套接字,
多路復用與多路分解(復用與分解/復用與分用):支持眾多應用行程共用同 一個傳輸層協議,并能夠將接收到的資料準確交付給不同的應用行程
無連接的多路復用與多路分解:
- 用戶資料報協議(User Datagram Protocol, UDP) :Internet提供無連接服 務的傳輸層協議,
- UDP套接字二元組:<目的IP地址,目的埠號>
面向連接的多路復用與多路分解
- 傳輸控制協議 (Transmission Control Protocol,TCP) :Internet提供面向連接服務的傳輸層協議,
- TCP套接字四元組:<源IP地址,源埠號,目的IP地址,目的埠號>
第三節 停-等協議與滑動視窗協議
不可靠傳輸信道在資料傳輸中可能發生的問題:
- 1、位元差錯:1001——1000
- 2、亂序:資料塊1、2、5、6、3、4
- 3、資料丟失:資料塊1、2、5
基于不可靠信道實作可靠資料傳輸采取的措施:
- 差錯檢測:利用編碼實作資料包傳輸程序中的位元差錯檢測,
- 確認:接收方,向發送方反饋接收狀態,ACK(肯定確認);NAK(否定確認)
- 重傳:發送方重新發送接收方沒有正確接收的資料,
- 序號:確保資料按序提交;對資料進行編號,即便不按序到達,可以按序提交
- 計時器:解決資料丟失問題,
停-等協議、滑動視窗協議:是基于不可靠信道實作可靠資料傳輸采取的措施的兩種實作
自動重傳請求協議(ARQ):為了實作可靠資料傳輸,接收方通過使用肯定確認ACK 與否定確認NAK,可以讓發送方知道哪些內容已被正確接收,哪些內容未被正確接收而需要重傳,基于這種重傳機制的可靠資料傳輸協議稱為自動重傳請求協議;停-等協議是其最簡單的一個方式
1、停-等協議的作業流程
- 1、發送方發送經過差錯編碼和編號的報文段,等待接收方的確認,
- 2、接收方如果正確接收報文段,即差錯檢測無誤且序號正確,則接收報文段,并 向發送方發送ACK,否則丟棄報文段,并向發送方發送NAK,
- 3、發送方如果收到ACK,則繼續發送后續報文段,否則重發剛剛發送的報文段,
停-等協議:所需緩沖空間小 但是 性能差、信道利用率低;使用流水線協議可以改善
2、流水線協議:管道協議,允許發送方在沒有收到確認前,連續發送多個分組, 最典型的流水線協議:滑動視窗協議
1、增加分組序號,
2、發送方和接收方可以快取多個分組,
發送方的發送視窗(Ws ):發送方可以發送未被確認分組的最大數量;
接收方的接收視窗(Wr ):接收方可以快取的正確到達的分組的最大數量;
滑動視窗協議,根據視窗的大小,可以具體分為:
- 回退N步協議:GBN協議(Go-Back-N)
- 選擇重傳協議: SR協議(Selective Repeat)

對于滑動視窗協議,與信道利用率有關的是發送視窗大小
============GBN協議================
發送端快取能力高,可以在沒有得到確認前發送多個分組, 接收端快取能力很低,只能接收1個按序到達的分組,不能快取未按序到達的分組;
GBN協議:發送視窗WS≥1 ,接收視窗Wr =1,
GBN發送方回應的3類事件:
- 1、上層呼叫,
- 2、收到1個ACKn,GBN采用累積確認方式,即發送方收到 ACKn時,表明接收方正確接收序號n以及序號小于n的所有分組,
- 3、計時器超時,發送方只使用一個計時器
例如:發送發,發送1,2,3,4,5;接收方收到1,2,5;顯然3,4沒有收到確認,所以3,4,5要重新發送
GBN 協議接收端快取能力很低,只能接收一個按序到達的分組,不能快取未按序到達的分組,如果其中的某 個分組差錯,就會引起 GBN 發送方重發該分組及其之后的所有分組;GBN 協議比較適用低誤碼率、低丟包率、帶寬高時延積信道,且對接收方快取能力要求低,
==============SR協議===============
發送端快取能力高, 接收端快取能力高;
SR協議: 發送視窗WS>1,接收視窗Wr>1,
SR發送方回應事件:
- 1、上層呼叫,
- 2、計時器超時,發送方對每個分組進行計時,
- 3、收到ACKn,SR協議采取逐個確認方式
例如:發送方,發送1,2,3,;接收方接受1,3 ;顯然2發送方沒有收到接收方的ack,所以發送方重新發送2;


信道利用率


第四節 用戶資料報協議(UDP)
用戶資料報協議(User Datagram Protocol,UDP):Internet傳輸層協議,提供無連接、不可靠、資料報盡力傳輸服務,
UDP的特點:
- 1、應用行程容易控制發送什么資料以及何時發送,會出現分組的丟失和重復;適合實時性且能容忍一些資料丟失的網路應用,
- 2、無需建立連接,
- 3、無連接狀態,
- 4、首部開銷小,只有8個位元組,
UDP資料報首部:UDP首部四個欄位,每個欄位長度都是2個位元組,共8個位元組

- 源埠號和目的埠號:UDP實作復用和分解,
- 長度:指示UDP報文段中的位元組數(首部和資料的總和),
- 校驗和:接收方使用來檢測資料報是否出現差錯
應用資料欄位:應用層資料占用
UDP校驗和:提供差錯檢測功能;UDP的校驗和用于檢測UDP報文段從源到目的地傳送程序中,其中的 資料是否發生了改變
UDP校驗和計算規則:udp長度參與兩次計算
- 1、所有參與運算的內容按16位對齊求和;UDP校驗和計算的內容包括3部分:UDP偽首部、UDP首部、應用資料
- 2、求和程序中遇到溢位(即進位)都被回卷(即進位與和的最低位再相加),
- 3、最后得到的和取反碼,就是UDP的校驗和,填入UDP資料報的校驗和欄位
UDP偽首部:源IP地址、目的IP地址、協議號對應封裝UDP資料報的IP分組的欄位, UDP協議號:17

UDP校驗和的步驟:
- 1、所有參與運算的內容按16位對齊求和(UDP偽首部、UDP首部、應用資料 三個部分的二進制資料的和)
- 2、求和程序中遇到溢位(即進位)都被回卷(即進位與和的最低位再相加),
- 3、最后得到的和取反碼,就是UDP的校驗和,填入UDP資料報的校驗和欄位,反碼就是 0->1;1->0;
第五節 傳輸控制協議(TCP)
傳輸控制協議(Transmission Control Protocol ,TCP):Internet傳輸層協議,提供面向連接、可靠、有序、位元組流 傳輸服務,
- 第一、應用行程先建立連接,
- 第二、每一條TCP連接只有兩個端點,
- 第三、可靠交付:無差錯,不丟失,不重復,按序到達
- 第四、全雙工通信,
- 第五、面向位元組流; 流:位元組序列,應用程式和TCP的互動是一個個資料塊,TCP把他們看做是無結構位元組流,
最大報文段長度(Maximum Segment Size , MSS):報文段中封裝的應用層資料的最大長度,
TCP報文段首部結構:TCP段的首部長度最短是20位元組 (首部報文長度=固定首部長度(20) + 可選項)

1、源埠號欄位,目的埠號欄位:占16位,復用和分解上層應用的資料,
2、序號欄位、確認序號欄位:占32位, 序號欄位:TCP的序號是對每個應用層資料的每個位元組進行編號; 確認序號欄位:期望從對方接收資料的位元組序號,即該序號對應的位元組尚未收到;
3、首部長度欄位:占4位,指出TCP段的首部長度,以4位元組為計算單位,
4、保留欄位:占6位,保留為今后使用,目前值為0,
5、URG、ACK、PSH、RST、SYN、FIN各占1位,為標志位欄位,取值為0或1;
- 緊急URG=1,緊急指標欄位有效,優先傳送;
- 確認ACK=1,確認序號欄位有效;ACK=0時,確認序號欄位無效;
- 推送PSH=1,盡快將報文段中的資料交付接收應用行程,不要等快取滿了再交付,
- 復位RST=1,TCP連接出現嚴重差錯,釋放連接,再重新建立TCP連接,
- 同步SYN=1,該TCP報文段是一個建立新連接請求控制段或者同意建立新連接的確認段
- 終止FIN=1,TCP報文段的發送端資料已經發送完畢,請求釋放連接
6、接收視窗欄位:占16位,向對方通告我方接收視窗的大小,用于實作TCP的流量控制
7、校驗和欄位:占16位, 計算方法與UDP校驗和的計算方法相同,TCP協議號是6,
8、緊急指標欄位:占16位, URG=1時,才有效,指出在本TCP報文段中緊急資料共有多少個位元組
9、選項欄位長度可變,最短為0位元組,最長為40位元組
10、填充欄位,取值全為0,目的是為了整個首部長度是4位元組的整倍數
TCP連接管理:連接建立與連接拆除,
第一次握手:客戶向服務器發送連接請求段:(SYN=1,seq=x) SYN=1:建立連接請求控制段; seq=x:表示傳輸的報文段的第1個資料位元組的序列號是x,此序列號代表整個報文段的序號; 客戶端進入SYN_SEND(同步發送狀態)
第二次握手:服務器相應確認報文段:(SYN=1,ACK=1,seq=y, ack_seq=x+1) SYN=1:同意建立新連接的確認段;ack_seq=x+1:表示已經收到了序列號為x的報文段,準備接收序列號為x+1的報文段; seq=y:服務器告訴客戶確認報文段的序列號是y;服務器由LISTEN進入SYN_RCVD(同步收到狀態)
第三次握手:客戶對服務器的同意連接報文段進行確認:(ACK=1,seq=x+1,ack_seq=y+1); seq=x+1:客戶此次的報文段的序列號是x+1; ack_seq=y+1:客戶期望接收服務器序列號為y+1的報文段; 當客戶發送ACK時,客戶端進入ESTABLISHED狀態;當服務收到ACK后,也進入ESTABLISHED狀態; 第三次握手可攜帶資料
為什么需要三次握手?
- 第一次握手:客戶發送請求,此時服務器知道客戶能發送資料,
- 第二次握手:服務器發送確認,此時客戶知道服務器能發送資料能接收資料,
- 第三次握手:客戶發送確認,此時服務器知道客戶能接收資料,
TCP連接拆除:四次揮手

第一次揮手: 客戶向服務器發送釋放連接報文段:(FIN=1,seq=u) FIN=1:發送端資料發送完畢,請求釋放連接;seq=u:傳輸的第一個資料位元組的序號是u; 客戶端狀態由ESTABLISHED進入FIN_WAIT_1(終止等待1狀態)
第二次揮手:服務器向客戶發送確認段:(ACK=1,seq=v,ack_seq=u+1);ACK=1:確認字號段有效; ack_seq=u+1:服務器期望接收客戶資料序號為u+1;seq=v:服務器傳輸的資料序號是v; 服務器狀態由ESTABLISHED進入CLOSE_WAIT(關閉等待);客戶端收到ACK段后,由FIN_WAIT_1進入FIN_WAIT_2
第三次揮手: 服務器向客戶發送釋放連接報文段:(FIN=1,ACK=1,seq=v+1,ack_seq=u+1); FIN=1:請求釋放連接;ACK=1:確認字號段有效;ack_seq=u+1:表示服務器期望接收客戶資料序號為u+1;seq=v+1:表示自己傳輸的第一個資料位元組的序號是v+1;服務器狀態由CLOSE_WAIT進入LAST_ACK(最后確認狀態)
第四次揮手: 客戶向服務器發送確認段:(ACK=1,seq=u+1,ack_seq=w+1);ACK=1:確認字號段有效;ack_seq=v+1+1:表示客戶期望接收服務器資料序號為v+1+1; seq=u+1:表示客戶傳輸的資料的序號是u+1;客戶端狀態由FIN_WAIT_2進入TIME_WAIT,等待2MSL時間,進入CLOSED狀態; 服務器在收到最后一次ACK后,由LAST_ACK進入CLOSED
確認序號:期望從對方接收的位元組序號,即該位元組對應的序號尚未到達,該序號之前的位元組已全部接收,
TCP可靠資料傳輸:
可靠:保證接收方應用行程從緩沖區讀出的位元組流與發送方發出的位元組流是完全一樣的
TCP實作可靠資料傳輸服務的作業機制
1、應用層資料被分割成TCP認為最適合發送的資料塊(最大報文段長度(Maximum Segment Size , MSS): 報文段中封裝的應用層資料的最大長度)
2、序號,發送方對發送的資料包進行編號,確保資料按序提交給接收方,(序號:一個位元組占用一個序號,序號欄位指的就是一個報文段第一個位元組的序號)
3、確認,接收方向發送方反饋接收狀態,確認是否正確接收資料, TCP采取累計確認,
4、查錯檢測,利用差錯編碼實作資料包傳輸程序中的位元查錯檢測(甚至糾正),
5、重傳,發送方重新發送接收方沒有正確接收的資料(快速重傳: TCP發送方接收到對相同序號的3次重復ACK,就說明被重復確認的報文段已丟失,這時候即便沒有超時,也會重發該報文段)
6、計時器,在發送方引入計時器,解決資料丟失問題(計時器超時時間設定:TimeoutInerval=EstimatedRTT+4×DevRTT; EstimatedRTT:抽樣RTT的加權移動平均值, DevRTT:偏差RTT)
TCP生成ACK的策略:
- 1、具有所期望序號的報文段按序到達,所有在期望序號及以前的報文段都已被確認,TCP延遲500ms發送ACK,
- 2、具有所期望序號的報文段按序到達、且另一個按序報文段在等待ACK傳輸,TCP接收方立即發送單個累計ACK,確認以上兩個按序到達報文段;例如:接收方剛剛收到4,正準備回傳ACK5,此時5來了, 則接收方回傳ACK6
- 3、擁有序號大于期望序號的失序報文段到達,TCP接收方立即發送重復ACK,指示下一個期望接收位元組的序號;例如:接收方回傳ACK5,但是6到了則接收方回傳三次重復的ACK5
- 4、收到一個報文段,部分或完全填充接收資料間隔;例如:接收方收到1 2,且回傳對1 2的確認,后來又收到了4 5 6,這時3來了, 則接收方回傳ACK7
TCP的流量控制:協調發送方與接收方資料的發送與接收速度;在通信程序中,接收方設定報文段的接收視窗欄位來將視窗大小通知給發 送方,
TCP的擁塞控制:
網路擁塞:太多的主機以太快的速度向網路中發送太多的資料,超出了網 絡處理能力,導致大量資料分組擁擠在中間設備佇列中等待轉發,網路性能顯 著下降的現象
擁塞控制:通過合理調度、規范、調整向網路中發送資料的主機數量、發 送速率、資料量,以避免擁塞或消除已發生的擁塞;擁塞控制可以在不同的層實作,ATM網路是在網路層進行,Internet是在傳輸層進行(通過TCP實作)
擁塞控制演算法:慢啟動、 擁塞避免 、快速重傳、 快速恢復
1、擁塞視窗(CongWin):連接開始,為1MSS ; 1個最大報文段長度(Maximum Segment Size , MSS)
2、閾值(Threshold):臨界值
======================慢啟動=====================
慢啟動演算法:在TCP連接建立時,每經 過1個RTT時間,擁塞視窗增大一倍,
======================擁塞避免===================
擁塞避免演算法:當擁塞視窗大于等于閾 值時,每經過1個RTT,擁塞視窗的值 加1,

====================快速重傳=========================
快速重傳:接收端收到3次重復確認,則推斷被重復確認的報文段已經丟失,于是立 即發送被重復確認的報文段
==============快速恢復演算法==================
思考:怎樣算是報文段丟失了: 1、收到三次重復確認 , 2、計時器超時
快速恢復演算法:當發生3次重復確認時,網路擁塞程度不是很嚴重, 閾值和擁塞視窗的調整方法:是直接從新的閾值開 始,直接進入擁塞避免階段,
例如:發生3次重復確認時,當前擁塞視窗為24MSS,當前閾值為16MSS, 新的閾值:為當前擁塞視窗的一半, 新的閾值= 24MSS÷2=12MSS;新的擁塞視窗:調整為新的閾值, 新的擁塞視窗=新的閾值=12MSS;調整好新的閾值和新的擁塞視窗后,使用擁塞避免演算法增加擁塞視窗大小,
例如:發生計時器超時,當前擁塞視窗為24MSS,當前閾值為16MSS, 新的閾值:為當前擁塞視窗的一半, 新的閾值= 24MSS÷2=12MSS; 新的擁塞視窗:直接調整為1MSS,新的擁塞視窗=1MSS; 調整好新的閾值和新的擁塞視窗后,使用慢啟動,擁塞避免演算法增加擁塞視窗 大小,

視窗調整的基本策略 (Additive Increase,Multiplicative Decrease ,AIMD): 網路未發生擁塞時,逐漸“加性”增大視窗, 網路擁塞時“乘性”減小視窗,
擁塞預防策略: 流量整形技術:規范主機向網路發送資料的流量,
為預防擁塞出現在網路的傳輸層上可采取的策略是:確定超時策略,
TCP擁塞控制的基本思想:AIMD
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/41026.html
標籤:其他
上一篇:如何設定TLS
下一篇:K8S二次開發,看過來

