增補部落格 第二十九篇 計算機網路複習四

财神给你送元宝發表於2024-06-18

第五章 運輸層

1.運輸層的作用

運輸層向它上面的應用層提供通訊服務(提供端到端,程序到程序的可靠通訊),為執行在不同host上的程序提供邏輯通訊,向高層使用者遮蔽通訊子網的細節

2.UDP和TCP的特點,及使用它們的應用程式,熟知埠號

UDP和TCP的特點:

  • UDP

    • 支援單播、多播、廣播

    • 無連線,不可靠

    • 可以任何速率傳送資料

  • TCP

    • 僅單播,不支援多播、廣播

    • 面向連線,可靠按序

    • 流量控制(傳送速率不超過接收方的接收能力)

    • 擁塞控制(網路過載時限制傳送方的傳送速率)

及使用它們的應用程式:

熟知埠號

3.UDP:首部格式,檢驗和

首部格式

檢驗和傳送端:

  1. 先設定檢驗和欄位為0

  2. 每兩個位元組為一組,進位累加求和,多出的加到最後一位

  3. 把求和結果求反,求反即轉換成2進位制後,0變1,1變0

  4. 把計算結果放入檢驗和欄位

接收端

  1. 把每2個位元組為一組,進位累加求和

  2. 把求和結果求反:為0即未檢驗出差錯(不排除沒檢測出來的錯誤)

4.TCP的首部格式(埠號,序號,確認號,視窗,首部長度,檢驗和,6個標誌位)

埠號:各佔2個位元組當訪問百度時,源埠使用客戶端系統隨機分配的埠號,目的埠是使用熟知埠號80序號:佔4個位元組。序號範圍是【0~2^32-1】,迴圈使用確認號:佔4個位元組,是期望收到對方下一個報文段的第一個資料位元組的序號。若確認號為N,則代表:序號N-1為止的所有資料都已正確收到視窗:佔2個位元組。視窗值是【0~2^16-1】之間的整數。視窗指的是傳送本報文段的一方的接收視窗。視窗值告訴對方:從本報文段首部中的確認號算起,接收方目前允許對方傳送的資料量。視窗值作為接收方讓傳送方設定其傳送視窗的依據。視窗欄位明確指出了現在允許對方傳送的資料量。視窗值經常在動態變化著首部長度:佔4位,也叫資料偏移,最小20,最大60檢驗和:佔2位,檢驗和欄位檢驗的範圍包括首部和資料兩部分6個標誌位

  • 緊急URG:當URG=1時,表明緊急指標欄位有效。緊急指標:指出在本報文段中緊急資料共有多少個位元組(緊急資料放在本報文段資料的最前面)

  • 確認ACK:只有當ACK=1時確認號欄位才有效

  • 推送PSH:接收方TCP收到PSH=1的報文段,就儘快地交付接收應用程序,而不再等到整個快取都填滿了後再向上交付

  • 復位RST:當RST=1時,表明TCP連線中出現嚴重差錯,重新建立運輸連線

  • 同步SYN:同步SYN=1表示這是一個連線請求或連線接受報文

  • 終止FIN:FIN=1表明傳送端的資料已傳送完畢,並要求釋放運輸連線

5.TCP的可靠傳輸:超時重傳機制,TCP流量控制(序號,確認號,確認標誌位,視窗,死鎖問題與持續計時器),傳送快取和接受快取的作用,捎帶確認與累積確認

超時重傳機制超時計時器時間RTO:RTO=RTTs+4*RTTD測量多個sampleRTT求平均值,形成RTT的估計值RTTs:RTTs=(1-α) * RTTS+α * SampleRTT 典型值α=1/8測量RTT的變化值:RTTs與SampleRTT的差值:RTTd=(1-β) * RTTD+β * |RTTs-SampleRTT| 典型值:β=1/4TCP流量控制(序號,確認號,確認標誌位,視窗,死鎖問題與持續計時器)

  • 序號:傳送視窗裡面的序號表示允許傳送的序號

  • 確認號:表明主機期望收到的下一個序號,而上一個序號位置的資料已經收到了

  • 確認標誌位:

  • 視窗:視窗指的是傳送本報文段的一方的接收視窗;傳送視窗表示:在沒有收到B的確認的情況下,A可以連續把視窗內的資料都傳送出去。

  • 死鎖問題:傳送方等待接收方通知視窗大小,接收方等待傳送方傳送資料

  • 持續計時器:當傳送方收到接收方的零視窗通知,啟動持續計時器。若持續計時器到期,就傳送一個零視窗探測報文段

  • 接收方傳送的確認報文段中:若視窗仍是零,則重置持續計時器若視窗不是零,則死鎖開啟傳送快取和接受快取的作用

  • 傳送方應用程序把資料傳送到TCP的傳送快取;傳送快取暫時存放:1準備傳送的資料;2已傳送未確定的資料

  • 接收方應用程序從TCP的接收快取中讀取位元組流;接收快取暫時存放:1已收到但尚未提交的資料;2失序的資料捎帶確認與累積確認

  • 累積確認:即不必對收到的分組逐個傳送確認,而是對按序到達的最後一個分組傳送確認,這樣就表示:到這個分組位置的所有分組都已正確收到了

  • 捎帶確認:當一個資料幀到達的時候後,接收方並不是立即傳送一個單獨的控制幀,而是抑制一下自己並且開始等待,知道網路層傳遞給他下一個分組,然後,確認資訊被附在往外傳送的資料幀中(使用幀頭中的ack域)。實際上,確認報文搭了下一個外發資料幀的便車。

6.TCP的擁塞控制:網路擁塞的判斷,傳輸輪次與擁塞視窗大小的關係(慢開始與擁塞避免,門限ssthresh,重傳計時器超時與三個重複ACK)

網路擁塞的判斷:重傳定時器超時傳輸輪次與擁塞視窗大小的關係(慢開始與擁塞避免,門限ssthresh,重傳計時器超時與三個重複ACK)

  • 慢開始:每經過一個RTT,cwnd翻倍

  • 擁塞避免:每經過一個RTT,cwnd加一

  • 慢開始門限ssthresh:當cwnd = ssthresh時由指數增長切換為線性增長;ssthresh=24時,重傳計時器超時,傳送方判斷為網路擁塞。調整ssthresh=cwnd/2,擁塞視窗cwnd=1,執行慢開始圖片

7.TCP連線:TCP的套接字,三次握手建立TCP連線,四次握手釋放TCP連線

TCP的套接字:就是對網路中不同主機上的應用程序之間進行雙向通訊的端點的抽象。一個套接字就是網路上程序通訊的一端,提供了應用層程序利用網路協議交換資料的機制三次握手建立TCP連線:

  • 剛開始客戶端A和服務端B都是關閉的

  • B的TCP伺服器程序被動開啟,準備接受客戶程序的連線請求

  • A主動開啟,A向B發出SYN報文段,選擇初始序號,不攜帶資料。SYN=1,SEQ=X

  • B收到SYN報文段,發回ACK報文段,選擇初始序號,分配快取,不攜帶資料。SYN=1.ACK=1.SEQ=Y,ack=x+1

  • A向B傳送SYN+ACK報文段,可攜帶資料。通知上層應用程序:TCP連線已建立。

  • B通知其上層應用程序TCP連線已經建立。

四次握手釋放TCP連線:

  • 客戶端A主動關閉。A向B發出FIN報文段,並停止傳送是資料。FIN=1,seq=u

  • B通知應用程序。B收到FIN報文段,回覆ACK報文段。TCP連線處於半關閉狀態:B仍可傳送資料。ACK=1,seq=v,ack=u+1

  • B被動關閉。若B已經沒有要向A傳送的資料,向A傳送FIN報文段。FIN=1,ACK=1,seq=w,ack=u+1

  • A收到FIN報文段後,必須發出ACK報文段。ACK=1,seq=u+1,ack=w+1

  • B收到ACK報文段後,TCP連線關閉。

相關文章