傳輸層

傳輸層的基本服務(wù)

一、傳輸層的功能

傳輸層的核心任務(wù)是為應(yīng)用進(jìn)程之間提供\color{blue}{端到端的邏輯通信服務(wù)}。

1. 主要功能包括:

\bullet ?傳輸層尋址

\bullet ?應(yīng)用層報文的分段和重組

\bullet ?報文的差錯檢測

\bullet ?進(jìn)程間的端到端可靠數(shù)據(jù)傳輸控制

\bullet ?面向應(yīng)用層實現(xiàn)復(fù)用與分解

\bullet ?端到端的流量控制

\bullet ?擁塞控制

2. 傳輸層提供的服務(wù)

傳輸層協(xié)議提供\color{blue}{邏輯通信}服務(wù);

傳輸層協(xié)議只需在\color{blue}{端系統(tǒng)}中實現(xiàn);

通信的真正端點并不是主機(jī),而是主機(jī)中運(yùn)行的\color{blue}{應(yīng)用進(jìn)程}

二、傳輸層尋址與端口

1. 用統(tǒng)一的尋址方法對應(yīng)用進(jìn)程進(jìn)行標(biāo)識——\color{blue}{端口號}

2. 在全網(wǎng)范圍內(nèi)利用 "\color{blue}{IP地址+端口號}" 唯一標(biāo)識一個通信端點。(即應(yīng)用進(jìn)程)

3. 傳輸層端口號為16位整數(shù),包含三類端口:

? ??(1)\color{blue}{熟知端口號},數(shù)值為 0~1023.

? ? (2)\color{blue}{登記端口號},數(shù)值為 1024~49151,為沒有熟知端口號的應(yīng)用程序使用。使用這個范圍的端口號必須在IANA登記,以防止重復(fù)。

? ? (3)\color{blue}{客戶端口號或短暫端口號},數(shù)值為 49152~65535,留給客戶進(jìn)程選擇暫時使用。

提供服務(wù)的人端口號一定要固定,但對于用戶來說無所謂。

三、無連接服務(wù)與面向連接服務(wù)

1. 無連接服務(wù)——數(shù)據(jù)傳輸之間無需與對端進(jìn)行任何信息交換(即 “握手”),直接構(gòu)造傳輸層報文段并向接收端發(fā)送。? ? ? ? ? ?——UDP

2. 面向連接服務(wù)——在數(shù)據(jù)傳輸之前,需要雙方交換一些控制信息,\color{blue}{建立邏輯連接},然后再\color{blue}{傳輸數(shù)據(jù)},數(shù)據(jù)傳輸結(jié)束后還需要再\color{blue}{拆除連接}。? ? ? ? ? ?——TCP


傳輸層的復(fù)用與分解

多路復(fù)用與多路分解:是傳輸層的一項基本功能,支持眾多應(yīng)用進(jìn)程共用同一個傳輸層協(xié)議,并能夠?qū)⒔邮盏降臄?shù)據(jù)準(zhǔn)確交付給不同的應(yīng)用進(jìn)程。

一、無連接的多路復(fù)用與多路分解

UDP套接字:<目的IP地址,目的端口號>

UDP套接字的端口號是UDP實現(xiàn)復(fù)用與分解的重要依據(jù)。

通過目的IP地址可以判斷到哪個主機(jī),通過目的端口可以判斷到哪個應(yīng)用進(jìn)程。

二、面向連接的多路復(fù)用與多路分解

TCP套接字(標(biāo)識一條TCP連接)

<源IP地址,源端口號,目的IP地址,目的端口號>

當(dāng)一個TCP報文段從網(wǎng)絡(luò)層到達(dá)一臺主機(jī)時,該主機(jī)根據(jù)這 4 個值來將報文段分解到相應(yīng)的套接字。



停-等協(xié)議與滑動窗口協(xié)議

一、可靠數(shù)據(jù)傳輸基本原理

實現(xiàn)可靠數(shù)據(jù)傳輸?shù)拇胧?/p>

1. 差錯檢測:利用差錯編碼實現(xiàn)數(shù)據(jù)包傳輸過程中的比特差錯檢測。

2. 確認(rèn):接收方向發(fā)送方反饋接收狀態(tài)。

3. 重傳:發(fā)送方重新發(fā)送接收方?jīng)]有正確接收的數(shù)據(jù)。

4. 序號:確保數(shù)據(jù)按序提交。

5. 計時器:解決數(shù)據(jù)丟失問題。

二、停-等協(xié)議

停-等協(xié)議的主要特點就是每發(fā)送一個報文段后就停下來等待接收方的確認(rèn)。

停-等協(xié)議的基本工作過程:

1. 發(fā)送方發(fā)送經(jīng)過差錯編碼和編號的報文段,等待接收方的確認(rèn);(\color{blue}{發(fā)送并等待確認(rèn)})

2. 接收方如果正確接收報文段,即差錯檢測無誤且序號正確,則接收報文段,并向發(fā)送方發(fā)送ACK,否則丟棄報文段,并向發(fā)送方發(fā)送NAK;(\color{blue}{接收并確認(rèn)/否認(rèn)}

3. 發(fā)送方如果收到ACK,則繼續(xù)發(fā)送后續(xù)報文段,否則重發(fā)剛剛發(fā)送的報文段。(\color{blue}{繼續(xù)發(fā)送/重發(fā)})

三、滑動窗口協(xié)議

1. 停-等協(xié)議的主要性能問題:

停止-等待機(jī)制降低了信道利用率。

2.解決方法:

\color{blue}{流水線協(xié)議}或管道協(xié)議——允許發(fā)送方在沒有收到確認(rèn)前連續(xù)發(fā)送多個分組。

3. 流水線協(xié)議的改進(jìn):

增加分組序號范圍;

發(fā)送方和(或)接收方必須。

4. 典型的流水線協(xié)議:

滑動窗口協(xié)議

停-等協(xié)議發(fā)送端每發(fā)送一個報文就需要停下來等待對方確認(rèn),相當(dāng)于發(fā)送窗口大小為1;接收端僅接收符合當(dāng)前預(yù)期的一個報文,接收窗口大小為1.

三、滑動窗口協(xié)議

兩種最具有代表性的滑動窗口協(xié)議:

1. 回退N步(Go-Back-N,GBN)協(xié)議:

發(fā)送端窗口大小較大,可以在未得到確認(rèn)前連續(xù)發(fā)送多個分組;但接收窗口大小僅為一,只能接收1個按序到達(dá)的分組,未按序到達(dá)的分組或者某個分組差錯,就會引起發(fā)送方重發(fā)該分組及其之后的所有分組。

2. 選擇重傳(Selective Repeat,SR)協(xié)議:

增加接收方緩存能力(接收窗口>1),緩存正確到達(dá)但失序的分組,僅要求發(fā)送方重傳未被接收方確認(rèn)的分組,等缺失分組到達(dá)后一并向上層按序提交。



用戶數(shù)據(jù)報協(xié)議(UDP)

用戶數(shù)據(jù)報協(xié)議UDP是Internet傳輸層協(xié)議,提供\color{blue}{無連接}\color{blue}{不可靠}、數(shù)據(jù)報盡力傳輸服務(wù)。

一、UDP數(shù)據(jù)報結(jié)構(gòu)

1. 源和目的端口號:用于UDP實現(xiàn)復(fù)用與分解。

2. 長度字段:在UDP報文段中的字節(jié)數(shù)(首部和數(shù)據(jù)的總和)。

3.校驗和:接收方用來檢測該報文段是否出現(xiàn)了差錯。

二、UDP校驗和

計算校驗和:

1. 對所有參與運(yùn)算的內(nèi)容(包括UDP報文段)按16位(16位對齊)求和;

2. 求和過程中遇到的任何溢出(即進(jìn)位)都被回卷(即進(jìn)位與和的最低位再加);

3. 最后得到的和取反碼。



傳輸控制協(xié)議(TCP)

一、TCP報文段結(jié)構(gòu)

源端口(2字節(jié)):發(fā)送端應(yīng)用程序的端口號.

目的端口(2字節(jié)):接收端應(yīng)用程序的端口號.

序號(4個字節(jié)):TCP是面向字節(jié)流傳輸?shù)模麨槊恳粋€字節(jié)編了一個序號,該報文段中序號為傳輸數(shù)據(jù)第一個字節(jié)的序號。例如:一個報文端的數(shù)據(jù)部分大小為100個字節(jié),他的序號為400,那么下一次報文段的序號就為500.

確認(rèn)號(4個字節(jié)):指明了下一個期待接收的字節(jié)序號,表明該序號之前的所有字節(jié)都正確接收到了,只有當(dāng)ACK為 1 的時候確認(rèn)號才有效.

數(shù)據(jù)偏移/首部長度(4個字節(jié)): 用來表示報文段數(shù)據(jù)的起始處距離報文起始處的長度,也就是TCP報文首部的長度,由于首部含有可選項,所以TCP報頭長度是不確定的.

保留:為了將來定義新的用途保留,現(xiàn)在一般都置為0.

URG緊急控制位:與緊急指針配合使用,當(dāng)URG為1的時候,就是通知系統(tǒng)這個報文段有緊急數(shù)據(jù),需要優(yōu)先傳輸。

ACK確認(rèn)控制位:當(dāng)它為?1?的時候,確認(rèn)號字段才有效,TCP規(guī)定,在連接建立后,所有ACK都應(yīng)該置為1

PSH推送控制位:當(dāng)報文段的psh為 1 的時候,接收方接到該報文段,就立刻將他交付給接收應(yīng)用進(jìn)程,而不是等緩存已滿的時候再交付。

RST復(fù)位控制位:當(dāng)報文段的RST為1的時候,說明該TCP連接出現(xiàn)錯誤,必須釋放連接,并重新建立連接。

SYN同步控制位:在連接建立時用來同步序列號,當(dāng) SYN=1,ACK=0 時說明這是一個連接請求報文段,如果對方同意建立連接則應(yīng)該在響應(yīng)的報文段中將 SYN=1,ACK=1,表示接受請求

FIN終止控制位:用來釋放連接,當(dāng)FIN=1時表示此報文段發(fā)送方的數(shù)據(jù)已經(jīng)發(fā)送完畢,并要求釋放連接。

窗口(2字節(jié)):用來告知發(fā)送端,接收端的緩存大小,以此控制發(fā)送方發(fā)送數(shù)據(jù)的速率,從而達(dá)到流量控制,窗口最大為65536。

校驗和:用CRC來校驗整個TCP報文段,包括tcp頭,tcp數(shù)據(jù),由發(fā)送端進(jìn)行計算和存儲,接收端進(jìn)行校驗,如果接收方發(fā)現(xiàn)校驗和有差錯,則TCP段會被直接丟棄。

緊急指針(2字節(jié)):標(biāo)識緊急數(shù)據(jù)在報文段結(jié)束的位置。

選項:長度可變,最大長度40個字節(jié)

二、TCP連接管理

連接建立——三次握手:

1. SYN連接請求(客戶端-->服務(wù)端)

2. SYNACK確認(rèn)(同步確認(rèn))

3. ACK確認(rèn)(客戶端再次確認(rèn))

TCP三次握手建立連接過程:

TCP斷開連接的過程——四次揮手:

三、TCP可靠數(shù)據(jù)傳輸

1. TCP的可靠數(shù)據(jù)傳輸實現(xiàn)機(jī)制包括差錯編碼、確認(rèn)、序號、重傳、計時器等。

2. TCP的可靠數(shù)據(jù)傳輸是基于滑動窗口協(xié)議,但是發(fā)送窗口大小動態(tài)變化。

? ? (1)封裝TCP報文段

? ? (2)發(fā)出一個報文段后啟動一個計時器

????(3)通過校驗和發(fā)現(xiàn)數(shù)據(jù)差錯

? ? (4)通過序號重新排序,丟棄重復(fù)的報文段

????(5)流量控制

四、TCP流量控制

1. TCP協(xié)議利用\color{blue}{窗口機(jī)制}實現(xiàn)流量控制,但不是簡單的滑動窗口協(xié)議。

2. TCP連接建立時,雙方都為之分配了固定大小的緩沖空間;TCP的接收端只允許另一端發(fā)送其緩沖區(qū)所能接納的數(shù)據(jù)。

? ? (1)接收端在給發(fā)送端發(fā)送確認(rèn)段時,通告接收窗口大小。

? ? (2)發(fā)送端在接下來發(fā)送數(shù)據(jù)段時,確保未確認(rèn)段的應(yīng)用層數(shù)據(jù)總量不超過接收端通告的接收窗口大小,從而確保接收端不會發(fā)生緩存溢出。

五、TCP擁塞控制

1. 窗口機(jī)制:

通過調(diào)節(jié)窗口的大小實現(xiàn)對發(fā)送數(shù)據(jù)速率的調(diào)整。

2. 窗口調(diào)整的基本策略:

AIMD(Additive Increase,Multiplicative Decrease)加性增加,乘性減小;

網(wǎng)絡(luò)未發(fā)送擁塞時,逐漸 “加性增大窗口大小,當(dāng)網(wǎng)絡(luò)擁塞時 “乘性快速減小窗口大小。

3. TCP的擁塞控制算法:

包括了慢啟動、擁塞避免、快速重傳快速恢復(fù)4部分。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容