行程間的通信
運輸層向它上面的應用層提供通信服務;通信的物體是兩臺主機的行程之間在資料交換

網路層為主機之間提供邏輯通信,而運輸層為應用行程間提供端到端的邏輯通信
運輸層還要對收到的報文進行差錯檢測(網路層只校驗首部而不校驗資料報)
運輸層向高層用戶屏蔽了下面網路核心的細節;TCP可以視為一條全雙工可靠信道,UDP可以視為一條不可靠信道

運輸層主要協議
TCP傳輸控制協議、UDP用戶資料報協議

應用層語運輸層之間的對照關系

運輸層的埠
復用:應用層所有應用行程都可以通過運輸層再傳送刀網路層
分用:運輸層從網路層收到資料后發送給各應用
協議埠號(埠),是軟體埠(應用層各種協議行程與運輸物體進行互動的一種地址);所有采用此協議的行程都有源埠和目標埠兩個重要欄位
TCP/IP用一個16位的埠號來標志埠(埠號只具備本地意義,不同計算機的相同埠之間沒有關聯,允許65535個不同的埠號),埠號分為兩種
服務端使用的埠號
熟知埠號/系統埠號(0~1023)

登記埠號(1024~49151)
客戶端使用的埠號
短暫埠號(49152~65535),在客戶京城運行時才會動態選擇
用戶資料報協議UDP
特點: 1.無連接(減少了開銷和發送資料之前的時延)
2.盡最大努力交付(不保證可靠交付,主機不需要維持復雜的連接狀態)
3.面向報文的應用層交付的報文并不會拆分、合并,而是保留報文邊界(無論多長的報文UDP都會原樣發送;報文太長或太短都會降低IP層的效率<分片/首部相對長度太長>)
4.沒有擁塞控制(適合允許一定資料丟失卻要求不能太大延遲的通訊)
5.支持一對一、一對多、多對多的互動通信
6.首部開銷小(僅8位元組,TCP有20個位元組)

UDP首部格式
1.源埠號:要求對方回信時使用,不需要可以用全0
2.目標埠號:不能為0
3.長度:最小值為8(僅首部)
4.檢驗和:檢測傳輸是否出錯,出錯則廢棄

UDP的埠分用

如果埠號不正確(不存在行程),則丟棄報文,并由網際控制報文協議ICMP發送“埠不可到達”錯誤報文
UDP不需要套接字
UDP用戶在計算校驗和時,要在UDP用戶資料報之前體檢一個12位元組的偽首部,UDP檢驗和是把首部和資料報一起檢驗(不同于IP資料報的檢驗只檢驗首部)

傳輸控制協議TCP
TCP的主要的特點:
1.TCP是面向連接的運輸層協議
2.每一條TCP連接只能有兩個端點,每一條TCP連接只能點對點
3.TCP提供可靠交付的服務
4.TCP提供全雙工通信,
5.面向位元組流,TCP中的“流”指的是流入到行程或從行程流出的位元組序列

TCP的連接
TCP把了連接作為最基本的抽象,TCP連接的端點叫做套接字socket或者插口,
套接字socket = (IP地址:埠號)
每一條TCP連接唯一地被通信兩段的兩個端點(即兩個套接字)所確定,
TCP連接 :: = {socket1,socket2} = { (IP1:port1) , (IP2:port2) }
可靠傳輸的作業原理
特點: 1.傳輸信道不產生誤差
2.不管發送發的發送速度多快,接收方都來得及處理收到的資料
停止等待協議:一個分組發送完成后停止發送,等待對方確認

在出錯的情況下有以下三點
1.發送一個分組后,必須暫存已發送分組的副本,直到接收到確認信號
2.分組和確認分組都必須有編號
3.超時計時器設定的重傳時間應比正常往返時間長一點(以規避較大延遲和擁塞)
確認丟失和確認遲到
B因某種原因(資料丟失/網路擁塞沒及時確認)收到了兩個資料報M和M1,應執行以下動作:
1.丟棄這個重復的M1,不向上層交付
2.向A發送確認

信道利用率

信道利用率公式
流水線傳輸可以提高信道利用率(連續ARQ協議和滑動視窗協議)

連續ARQ協議

分組發送按照分組序號從小到大發送,位于發送視窗中的5組資料都可連續發送,無需等待確認
接收到第一個分組的確認后,可以將發送視窗向前移動一位,接收方一般采用累積確認的方式(不用逐個發送確認,對按序到達的最后一個分組發送確認即可--全到了)
TCP報文段的首部格式

TCP首部最小長度為20位元組
遠埠和目的埠:各占2位元組
序號:占4位元組,此欄位的數值為報文段資料的第一個位元組的序號(報文段序號)
確認號:占4位元組,是期望收到對方下一個報文段的第一個資料位元組的序號

資料偏移:占4位,TCP報文段起始距整個報文段的起始處有多遠
保留:占6位,目前置0
緊急URG:URG=1時,表明緊急指標欄位有效(高優先級),需要配合首部中的緊急指標欄位使用
確認ACK:ACK=1時有效,建立連接后的ACK都必須置1
推送PSH:盡快發送,而不會等到快取填滿后統一發送
復位RST:RST=1時,TCP連接出現嚴重問題,必須釋放
同步SYN:在連接建立時用來同步序號;SYN=1&ACK=0時,此連接為請求報文段,建立連接后SYN=1&ACK=1
終止FIN,FIN=1時表明發送已結束,要求釋放連接
視窗:占2位元組,報文的接收值視窗(以位元組為單位)其中明確指出了現在允許對方發送的資料量,視窗值的量在動態變化

檢驗和:占2位元組
緊急指標:占2位元組,URG=1時才有效,所有緊急資料處理完之后才會處理正常資料(即使視窗為0也可以發送吉恩幾資料)
選項:長度可變,最長可達40位元組,當沒有選項時,TCP首部長度是20位元組
TCP最初之規定了一種選項:最大報文段長度MSS;后續增加了視窗擴大選項、時間戳選項、選擇確認
TCP可靠傳輸的實作
1.以位元組為單位的滑動視窗

發送視窗內的資料都會被暫存,等待重發
1.A的發送視窗根據B的接收視窗來確定,但是并不嚴格等于B的接收視窗,A還可根據網路擁塞情況適當減小自己的發送視窗
2.對不按序到達的資料應該如何處理,TCP并無明確規定,TCP會將不按序到達的資料臨時存放在接收視窗中,等到位元組流中所缺少的位元組收到后,再按序交付上層,
3.TCP要求接收方必須有累積確認功能
超時重傳時間的選擇
![]()
RTT為報文段的往返時間,RTTs為加權平均往返時間
超時重傳時間RTO ![]()
RTTD是RTT偏差的加權平均值
![]()

選擇確認SACK

當接收到的欄位不全時,可以指明至多4蓋位元組塊的邊界資訊(8段邊界)
TCP的流量控制(發送方別太快了)
利用滑動視窗實作流量控制
接收視窗為0的時候會停止發送

TCP的傳輸效率
略
TCP的擁塞控制
擁塞控制的一般原理
![]()
擁塞控制的實質就是防止過多的資料被注入網路中(擁塞控制是全域性的,不同于流量控制<點對點>)

擁塞控制分為倍訓和開環兩種
倍訓控制基于反饋換路,主要措施如下:
1.檢測網路系統以便檢測到擁塞何時何處發生
2.把擁塞發生的資訊送到可能采取行動的地方
3.調整整個網路系統解決出現的問題
TCP的擁塞控制方法
慢開始 擁塞避免
基于視窗的擁塞控制:發送發維持一個擁塞視窗,發送方讓自己的發送視窗等于擁塞視窗
慢開始:試探性的逐步增大發送視窗,在慢開始演算法后,每經過一個傳輸輪次,擁塞視窗cwnd就加倍(傳輸輪次就是RTT)

擁塞避免:讓擁塞視窗緩慢增大,每經過一個往返時間RTT,發送方的擁塞視窗+1(比慢開始的增長速率緩慢得多)

快重傳
快恢復
主動佇列管理AQM
當佇列值超過某個閾值時開始丟棄后面到達的分組(提醒對方發慢點),具體做法如下(隨機早起檢測RED)
1.若平均佇列長度小于最小門限,則把新到達的分組放入佇列中進行排隊
2.若平均佇列長度超過最大門限,則把新到達的分組丟棄
3.若平均佇列長度置于兩者之間,則隨機丟棄新到達的分組
TCP的連接管理
TCP的連接建立(三次握手)

1.B的TCP服務器行程創建TCB(傳輸控制模塊),準備接受客戶端的連接請求,然后服務器進入LISTEN(收聽狀態)
2.A的客戶端行程童顏創建TCB,,向B發送請求(SYN=1,同時選擇一個初始序號seq=x,不攜帶資料,但會消耗掉一個序號),TCP客戶端進入SYN-SENT(同步已發送)狀態
3.B收到請求后,向A發送確認(SYN和ACK均置1,確認號ack=x+1,同時自己選擇一個初始序號seq=x,同樣不攜帶資料且消耗一個序號),服務器進入SYN-RCVD狀態,
A收到B的確認后,還要向B發送確認(ACK=1,ack=y+1,自己的seq=x+1),A進入ESTABLISHED(已建立連接)
B收到訊息后同樣進入ESTABLISHED(已建立連接)
TCP連接釋放(四次揮手)

1.A向B發送連接釋放報文,并停止發送資料,主動關閉TCP連接(FIN=1,seq=u<已傳輸的資料的最后一個位元組序號+1>),A進入FIN-WAIT-1(終止等待1)
2.B收到了連接釋放報文后進行確認(確認號ack=u+1,v=最后一個發送的字符序號+1),然后B進入CLOSE-WAIT(關閉等待)
3.A收到B的確認后進入FIN-WAIT-2(終止等待2),等待B發出連接釋放報文
4.B發出連接釋放報文(FIN=1,且重復已經發送過的確認號ack=u+1),B進入LAST-ACK(最后確認),等待A的確認
5.A收到釋放報文后,對此進行確認(ACK=1,ack=w+1,seq=u+1),進入TIME-WAIT(時間等待)<此時連接并未被釋放,需要等待2MSL后才能釋放,SML為最長報文段壽命>
等待2SML的原因:確保最后一個ACK報文段能送達B,未送到B會重傳FIN+ACK
確保本連接持續時間內所有的報文都從網路上消失
B只要收到A發出的確認就會進入CLOSE狀態,B的連接比A要早
TCP還有一個保活計時器,確保連接不發生故障
TCP的有限狀態機

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/352168.html
標籤:其他
