運輸層位於應用層與網路層之間,是分層網路體系結構的重要組成部分。
運輸層協議為執行在不同主機上的應用程序之間提供了邏輯通訊,使得在應用程序的角度看,運
行不同程序的主機好像直接相連。應用程序使用運輸層提供的邏輯通訊功能彼此傳送報文,而無
需考慮這些報文的物理基礎設施的細節。下文主要介紹兩個運輸層協議:udp 與 tcp,通過比較
它們的異同,來說明它們各自的特點。
以兩台主機之間通訊為例,當我們只討論運輸層時,我們可以看到運輸層在傳送端將從應用程序
接收到的報文轉換成運輸層分組(即報文段),再將這些報文段傳遞給網路層;在接受段,網路層
從資料報中提取運輸層報文段,並將該報文段交給運輸層,運輸層則處理收到的報文段,使報文
段中的資料為接收端的應用程序使用。
在整個過程中,我們應該思考以下這些問題,並且下文將會通過這些問題來介紹運輸層。
1.報文為什麼要轉換為報文段?
2.udp、tcp的優缺點?
3.採用不同運輸層協議時,報文段的格式有何區別?
4.通過何種機制來實現tcp、udp各自的功能?
5.udp、tcp各自適合哪種網路應用場景?
運輸層的多路復用與多路分解————資料在應用層與運輸層間的傳遞
在敘述資料在應用層與運輸層間的傳遞之前,我們需要先了解什麼是套接字?
套接字socket:它相當於從網路向程序傳遞資料和從程序向網路傳遞資料的門戶,在主
機的運輸層中,實際上並沒有直接將資料交付給程序,而是將資料交給了中間的乙個套
接字,再通過該套接字將資料交給該套接字對應的程序。任意時刻,每個主機可能有多
個套接字,但每個套接字都有唯一的描述符。
多路復用:在源主機從不同套接字中收集資料塊,並為每個資料封裝上首部資訊從而生成報
文段,然後將報文段傳遞到網路層
首部資訊:
源埠號字段、目的埠號字段、其他首部字段(具體見下文udp、tcp報文段結構)
埠號:乙個16位元的數,其大小在0-65535之間
具體介紹:
多路分解:將運輸層報文段中的資料交付到正確的套接字
無連線運輸:udp
udp只提供了運輸層協議能夠提供的最低限度的功能,除了復用、分解功能及少量的差錯檢
測外它幾乎沒有對ip增加別的東西。
udp作用過程:udp從應用程序得到資料,附加上用於多路復用、分解所需的源和目
的地埠號字段,以及兩個其他的小字段,然後將形成的報文段交給網路層。
udp報文結構:
udp校驗和:用於確定udp報文段從源到目的地的移動時,其中位元是否發生了改變
具體介紹:www.cnblogs.com/noble/p/4144139.html
udp為何提供校驗和?
端到端原則:與在較高階別提供某些功能相比,在較低級別上設定的功能可能是
冗餘的或幾乎沒有價值。
優點:
1.關於何時、傳送哪些資料的應用層控制更為精細
2.無需建立連線,因此udp沒有建立連線的時延
3.無連線狀態,減少使主機開銷
4.分組首部開銷小
缺點:
1.udp沒有擁塞控制,可能導致傳送方和接收方之間的高丟包率
2.不保證資料傳輸的可靠性(udp應用可以通過在應用程式自身中建立可靠性機制來完成
可靠的資料傳輸)
面向連線的運輸:tcp
tcp特點:
1.面向連線
2.全雙工
3.提供可靠資料傳送
4.擁塞控制
tcp被稱為是面向連線的,這是因為在乙個程序可以向另乙個程序傳送資料之前,這
兩個程序必須向相互「握手」,即相互傳送某些預備報文段,以確定資料傳輸的引數。
全雙工:如果一台主機上的程序a與另一台主機上的程序b之間存在一條tcp連線,那
麼應用層資料就可以在程序b流向程序a的同時,也從程序a流向程序b
tcp傳輸資料的過程:
一旦建立起一條tcp連線,兩個應用程序之間就可以相互傳送資料,程序通過套接字傳
遞資料流,tcp將這些資料引導進該連線的傳送快取,tcp從傳送快取中取出資料塊傳送
tcp可以從快取中取出並放入報文段中的資料數量受限於最大報文段長度mss,mss通常
根據最初確定的由本地傳送主機傳送的最大鏈路層幀長度(即最大傳輸單元mtu)確定
需要注意的是mss是指報文段中應用層資料的最大長度而不是指包括tcp首部的tcp報文
段的最大長度
tcp連線的建立與終止,在tcp連線終止後,主機中的資源(快取、變數)都將被釋放
tcp報文結構:
在上圖中,我們可以看到tcp報文首部中兩個最重要的字段是序號欄位和確認號字
段,若果主機a向主機b傳送乙個tcp報文段,主機a填充進報文段的確認號是主機a
期望從主機b收到的下一位元組的序號。
tcp的可靠資料傳輸服務確保乙個從其接受快取中讀取的資料流是無損壞、無間隔、
非冗餘和按序的資料流,即該位元組流與連線的另一端系統發出的位元組流時完全相同
那麼tcp如何提供可靠地資料傳送服務?
tcp採用超時/重傳機制來處理報文段的丟失問題,那麼應該如何設定超時時間?
而tcp又是如何知道丟失了哪些報文段?
我們可能會想到,如果我們可以為每乙個已傳送但未被確認的tcp報文段設定乙個
定時器,這樣在判斷超時時就會十分方便,但定時器的管理需要相當大的開銷,因
此tcp在超時管理時僅使用單一的重傳定時器,即使有多個已傳送但未被確認的報
文段。tcp傳送方維持乙個狀態變數sendbase,這是最早已傳送未被確認的位元組的
序號。tcp接收方只確認已收到的資料流中至第乙個丟失位元組為止的位元組,所以tcp被稱為
提供累積確認
tcp將ack的值y與sendbase比較,來確認是否超時。
tcp超時重傳機制具體可參考:
tcp擁塞控制:
tcp使用端到端擁塞控制,讓每乙個傳送方根據感知到的網路擁塞程度來限制其能向
連線傳送流量的速率。
1.當tcp傳送方出現丟包事件(出現超時或收到接收方的三個冗餘ack)時,傳送方就認
為在傳送方到接收方的路徑上出現了擁塞指示,此時應當降低減小傳送方的速率
2.當對先前未確認報文段的確認到達時,能夠增加傳送方的速率
tcp擁塞控制演算法:
慢啟動:tcp傳送速率起始慢,但在慢啟動階段以指數級增長
擁塞避免:一旦進入擁塞避免狀態,即很快可能擁塞
快速恢復
tcp擁塞控制演算法詳述:
udp、tcp各自的應用場景:
udp:dns、遠端檔案伺服器、網路管理、多**應用
tcp:電子郵件、遠端終端訪問、web、檔案傳輸、多**應用
計算機網路 運輸層
問題 一 運輸層為相互通訊的的應用程序提供邏輯通訊 問題二 埠和套接字的意義 問題三 理解udp和tcp協議 問題四 在不可靠的網路上實現可靠傳輸的工作原理 問題五 tcp的滑動視窗 流量控制 擁塞控制和連線管理 1 埠 應用層所有的應用程序都可以通過運輸層傳送到ip層,這就是復用 運輸層從ip層收...
計算機網路 運輸層
運輸層協議作用於端系統,為執行在不同主機上的程序提供了邏輯通訊,將主機間的交付擴充套件到程序間交付。該層的分組稱為segment 報文段 多路復用 主機把不同套接字 每生成乙個套接字同時分配乙個埠號 收集的資料封裝後生成報文段,傳送給網路層 多路分解 將運輸層報文段的不同資料 通過套接字的埠號 交付...
計算機網路 運輸層
運輸層協議為執行在不同主機上的應用程序之間提供了邏輯通訊 logic communication 功能。運輸層協議是在端系統中而不是在路由器中實現的 在傳送端,運輸層將從傳送應用程式程序接收到的報文轉換成運輸層分組 運輸層報文段,segment 實現的方法 可能 是將應用報文劃分為較小的塊,並為每塊...