【計算機網絡-12】【第五章】傳輸層

傳輸層的功能
——傳輸層向上面的應用層提供通訊服務。

——屬於面向通信部分的最高層,同時也是用戶功能中的最底層。

——傳輸層爲運行在不同主機上的進程之間提供了邏輯通信(端到端),而網絡層提供了主機之間的邏輯通信。

——只有主機的協議棧纔有傳輸層和應用層,而路由器在轉發分組時都只用到下三層的功能。(即在通訊子網中沒有傳輸層,傳輸層只存在於通信子網以外的主機中。)


傳輸層
網絡層
邏輯通信 進程之間
主機之間
複用
發送方不同的進程都可以使用同一個傳輸層協議傳送數據
發送方不同的協議的數據都可以封裝成IP數據報發送出去
分用
接收方的傳輸層在去掉報文首部後能把數據正確交付到目的應用進程
……交付到相應的協議。
差錯檢驗
檢測報文首部和數據部分
只檢驗IP數據報的首部
協議
提供兩種不同的傳輸協議 面相連的的TCP、無連接的UDP
無法同時實現兩種協議(比如要麼是虛電路、要麼是數據報)

傳輸層向高層用戶屏蔽了底層網絡核心的細節,讓應用進程看見的就好像在兩個傳輸層實體之間有一條端到端的邏輯通信信道。(TCP:全雙工可靠信道 ;UDP:不可靠信道)


——————————————————————————————————————————————————


傳輸層的尋址與端口

端口
——端口就是傳輸層服務訪問點(TSAP)。
——應用層的應用進程 將數據 通過端口 向下交付給傳輸層。 以及讓傳輸層知道應當將其報文段中的數據向上通過端**付給應用層相應的進程。
——IP地址和MAC地址標識的是主機,而端口標識的是主機中的進程。
——硬件端口是不同硬件設備進行交互的藉口,軟件端口是應用層的各種協議進程與傳輸實體進行層間交互的一種地址。

端口號
端口號長度16bit,共65536(2^16)各不同的端口號。

服務端使用的端口號分爲兩種
熟知端口號  0~1023
IANA機構把這些端口號指派給了TCP/IP最重要的一些應用程序,讓所有用戶都知道。
登記端口號 1024~49151
是爲沒有熟知端口號的應用程序使用的,必須在IANA登記防止重複。

客戶端端口號 49152~65535:
——這類端口號僅在客戶進程運行時彩動態選擇,因此又稱短暫端口號(或臨時端口)。
——端口只具有本地意義,他是爲了標誌本計算機應用層中的各進程,在因特網中不同計算機的相同端口號是沒有聯繫的。


套接字(socket
——即通訊端點,唯一地標識了網絡中的一個主機和其上的一個應用進程

套接字=(主機IP地址,端口號)


無連接服務、面向連接服務
TCP、面向連接、全雙工可靠邏輯信道、不提供廣播或組播服務、多開銷(確認 流量控制 計時器 連接管理);適用於依賴可靠性的場合(FTP HTTP TELNET)

UDP、無連接、不可靠邏輯信道、僅提供兩個附加服務(多路複用、對數據的錯誤檢查);簡單 執行速度快 實時性好 (TFTP DNS SNMP RTP)


——————————————————————————————————————————————————————————————————————
——————————————————————————————————————————————————————————————————————
——————————————————————————————————————————————————————————————————————

UDP協議

UDP數據報
——只在IP數據報服務之上增加了兩個最基本的服務:複用和分用以及差錯檢測。
——開發者選擇UDP時應用幾乎是直接與IP打交道。

UDP優點
——無需建立連接,因此沒有引入連接的時延
——無連接狀態,不需要維護連接狀態。
——分組首部開銷小。
——應用層能更好地控制要 發送的數據 以及 發送時間。UDP沒有擁塞控制,擁塞不會影響發送效率。某些實時性應用要求以穩定速度發送,能容忍一些數據的丟失,但不允許較大延時。適合用UDP。

不可靠交付——維護傳輸的可靠性需要用戶在應用層完成,應用實體可以根據應用的需求來靈活設計自己的可靠性機制。

面向報文——UDP面向報文,發送方UDP對應用層交下來的報文添加首部後就下交給IP層,既不合並也不拆分,而是保留這些報文的邊界。(到另一端交給應用進程時,一次交付一個完整的報文)


UDP首部格式


UDP校驗
在IP數據報之前添加12個字節的僞首部。(既不向上遞交也不想下傳送,僅僅用來計算校驗和)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


——若校驗出UDP數據報是錯誤的,可以丟棄也可以交付上層並附上錯誤報告。
——這種差錯檢驗方法檢錯能力不強,但是簡單快速。


——————————————————————————————————————————————————————————————————————
——————————————————————————————————————————————————————————————————————
——————————————————————————————————————————————————————————————————————

TCP協議

TCP特點
——面向連接
——每條TCP連接只能用兩個端點(點對點)
——可靠交付服務(無差錯 不丟失 不重複 有序)
——全雙工通信,兩端都設有發送緩存、接收緩存(用來臨時存放雙向通信的數據)
——面向字節流(看成一連串的無結構的字節流)

TCP報文

端口字段——運輸層和應用層的服務接口(運輸層分用複用功能都通過端口才能實現)

序號字段——TCP是面向字節流的,TCP是一個字節一個字節來傳送的,每個字節都編上一個序號。序號字段寫的是本報文段所發送的數據的第一個字節的序號

確認號——期望收到對方的下一個報文的數據的字一個字節的序號。(確認號=N,表明序號N-1爲止的所有數據多已正確收到)
ACK確認位——ACK=1時,確認號纔有效

數據偏移——其實是首部長度

保留字段——忽略

URG 緊急位——URG=1時表明緊急指針字段有效。
緊急指針——指出本報文段中緊急數據共有多少字節(緊急數據放在本報文段數據的最前面)


PSH推送位——當psh=1時,不等整個緩存都填滿,就儘快地交付接收應用進程。

RST復位位——RST=1時,表明TCP連接中出現嚴重差錯,必須釋放鏈接、重新建立運輸連接。

SYN同部位——SYN=1時,表示這是一個連接請求或 連接接收報文。

FIN終止位——用來釋放一個連接。FIN=1時,表明此報文段的發送方的數據已發送完畢,並要求釋放傳輸連接。

窗口字段——接收方讓發送方設置其發送窗口的一句。單位字節。

檢驗和——首部和數據都檢驗,通過加僞首部的方式 和UDP類似。

選擇字段——最初只規定了一種選項MSS。

填充字段——爲了使整個首部長度是4字節的整數倍


——————————————————————————————————————————————————


TCP連接管理
TCP連接的三個階段
——連接建立→數據傳送→連接釋放
——TCP連接的端口叫套接字socket

採用客戶/服務器方式
——主動發起連接建立的應用叫:客戶機(Client)。
——被動等待連接建立的應用進程叫做服務器(Server)。

TCP連接建立的過程要解決的三個問題
——讓雙方都能夠確知對方的存在。
——允許雙方協商一些參數(最大窗口值……時間截選項 ……服務質量……)。
——能夠對運輸實體資源進行分配。


TCP連接的建立:三次握手

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
①請求報文段
seq=x(連接請求報文不攜帶數據,但要消耗一個序號)
②同意建立連接,像客戶機發揮確認,併爲改TCP連接分配TCP緩存和變量。
③客戶機收到確認報文,想服務器給出確認,然後給該連接分配緩存和變量。(該報文可攜帶數據,如果不攜帶則不消耗序號)
(服務端的資源是在完成二次握手時分配的,客戶端的資源是在完成第三次握手時分配的,這使得服務器易於收到SYN洪泛攻擊。)


TCP連接的釋放
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1.客戶端打算關閉連接,向TCP發送一個連接釋放報文段,並停止再發送數據,主動關閉TCP連接
seq=前面已傳過的數據的最後一個字節的序號+1(FIN報文段不攜帶數據也要消耗一個序號)

TCP時全雙工的,可以想象成一條TCP連接上有兩條數據通路,第一步結束後就關閉了一條數據通路,不過對方還可以發送數據。


2.服務器回覆確認,然後這個方向的連接就釋放了。此時TCP處於關閉狀態。(從服務器到客戶機這個方向的連接還沒關閉)


3.服務器→客戶機,通知TCP釋放鏈接。


4.客戶機回覆確認,等待計時器,計時2MSL後 A進入連接關閉狀態。

——————————————————————————————————————————————————

TCP可靠傳輸
TCP可靠數據傳輸服務——保證接收方進程從緩存區讀取的字節流與發送方發出的字節流是完全一樣的。


TCP首部序號——用來保證數據能有序提交給應用層。(序號建立在傳送的字節流之上,而不是報文段之上)
——TCP連接中傳送的數據流中的每一個字節都編上一個序號。序號字段的值則指的是本報文段所發送的數據的第一個字節的序號。

TCP首部確認號——期望收到對方的下一個報文段的數據的第一個字節的序號。


默認使用累計確認——TCP只確認數據流中 至 第一個丟失字節爲止的字節。


超時重傳——每發送一個報文段,就對這個報文段設置一次計時器。規定時間內沒收到確認,就要重傳。
超時計時器設置的超時重傳時間的計算:
往返時間(Round -TripTime )RTT
加權平均往返時間 RTTs
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

0≤α<1;[RFC 2988]推薦值爲0.125.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
RTT的偏差加權平均值—RTTd
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

超時計時器設置的 超時重傳時間(Retransmission Time-Out,RTO),應略大於RTTs。
計算公式:RTO=RTTs+4*RTTd

冗餘確認
超時觸發重傳存在一個問題是超時週期過長,
TCP規定每當 比期望序號大的失序報文段到達時,發送一個冗餘ACK,指明下一個期待字節的序號。
當發送方收到對同一個報文段的3個冗餘ACK時,就認爲在這個被確認的報文段之後的報文段已經丟失。(然後執行重傳)
這種技術通常稱爲快速重傳。

——————————————————————————————————————————————————
TCP流量控制









——————————————————————————————————————————————————




——————————————————————————————————————————————————
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章