




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
傳輸層2025/4/13計算機網絡講義2主要內容基本概念TCP協議UDP協議基本概念NAT(網絡地址轉換)的基本概念基本概念2025/4/13計算機網絡講義3傳輸層1)傳輸層的職責是在兩個不同系統的進程之間提供一種交換數據的可靠機制,協議具有端到端的意義。2)用戶不能對通信子網加以控制,故無法采用更好的通信處理機制來解決網絡層服務質量低劣的問題,更不可能通過改進數據鏈路層糾錯能力來改善低層的條件。3)傳輸層的存在使得傳輸服務比網絡服務更可靠,報文丟失、殘缺等錯誤都可以被傳輸層檢測到并可以采取相應的補救措施。2025/4/13計算機網絡講義4傳輸層傳輸協議(Transportprotocol)是整個網絡體系結構中的關鍵協議之一實現進程到進程的可靠通信服務將多對進程通信復用到一條網絡連接上向高層用戶屏蔽了低層通信子網的細節(網絡拓撲、協議等)傳輸層為應用進程之間提供邏輯通信,網絡層為主機之間提供邏輯通信2025/4/13計算機網絡講義5傳輸層在系統中的位置WebIEHostAHostBNetworkLayerLinkLayerApplicationLayerTransportLayerO.S.O.S.HeaderDataHeaderDataHDHDHDHDHDHD2025/4/13計算機網絡講義6傳輸層功能連接管理定義允許兩個用戶象直接連接一樣交談的規則流量控制(FlowControl)傳輸層定義了端用戶之間的流量控制,數據鏈路協議定義了兩個中間相鄰接點的流量控制差錯檢測(ErrorDetection)數據鏈路層提供了可靠的鏈路傳輸,但在路由器將含有分組的幀重新格式化,可能會出現影響分組內容的錯誤。幀校驗和是在新幀創建后計算的,包含了錯誤數據。傳輸層的差錯檢測用于檢測此錯誤。對用戶請求的響應包括發送和接收數據建立無連接和面向連接的通信擁塞控制(congestioncontrol)2025/4/13計算機網絡講義7AP2傳輸層網絡層鏈路層物理層AP5傳輸層網絡層鏈路層物理層通信子網傳輸層:進程到進程的通信網絡AP1AP2AP3AP4AP5AP6主機A主機BAP為應用網絡層:主機到主機的通信2025/4/13計算機網絡講義8以FTP舉例NetworkLinkTransportApplicationPresentationSessionTransportNetworkLinkPhysicalThe7-layerOSIModelThe4-layerInternetmodelApplicationFTPASCII/BinaryIPTCPEthernet2025/4/13計算機網絡講義9applicationtransportnetworkdatalinkphysicalapplicationtransportnetworkdatalinkphysicalnetworkdatalinkphysicalnetworkdatalinkphysicalnetworkdatalinkphysicalnetworkdatalinkphysicalnetworkdatalinkphysicallogicalend-endtransport2025/4/13計算機網絡講義10解決的問題不可靠的網絡層服務可靠的通訊需求
Clickhere2025/4/13計算機網絡講義11提供兩種服務TCP和UDP適應不同的應用需求2025/4/13計算機網絡講義12傳輸層協議可靠的,面向連接的,單播(Unicast)協議:TCP擁塞控制(CongestionControl)流控制(FlowControl)有連接(ConnectionManagement)不可靠的(Best-effort),面向無連接的,單播、多播或廣播(multicast、broadcast)的協議:UDP應用協議TCPUDPIP鏈路層物理層2025/4/13計算機網絡講義13apptransportnetworkMP2apptransportnetworkreceiverHtHnsegmentsegmentMapptransportnetworkP1MMMP3P4segmentheaderapplication-layerdata復用2025/4/13計算機網絡講義14端口號定義傳輸層根據端口號來決定把報文提交給某個應用進層熟知端口(Well-knownport):IANA負責分配給一些常用的應用程序,范圍:1~1024。如ftp21,telnet23,smtp25等。注冊端口:1024~49151。IANA不指派也不控制。可在IANA注冊以防止重復。動態端口:49152~65535。IANA不指派也不控制。客戶端進程動態生成。2025/4/13計算機網絡講義152025/4/13計算機網絡講義16IPTCPUDPWWWSMTPTELNETSNMPTFTP應用80252316169通過IP協議確定主機通過端口確定進程2025/4/13計算機網絡講義17復用/分用:舉例hostAserverBsourceport:xdest.port:23sourceport:23dest.port:xportuse:simpletelnetappWebclienthostAWebserverBWebclienthostCSourceIP:CDestIP:Bsourceport:xdest.port:80SourceIP:CDestIP:Bsourceport:ydest.port:80portuse:WebserverSourceIP:ADestIP:Bsourceport:xdest.port:802025/4/13計算機網絡講義18端口與連接端口標志的是應用一個應用連接用目的與源的IP地址+端口來標識:源IP地址,源端口號;目的IP地址,目的端口號,如:(0,1025)和(0,23)102510268023801025服務器:客戶1:客戶2:連接1連接2連接3連接1:,1025;,80連接2:,1026;,23連接3:,1025;,80以上概念同時適用于TCP與UDP,IP地址與端口對即構成套接字Socket2025/4/13計算機網絡講義19(協議、源地址、目的地址、源端口號、目的端口號)
利用這樣一個五元組就來唯一標識一次傳輸層通信2025/4/13計算機網絡講義20TCP/IP協議族中的傳輸層協議用戶數據報協議UDP和傳輸控制協議TCPUDP和TCP都使用IP協議,即他們的協議數據單元都作為IP數據報的數據
UDP是無連接的
TCP提供的是面向連接的服務。2025/4/13計算機網絡講義21主要內容基本概念TCP協議UDP協議基本概念NAT(網絡地址轉換)的基本概念TCP協議2025/4/13計算機網絡講義22TCP協議概述報文格式連接管理流量控制狀態圖概述2025/4/13計算機網絡講義23TCP協議最早由斯坦福大學的兩名研究人員于1973年提出。1983年,TCP/IP被Unix4.2BSD系統采用。隨著Unix的成功,TCP/IP逐步成為Unix機器的標準網絡協議。取代ARPANET最初使用的NCP(NetworkControlProtocol)協議,成為Internet的標準協議。2025/4/13計算機網絡講義24TCP協議是專門設計用于在不可靠的網絡當中提供可靠的、端對端的字節流通信協議。TCP協議能夠滿足不同的拓撲結構、帶寬、延遲、分組大小以及其他特性。TCP協議在RFC793當中定義,在RFC1122和RFC1323當中得到修訂和改進運輸實體:負責管理TCP流以及同IP層的接口2025/4/13計算機網絡講義25TCP協議具有優良的性能雖然TCP中包含許多比其它運輸層更為復雜的任務,但分析表明,其性能并沒有因此而降低。幾個最大吞吐量的理論計算值(或測得的):在以太網(10M)上:8兆在FDDI(100M)上:80-90兆兩臺GrayY-MP計算機在800兆的高速通道上:781兆2025/4/13計算機網絡講義26TCP最主要的特點TCP是面向連接的運輸層協議。每一條TCP連接只能有兩個端點(endpoint),每一條TCP連接只能是點對點的(一對一)。TCP提供可靠交付的服務。
TCP提供全雙工通信。面向字節流。2025/4/13計算機網絡講義27應當注意TCP連接是一條虛連接而不是一條真正的物理連接。TCP對應用進程一次把多長的報文發送到TCP的緩存中是不關心的。TCP根據對方給出的窗口值和當前網絡擁塞的程度來決定一個報文段應包含多少個字節(UDP發送的報文長度是應用進程給出的)。TCP可把太長的數據塊劃分短一些再傳送。TCP也可等待積累有足夠多的字節后再構成報文段發送出去。2025/4/13計算機網絡講義28TCP的連接TCP把連接作為最基本的抽象。每一條TCP連接有兩個端點。TCP連接的端點不是主機,不是主機的IP地址,不是應用進程,也不是運輸層的協議端口。TCP連接的端點叫做套接字(socket)或插口。端口號拼接到(contatenatedwith)IP地址即構成了套接字。2025/4/13計算機網絡講義29套接字(socket)
套接字socket=(IP地址:端口號)每一條TCP連接唯一地被通信兩端的兩個端點(即兩個套接字)所確定。即:
TCP連接::={socket1,socket2}={(IP1:port1),(IP2:port2)}2025/4/13計算機網絡講義30同一個名詞socket
有多種不同的意思應用編程接口
API
稱為socketAPI,簡稱為socket。socketAPI中使用的一個函數名也叫作socket。調用socket函數的端點稱為socket。調用socket函數時其返回值稱為socket描述符,可簡稱為socket。在操作系統內核中連網協議的Berkeley實現,稱為socket實現。2025/4/13計算機網絡講義31TCP協議概述報文格式連接管理流量控制狀態圖報文格式2025/4/13計算機網絡講義32TCP首部20字節的固定首部目的端口數據偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認號保留FIN32位SYNRSTPSHACKURG位08162431填充TCP數據部分TCP首部TCP報文段IP數據部分IP首部發送在前TCP報文段的首部格式
2025/4/13計算機網絡講義33TCP首部20字節固定首部目的端口數據偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認號保留FINSYNRSTPSHACKURG位08162431填充源端口和目的端口字段——各占2字節。端口是運輸層與應用層的服務接口。運輸層的復用和分用功能都要通過端口才能實現。2025/4/13計算機網絡講義34TCP首部20字節固定首部目的端口數據偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認號保留FINSYNRSTPSHACKURG位08162431填充序號字段——占4字節。TCP連接中傳送的數據流中的每一個字節都編上一個序號。序號字段的值則指的是本報文段所發送的數據的第一個字節的序號。2025/4/13計算機網絡講義35TCP首部20字節固定首部目的端口數據偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認號保留FINSYNRSTPSHACKURG位08162431填充確認號字段——占4字節,是期望收到對方的下一個報文段的數據的第一個字節的序號。2025/4/13計算機網絡講義36TCP首部20字節固定首部目的端口數據偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認號保留FINSYNRSTPSHACKURG位08162431填充數據偏移(即首部長度)——占4位,它指出TCP報文段的數據起始處距離TCP報文段的起始處有多遠。“數據偏移”的單位是32位字(以4字節為計算單位)。2025/4/13計算機網絡講義37TCP首部20字節固定首部目的端口數據偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認號保留FINSYNRSTPSHACKURG位08162431填充保留字段——占6位,保留為今后使用,但目前應置為0。2025/4/13計算機網絡講義38TCP首部20字節固定首部目的端口數據偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認號保留FINSYNRSTPSHACKURG位08162431填充緊急URG——當URG
1時,表明緊急指針字段有效。它告訴系統此報文段中有緊急數據,應盡快傳送(相當于高優先級的數據)。2025/4/13計算機網絡講義39TCP首部20字節固定首部目的端口數據偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認號保留FINSYNRSTPSHACKURG位08162431填充確認ACK——只有當ACK
1時確認號字段才有效。當ACK
0時,確認號無效。2025/4/13計算機網絡講義40TCP首部20字節固定首部目的端口數據偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認號保留FINSYNRSTPSHACKURG位08162431填充推送PSH(PuSH)——接收TCP收到PSH=1的報文段,就盡快地交付接收應用進程,而不再等到整個緩存都填滿了后再向上交付。2025/4/13計算機網絡講義41TCP首部20字節固定首部目的端口數據偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認號保留FINSYNRSTPSHACKURG位08162431填充復位RST(ReSeT)——當RST
1時,表明TCP連接中出現嚴重差錯(如由于主機崩潰或其他原因),必須釋放連接,然后再重新建立運輸連接。2025/4/13計算機網絡講義42TCP首部20字節固定首部目的端口數據偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認號保留FINSYNRSTPSHACKURG位08162431填充同步SYN——同步SYN=1表示這是一個連接請求或連接接受報文。2025/4/13計算機網絡講義43TCP首部20字節固定首部目的端口數據偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認號保留FINSYNRSTPSHACKURG位08162431填充終止FIN(FINis)——用來釋放一個連接。FIN
1表明此報文段的發送端的數據已發送完畢,并要求釋放運輸連接。2025/4/13計算機網絡講義44TCP首部20字節固定首部目的端口數據偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認號保留FINSYNRSTPSHACKURG位08162431填充窗口字段——
占2字節,用來讓對方設置發送窗口的依據,單位為字節。2025/4/13計算機網絡講義45TCP首部20字節固定首部目的端口數據偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認號保留FINSYNRSTPSHACKURG位08162431填充檢驗和——占2字節。檢驗和字段檢驗的范圍包括首部和數據這兩部分。在計算檢驗和時,要在TCP報文段的前面加上12字節的偽首部。2025/4/13計算機網絡講義46TCP首部20字節固定首部目的端口數據偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認號保留FINSYNRSTPSHACKURG位08162431填充緊急指針字段——占16位,指出在本報文段中緊急數據共有多少個字節(緊急數據放在本報文段數據的最前面)。
2025/4/13計算機網絡講義47TCP首部20字節固定首部目的端口數據偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認號保留FINSYNRSTPSHACKURG比特08162431填充選項字段——長度可變。TCP最初只規定了一種選項,即最大報文段長度
MSS。MSS告訴對方TCP:“我的緩存所能接收的報文段的數據字段的最大長度是MSS個字節。”MSS(MaximumSegmentSize)是TCP報文段中的數據字段的最大長度。數據字段加上TCP首部才等于整個的TCP報文段。2025/4/13計算機網絡講義48其他選項窗口擴大選項——占3字節,其中有一個字節表示移位值S。新的窗口值等于TCP首部中的窗口位數增大到(16+S),相當于把窗口值向左移動S位后獲得實際的窗口大小。時間戳選項——占10字節,其中最主要的字段時間戳值字段(4字節)和時間戳回送回答字段(4字節)。選擇確認選項——在后面的5.6.3節介紹。2025/4/13計算機網絡講義49TCP首部20字節固定首部目的端口數據偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認號保留FINSYNRSTPSHACKURG位08162431填充填充字段——這是為了使整個首部長度是4字節的整數倍。2025/4/13計算機網絡講義50偽首部并不真正傳輸,但是參與計算校驗和。在計算校驗和的時候臨時生成,同TCP報文連接在一起,得到一個過渡報文,用來計算校驗和格式:
4字節4字節1字節1字節2字節計算方法將得到的臨時報文看作n個16bit的字(如果數據字段為奇數個字節就補上一個全零的字節,但是不發送),得到所有這些16bit的字的反碼和,校驗值就是該和的反碼。校驗方法接受到報文后,連同偽首部和可能的填充字節,進行反碼求和運算。如果無錯誤應該得到全1,否則表明有錯誤出現。2025/4/13計算機網絡講義51標識位有六個標識:緊急位(URG):緊急指針有效,緊急指針是一個正的偏移量,與序號字段的值相加等于該數據的最后一個字節的序號。
確認位(ACK):表示確認序號字段有意義急迫位(PSH):表示請求接收端的傳輸實體盡快交付應用層重建位(RST):表示出現嚴重差錯,必須釋放連接重建同步位(SYN):SYN=1,ACK=0表示連接請求消息
SYN=1,ACK=1表示同意建立連接消息終止位(FIN):表示數據已發送完,要求釋放連接圣誕樹攻擊:全部6個標識位置一2025/4/13計算機網絡講義52TCP協議概述報文格式連接管理流量控制狀態圖連接管理2025/4/13計算機網絡講義53連接管理連接的建立通信雙方知道對方存在協商通信參數分配運輸實體資源連接的釋放保證數據被正確接收釋放所申請資源2025/4/13計算機網絡講義54TCP連接建立過程三段握手協議(Three-wayHandshaking):主機A主機B主動打開被動打開(PassiveOpen)SYN,SEQ=XSYN,SEQ=Y,ACK=X+1ACK=Y+1防止失效的連接請求報文的復活。
SynFlooding攻擊
雙方聲明:ISN,初始序列號;MSS,最大報文段長度2025/4/13計算機網絡講義55兩軍問題兩支藍軍欲同時發動進攻,而且唯一的通信方式是派遣信使步行奔過山谷去傳遞信息。在山谷中,信使有可能被俘虜而丟失信件。問題:存在使藍軍獲勝的協議嗎?2025/4/13計算機網絡講義56結論是:不存在使藍軍必勝的通信約定證明:假如存在某種協議的話,那么,協議中最后一條信息要么是必要的,要么不是。如果不是,可以刪除它,直到剩下的每條消息都是至關重要的。若最后一條消息沒有安全到達目的地,則會怎樣呢?剛才說過每條信息都是必要的,因此,若它丟了,則進攻不會如期進行。由于最后發出信息的指揮官永遠無法確定該信息能否安全到達,所以,他不會冒險發動攻擊。同樣,另一支藍軍也明白這個道理,所以也不會發動進攻。釋放一個可能有數據丟失的網絡連接并不像人們初看起來那樣簡單。2025/4/13計算機網絡講義57TCP連接釋放過程主機A主機B應用進程釋放連接通知應用進程FIN,SEQ=XACK=X+1ACK=Y+1
半關閉(Half-Close)FIN,SEQ=Y,ACK=X+1應用進程釋放連接2025/4/13計算機網絡講義58TCP協議概述報文格式連接管理流量控制狀態圖流量控制TCP序號與確認滑動窗口慢啟動算法2025/4/13計算機網絡講義59可靠傳輸的工作原理(a)無差錯情況A發送M1確認M1B發送M2發送M3確認M2確認M3A發送M1B超時重傳M1發送M2確認M1丟棄有差錯的報文
(b)超時重傳tttt2025/4/13計算機網絡講義60請注意在發送完一個分組后,必須暫時保留已發送的分組的副本。分組和確認分組都必須進行編號。超時計時器的重傳時間應當比數據在分組傳輸的平均往返時間更長一些。2025/4/13計算機網絡講義61確認丟失和確認遲到A發送M1B超時重傳M1發送M2丟棄重復的M1重傳確認M1
(a)確認丟失確認M1A發送M1B超時重傳M1發送M2丟棄重復的M1重傳確認M1
(b)確認遲到確認M1收下遲到的確認但什么也不做tttt2025/4/13計算機網絡講義62可靠通信的實現使用上述的確認和重傳機制,我們就可以在不可靠的傳輸網絡上實現可靠的通信。這種可靠傳輸協議常稱為自動重傳請求ARQ(AutomaticRepeatreQuest)。ARQ表明重傳的請求是自動進行的。接收方不需要請求發送方重傳某個出錯的分組。2025/4/13計算機網絡講義63信道利用率停止等待協議的優點是簡單,但缺點是信道利用率太低。TDRTTATD+RTT+TAB分組確認tt分組確認2025/4/13計算機網絡講義64信道的利用率U
2025/4/13計算機網絡講義65流水線傳輸發送方可連續發送多個分組,不必每發完一個分組就停頓下來等待對方的確認。由于信道上一直有數據不間斷地傳送,這種傳輸方式可獲得很高的信道利用率。B分組ttAACK2025/4/13計算機網絡講義66TCP的序號與確認TCP協議是面向字節的。TCP將要傳送的整個報文看作一個字節流,并且使每一個字節對應一個編號。對要傳輸的每個字節進行編號;發送方序號:數據部分的第一個字節的序號;接受方的確認期望下一次收到的數據當中的異地個字節的序號;2025/4/13計算機網絡講義67以字節為單位的滑動窗口前移不允許發送已發送并收到確認A的發送窗口=20允許發送的序號26272829303132333435363738394041424344454647484950515253545556B期望收到的序號前沿后沿前移收縮根據B給出的窗口值A構造出自己的發送窗口TCP標準強烈不贊成發送窗口前沿向后收縮2025/4/13計算機網絡講義68不允許發送已發送并收到確認A的發送窗口位置不變允許發送但尚未發送262728293031323334353637383940414243444546474849505152535455已發送但未收到確認56P1P2P3不允許接收已發送確認并交付主機B的接收窗口允許接收26272829303132333435363738394041424344454647484950515253545556未按序收到可用窗口A發送了11個字節的數據P3–P1=A的發送窗口(又稱為通知窗口)P2–P1=已發送但尚未收到確認的字節數P3–P2=允許發送但尚未發送的字節數(又稱為可用窗口)2025/4/13計算機網絡講義69允許發送但尚未發送A的發送窗口向前滑動262728293031323334353637383940414243444546474849505152535455已發送并收到確認不允許發送已發送但未收到確認56P1P2P3允許接收B的接收窗口向前滑動262728293031323334353637383940414243444546474849505152535455已發送確認并交付主機不允許接收56未按序收到A收到新的確認號,發送窗口向前滑動先存下,等待缺少的數據的到達2025/4/13計算機網絡講義70不允許發送已發送并收到確認A的發送窗口已滿,有效窗口為零262728293031323334353637383940414243444546474849505152535455已發送但未收到確認56P1P2P3A的發送窗口內的序號都已用完,但還沒有再收到確認,必須停止發送。2025/4/13計算機網絡講義71發送緩存最后被確認的字節發送應用程序發送緩存最后發送的字節發送窗口已發送TCP序號增大2025/4/13計算機網絡講義72接收緩存接收應用程序已收到接收窗口TCP接收緩存下一個讀取的字節序號增大下一個期望收到的字節(確認號)2025/4/13計算機網絡講義73發送緩存與接收緩存的作用發送緩存用來暫時存放:
發送應用程序傳送給發送方TCP準備發送的數據;
TCP已發送出但尚未收到確認的數據。接收緩存用來暫時存放:
按序到達的、但尚未被接收應用程序讀取的數據;
不按序到達的數據。
2025/4/13計算機網絡講義74需要強調三點A的發送窗口并不總是和B的接收窗口一樣大(因為有一定的時間滯后)。TCP標準沒有規定對不按序到達的數據應如何處理。通常是先臨時存放在接收窗口中,等到字節流中所缺少的字節收到后,再按序交付上層的應用進程。TCP要求接收方必須有累積確認的功能,這樣可以減小傳輸開銷。2025/4/13計算機網絡講義75超時重傳時間的選擇重傳機制是TCP中最重要和最復雜的問題之一。TCP每發送一個報文段,就對這個報文段設置一次計時器。只要計時器設置的重傳時間到但還沒有收到確認,就要重傳這一報文段。2025/4/13計算機網絡講義76往返時延的方差很大由于TCP的下層是一個互聯網環境,IP數據報所選擇的路由變化很大。因而運輸層的往返時間的方差也很大。時間數據鏈路層運輸層T1T2T3往返時間的概率分布2025/4/13計算機網絡講義77加權平均往返時間TCP保留了RTT的一個加權平均往返時間
RTTS(這又稱為平滑的往返時間)。第一次測量到RTT樣本時,RTTS值就取為所測量到的RTT樣本值。以后每測量到一個新的RTT樣本,就按下式重新計算一次RTTS:
新的RTTS
(1
)
(舊的RTTS)
(新的RTT樣本)式中,0
1。若
很接近于零,表示RTT值更新較慢。若選擇
接近于1,則表示RTT值更新較快。RFC2988推薦的
值為1/8,即0.125。2025/4/13計算機網絡講義78超時重傳時間RTO(RetransmissionTime-Out)
RTO應略大于上面得出的加權平均往返時間RTTS。RFC2988建議使用下式計算RTO:
RTO
RTTS+4
RTTD
RTTD是RTT的偏差的加權平均值。RFC2988建議這樣計算RTTD。第一次測量時,RTTD值取為測量到的RTT樣本值的一半。在以后的測量中,則使用下式計算加權平均的RTTD:新的RTTD=(1
)
(舊的RTTD)+
RTTS
新的RTT樣本
是個小于1的系數,其推薦值是1/4,即0.25。2025/4/13計算機網絡講義79往返時間RTT?往返時間的測量相當復雜TCP報文段1沒有收到確認。重傳(即報文段2)后,收到了確認報文段ACK。如何判定此確認報文段是對原來的報文段1的確認,還是對重傳的報文段2的確認?發送一個TCP報文段超時重傳TCP報文段收到ACK時間12往返時間RTT?是對哪一個報文段的確認?2025/4/13計算機網絡講義80Karn
算法在計算平均往返時間RTT時,只要報文段重傳了,就不采用其往返時間樣本。這樣得出的加權平均平均往返時間RTTS
和超時重傳時間RTO就較準確。2025/4/13計算機網絡講義81報文段每重傳一次,就把RTO增大一些:新的RTO
(舊的RTO)系數
的典型值是2。當不再發生報文段的重傳時,才根據報文段的往返時延更新平均往返時延RTT和超時重傳時間RTO的數值。實踐證明,這種策略較為合理。修正的Karn
算法2025/4/13計算機網絡講義82選擇確認SACK
(SelectiveACK)
接收方收到了和前面的字節流不連續的兩個字節塊。如果這些字節的序號都在接收窗口之內,那么接收方就先收下這些數據,但要把這些信息準確地告訴發送方,使發送方不要再重復發送這些已收到的數據。2025/4/13計算機網絡講義83110001501300035014500確認號=1001L1=1501L2=3501R1=3001R1=4501接收到的字節流序號不連續……連續的字節流………第一個字節塊第二個字節塊
和前后字節不連續的每一個字節塊都有兩個邊界:左邊界和右邊界。圖中用四個指針標記這些邊界。第一個字節塊的左邊界L1=1501,但右邊界R1=3001。左邊界指出字節塊的第一個字節的序號,但右邊界減1才是字節塊中的最后一個序號。第二個字節塊的左邊界L2=3501,而右邊界R2=4501。2025/4/13計算機網絡講義84RFC2018的規定如果要使用選擇確認,那么在建立TCP連接時,就要在TCP首部的選項中加上“允許SACK”的選項,而雙方必須都事先商定好。如果使用選擇確認,那么原來首部中的“確認號字段”的用法仍然不變。只是以后在TCP報文段的首部中都增加了SACK選項,以便報告收到的不連續的字節塊的邊界。由于首部選項的長度最多只有40字節(TCP首部最長為60字節,其中固定長度為20字節),而指明一個邊界就要用掉4字節,因此在選項中最多只能指明4個字節塊的邊界信息。2025/4/13計算機網絡講義85TCP的流量控制
利用滑動窗口實現流量控制一般說來,我們總是希望數據傳輸得更快一些。但如果發送方把數據發送得過快,接收方就可能來不及接收,這就會造成數據的丟失。流量控制(flowcontrol)就是讓發送方的發送速率不要太快,既要讓接收方來得及接收,也不要使網絡發生擁塞。利用滑動窗口機制可以很方便地在TCP連接上實現流量控制。2025/4/13計算機網絡講義86seq=1,DATAseq=201,DATAseq=401,DATAseq=301,DATAseq=101,DATAseq=201,DATAseq=501,DATAACK=1,ack=201,rwnd=300ACK=1,ack=601,rwnd=0ACK=1,ack=501,rwnd=100AB允許A發送序號201至500共300字節A發送了序號101至200,還能發送200字節A發送了序號301至400,還能再發送100字節新數據A發送了序號1至100,還能發送300字節A發送了序號401至500,不能再發送新數據了A超時重傳舊的數據,但不能發送新的數據允許A發送序號501至600共100字節A發送了序號501至600,不能再發送了不允許A再發送(到序號600為止的數據都收到了)丟失!流量控制舉例A向B發送數據。在連接建立時,
B告訴A:“我的接收窗口rwnd=400(字節)”。2025/4/13計算機網絡講義87持續計時器
(persistencetimer)。TCP為每一個連接設有一個持續計時器。只要TCP連接的一方收到對方的零窗口通知,就啟動持續計時器。若持續計時器設置的時間到期,就發送一個零窗口探測報文段(僅攜帶1字節的數據),而對方就在確認這個探測報文段時給出了現在的窗口值。若窗口仍然是零,則收到這個報文段的一方就重新設置持續計時器。若窗口不是零,則死鎖的僵局就可以打破了。2025/4/13計算機網絡講義88必須考慮傳輸效率可以用不同的機制來控制TCP報文段的發送時機:第一種機制是TCP維持一個變量,它等于最大報文段長度MSS。只要緩存中存放的數據達到MSS字節時,就組裝成一個TCP報文段發送出去。第二種機制是由發送方的應用進程指明要求發送報文段,即TCP支持的推送(push)操作。第三種機制是發送方的一個計時器期限到了,這時就把當前已有的緩存數據裝入報文段(但長度不能超過MSS)發送出去。2025/4/13計算機網絡講義89TCP的擁塞控制
擁塞控制的一般原理
在某段時間,若對網絡中某資源的需求超過了該資源所能提供的可用部分,網絡的性能就要變壞——產生擁塞(congestion)。出現資源擁塞的條件:
對資源需求的總和>可用資源
若網絡中有許多資源同時產生擁塞,網絡的性能就要明顯變壞,整個網絡的吞吐量將隨輸入負荷的增大而下降。2025/4/13計算機網絡講義90擁塞控制與流量控制的關系擁塞控制所要做的都有一個前提,就是網絡能夠承受現有的網絡負荷。擁塞控制是一個全局性的過程,涉及到所有的主機、所有的路由器,以及與降低網絡傳輸性能有關的所有因素。流量控制往往指在給定的發送端和接收端之間的點對點通信量的控制。流量控制所要做的就是抑制發送端發送數據的速率,以便使接收端來得及接收。擁塞控制是尋找使得不等式(5-7)不再成立的條件,或者是增大網絡可用資源,或者是減少用戶資源需求2025/4/13計算機網絡講義91擁塞控制所起的作用提供的負載吞吐量理想的擁塞控制實際的擁塞控制0死鎖(吞吐量=0)無擁塞控制擁塞輕度擁塞2025/4/13計算機網絡講義92擁塞控制的一般原理擁塞控制是很難設計的,因為它是一個動態的問題。當前網絡正朝著高速化的方向發展,這很容易出現緩存不夠大而造成分組的丟失。但分組的丟失是網絡發生擁塞的征兆而不是原因。在許多情況下,甚至正是擁塞控制本身成為引起網絡性能惡化甚至發生死鎖的原因。這點應特別引起重視。2025/4/13計算機網絡講義93開環控制和閉環控制開環控制方法就是在設計網絡時事先將有關發生擁塞的因素考慮周到,力求網絡在工作時不產生擁塞。閉環控制是基于反饋環路的概念。屬于閉環控制的有以下幾種措施:監測網絡系統以便檢測到擁塞在何時、何處發生。將擁塞發生的信息傳送到可采取行動的地方。調整網絡系統的運行以解決出現的問題。2025/4/13計算機網絡講義94幾種擁塞控制方法慢開始、擁塞避免發送方由小到大逐漸加大發送窗口(增加的速度很快);發送窗口緩慢增加;快重傳、快恢復重復序號立即確認,不等待確認捎帶;接收方收到三個重復確認立即重傳,不等待超時到達。加法增大2025/4/13計算機網絡講義95慢開始和擁塞避免發送方維持一個叫做擁塞窗口cwnd(congestionwindow)的狀態變量。擁塞窗口的大小取決于網絡的擁塞程度,并且動態地在變化。發送方讓自己的發送窗口等于擁塞窗口。如再考慮到接收方的接收能力,則發送窗口還可能小于擁塞窗口。發送方控制擁塞窗口的原則是:只要網絡沒有出現擁塞,擁塞窗口就再增大一些,以便把更多的分組發送出去。但只要網絡出現擁塞,擁塞窗口就減小一些,以減少注入到網絡中的分組數。2025/4/13計算機網絡講義96擁塞窗口的設置算法流程:在建立連接時設置慢啟動門限sstrhresh
(slowstartthreshold)的初始值在開始新的連接,擁塞窗口的初始值為1慢啟動算法:擁塞窗口按指數增加,即每連續正確發送了N個數據后擁塞窗口值為2N,窗口增大到慢啟動門限后按照線形增加(每次加1)。擁塞控制算法:檢測到網絡發送擁塞后:慢啟動門限置為當前擁塞窗口的一半,同時擁塞窗口變為1注意:當cwnd=ssthresh
時,既可使用慢開始算法,也可使用擁塞避免算法。2025/4/13計算機網絡講義972216慢開始和擁塞避免算法的實現舉例當TCP連接進行初始化時,將擁塞窗口置為1。圖中的窗口單位不使用字節而使用報文段。慢開始門限的初始值設置為16個報文段,即ssthresh=16。“乘法減小”24681012141618200048122024擁塞窗口cwnd新的ssthresh
值網絡擁塞指數規律增長ssthresh
的初始值慢開始慢開始慢開始擁塞避免“加法增大”擁塞避免“加法增大”傳輸輪次2025/4/13計算機網絡講義98TCP的流量控制發送窗口=Min[通知窗口,擁塞窗口]通知窗口(advertisedwindow)接收端根據資源情況許諾的窗口值擁塞窗口(congestionwindow)發送端根據網絡擁賽情況得到的窗口值2025/4/13計算機網絡講義99慢啟動:報文段慢慢注入網絡(每次超時擁塞窗口減為1)乘法減小:出現頻繁超時時,擁塞窗口指數減小(每次超時,門限窗口減半)加法增大:避免網絡擁塞,線形增加。(達到門限值后線性增加)2025/4/13計算機網絡講義100必須強調指出“擁塞避免”并非指完全能夠避免了擁塞。利用以上的措施要完全避免網絡擁塞還是不可能的。“擁塞避免”是說在擁塞避免階段把擁塞窗口控制為按線性規律增長,使網絡比較不容易出現擁塞。2025/4/13計算機網絡講義101快重傳和快恢復快重傳算法首先要求接收方每收到一個失序的報文段后就立即發出重復確認。這樣做可以讓發送方及早知道有報文段沒有到達接收方。發送方只要一連收到三個重復確認就應當立即重傳對方尚未收到的報文段。不難看出,快重傳并非取消重傳計時器,而是在某些情況下可更早地重傳丟失的報文段。2025/4/13計算機網絡講義102快重傳舉例發送方接收方發送M1
確認M1t
確認M2發送M2發送M3發送M4
?發送M5發送M6
重復確認M2立即重傳M3
重復確認M2
重復確認M2t發送M7收到三個連續的對M2
的重復確認立即重傳M3丟失2025/4/13計算機網絡講義103快恢復算法(1)當發送端收到連續三個重復的確認時,就執行“乘法減小”算法,把慢開始門限ssthresh
減半。但接下去不執行慢開始算法。(2)由于發送方現在認為網絡很可能沒有發生擁塞,因此現在不執行慢開始算法,即擁塞窗口cwnd
現在不設置為1,而是設置為慢開始門限ssthresh
減半后的數值,然后開始執行擁塞避免算法(“加法增大”),使擁塞窗口緩慢地線性增大。2025/4/13計算機網絡講義10424從連續收到三個重復的確認
轉入擁塞避免2468101214161820220048121620傳輸輪次擁塞窗口cwnd收到3個重復的確認執行快重傳算法慢開始“乘法減小”擁塞避免“加法增大”TCPReno版本TCPTahoe版本(已廢棄不用)ssthresh
的初始值擁塞避免“加法增大”新的ssthresh
值慢開始快恢復2025/4/13計算機網絡講義105發送窗口的上限值發送方的發送窗口的上限值應當取為接收方窗口rwnd
和擁塞窗口cwnd
這兩個變量中較小的一個,即應按以下公式確定:發送窗口的上限值
Min[rwnd,cwnd]當rwnd<cwnd
時,是接收方的接收能力限制發送窗口的最大值。當cwnd<rwnd
時,則是網絡的擁塞限制發送窗口的最大值。
2025/4/13計算機網絡講義106TCP協議概述報文格式連接管理流量控制狀態圖狀態圖2025/4/13計算機網絡講義107TCP的有限狀態機TCP有限狀態機的圖中每一個方框都是TCP可能具有的狀態。每個方框中的大寫英文字符串是TCP標準所使用的TCP連接狀態名。狀態之間的箭頭表示可能發生的狀態變遷。箭頭旁邊的字,表明引起這種變遷的原因,或表明發生狀態變遷后又出現什么動作。圖中有三種不同的箭頭。粗實線箭頭表示對客戶進程的正常變遷。粗虛線箭頭表示對服務器進程的正常變遷。另一種細線箭頭表示異常變遷。
2025/4/13計算機網絡講義108TCP
的
有
限
狀
態
機CLOSEDESTABLISHEDLISTENCLOSE_WAITFIN_WAIT_1SYN_RCVDFIN_WAIT_2CLOSINGTIME_WAITSYN_SENTLAST_ACK主動打開被動打開被動關閉主動關閉起點被動打開主動打開發送SYN同時打開收到SYN,發送SYN,ACK收到ACK數據傳送階段
關閉發送FIN
關閉發送FIN
關閉發送FIN收到RST
收到SYN發送SYN,ACK
關閉或超時收到ACK
收到SYN,ACK發送ACK收到ACK收到ACK收到FIN發送ACK收到FIN,ACK
發送ACK收到FIN發送ACK同時關閉收到FIN發送ACK發送SYN定時經過兩倍報文段壽命后關閉2025/4/13計算機網絡講義109主要內容基本概念TCP協議UDP協議基本概念NAT(網絡地址轉換)的基本概念UDP協議基本概念2025/4/13計算機網絡講義110UDPUserDatagramProtocol為什么需要UDP協議:不需建立連接(連接會增加延時)簡單:發方與收方均不需要維護連接狀態包頭更小特性不可靠(BestEffort),UDP包可能:丟失(Lost)重復(duplicated)錯序(Deliveredoutoforder)無連接發方與收方之間無需握手每個UDP包均單獨處理UDP與IP比較:只是在IP基礎上增加了端口號2025/4/13計算機網絡講義111UDP是一個簡單的面向數據報的運輸層的協議,它提供協議端口,使得應用進程能夠向其他進程發送數據報,進行進程間的數據通信。UDP數據報是無連接、不可靠的。不提供確認、消息反饋控制,與IP數據報相同。可靠性要需要由應用程序本身提供。UDP規范(RFC-768,1980)。UDP利用IP進行主機到主機的數據報傳輸。UDP數據封裝:2025/4/13計算機網絡講義112UDP報頭:源端口可選,若無,則必須全為零。報文長度以8位組計算,包括UDP報頭和數據,最小值為8,即僅有報頭。檢校和也是可選的,方法與TCP頭檢驗和計算方法相同:16位累加和求補UDP包長度:為整個UDP包的長度,包括頭部通常一個UDP包的長度最大為512字節頭,2025/4/13計算機網絡講義113UDP應用多媒體應用對丟包不敏感多播UDP常見應用DNS:域名服務SNMP:簡單網絡管理協議RIP:路由信息協議P2P:點對點通信UDP上的可靠傳輸2025/4/13
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 六年級下冊科學課外實踐計劃
- 《初二物理力學專題復習教學方案》
- 夢想的力量演講稿示例(9篇)
- 《地理氣候特點及環境保護實踐課教案》
- 新研發人員入職培訓心得體會
- 湘少版四年級英語聽說能力提升計劃
- 辛棄疾詞選講:宋詞鑒賞教案
- 特殊崗位資格證明書(6篇)
- 中秋節小作文怎么寫10篇
- 在線教育教師的整改措施
- 生殖健康咨詢員培訓《性與生殖健康綜合咨詢技巧》
- 6-5焊接材料烘焙記錄
- 鉆孔施工流程圖
- 趕工方案(精裝、幕墻工程)
- 幼兒園優質公開課:小班科學活動《會唱歌的罐罐》課件
- 科學小實驗硫酸銅結晶
- TWS藍牙耳機產品設計報告-2020
- 特殊人群的膳食營養計劃書
- 服務與服務意識培訓課件
- 養老協議書簡約版
- 電動車代理合同
評論
0/150
提交評論