傳輸層的基本服務(wù)
一、傳輸層的功能
傳輸層的核心任務(wù)是為應(yīng)用進(jìn)程之間提供。
1. 主要功能包括:
?傳輸層尋址
?應(yīng)用層報文的分段和重組
?報文的差錯檢測
?進(jìn)程間的端到端可靠數(shù)據(jù)傳輸控制
?面向應(yīng)用層實現(xiàn)復(fù)用與分解
?端到端的流量控制
?擁塞控制
2. 傳輸層提供的服務(wù)
傳輸層協(xié)議提供服務(wù);
傳輸層協(xié)議只需在中實現(xiàn);
通信的真正端點并不是主機(jī),而是主機(jī)中運(yùn)行的。
二、傳輸層尋址與端口
1. 用統(tǒng)一的尋址方法對應(yīng)用進(jìn)程進(jìn)行標(biāo)識——。
2. 在全網(wǎng)范圍內(nèi)利用 "" 唯一標(biāo)識一個通信端點。(即應(yīng)用進(jìn)程)
3. 傳輸層端口號為16位整數(shù),包含三類端口:
? ??(1),數(shù)值為 0~1023.
? ? (2),數(shù)值為 1024~49151,為沒有熟知端口號的應(yīng)用程序使用。使用這個范圍的端口號必須在IANA登記,以防止重復(fù)。
? ? (3),數(shù)值為 49152~65535,留給客戶進(jìn)程選擇暫時使用。
提供服務(wù)的人端口號一定要固定,但對于用戶來說無所謂。
三、無連接服務(wù)與面向連接服務(wù)
1. 無連接服務(wù)——數(shù)據(jù)傳輸之間無需與對端進(jìn)行任何信息交換(即 “握手”),直接構(gòu)造傳輸層報文段并向接收端發(fā)送。? ? ? ? ? ?——UDP
2. 面向連接服務(wù)——在數(shù)據(jù)傳輸之前,需要雙方交換一些控制信息,,然后再
,數(shù)據(jù)傳輸結(jié)束后還需要再
。? ? ? ? ? ?——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);()
2. 接收方如果正確接收報文段,即差錯檢測無誤且序號正確,則接收報文段,并向發(fā)送方發(fā)送ACK,否則丟棄報文段,并向發(fā)送方發(fā)送NAK;()
3. 發(fā)送方如果收到ACK,則繼續(xù)發(fā)送后續(xù)報文段,否則重發(fā)剛剛發(fā)送的報文段。()
三、滑動窗口協(xié)議
1. 停-等協(xié)議的主要性能問題:
停止-等待機(jī)制降低了信道利用率。
2.解決方法:
或管道協(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é)議,提供、
、數(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é)議利用實現(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部分。