計算機網路學習筆記之 傳輸層

2021-10-08 22:03:41 字數 3045 閱讀 4255

傳輸層提供程序之間的通訊(即端到端的通訊)

復用和分用

差錯檢測(首部和資料部分)網路層只進行首部檢測提供兩種不同的通訊協議

套接字udp只是在ip的資料報服務之上新增了兩個最基本的服務:復用和分用以及差錯檢測

udp提供盡最大努力的交付,即不保證可靠交付,因此維護傳輸可靠性的工作需要使用者在應用層來完成

udp是面向報文的。一次完成乙個完整的報文,報文是udp傳輸的最小單位。

在計算校驗和時,要在udp資料報之前新增12b的偽首部

有錯就丟棄

tcp是在不可靠的ip層之上實現的可靠地資料傳輸協議,它主要解決傳輸的可靠、有序、無丟失和不重複問題。特點:

面向連線;

提供可靠交付服務;

全雙工通訊,設有傳送快取和接收快取;

tcp面向位元組流。

tcp傳輸的資料單元稱為報文段乙個tcp報文段分為tcp首部和tcp資料兩個部分,整個tcp段作為ip資料報的資料部分封裝在ip資料報中。其首部的20b是固定的

欄位名所佔的位數

說明源埠號和目的埠號

各佔16位

源埠號和目的埠號

序號欄位seq32位

tcp連線傳送的資料流中的每個位元組都編上乙個序號,序號欄位的值指的是本報文段所傳送的資料的第乙個位元組的序號

確認號字段ack32位

是期望收到對方的下乙個報文段的資料的第乙個位元組的序號若確認號為n,則表明到序號n-1為止的所有資料都以正確收到

資料偏移

4位它指出tcp報文段的資料起始處距離tcp報文段的起始處有多遠

確認位ack1位

只有當ack=1時確認號字段才有效,tcp規定,在連線建立後所有傳送的報文段都必須把ack置1

同步位syn1位

同步syn=1表示這是乙個連線請求(syn=1,ack=0)或連線接收報文(syn=1,ack=1)

終止位fin1位

用來釋放乙個連線fin=1表明此報文段的傳送方的資料已經傳送完畢,並要求釋放傳輸連線

校驗和16位

也要在前面加上12b的偽首部

3.2.1、tcp連線的建立(三次握手)

3.2.2、tcp連線的釋放(四次揮手)

fin=1 seq=uack=1 seq=v ack=u+1fin=1 ack=1 seq=w ack=u+1ack=1 seq=u+1 ack=w+1tcp使用校驗、序號、確認、重傳等機制確保可靠傳輸

3.3.1、校驗

和udp一樣

3.3.2、序號

tcp首部的序號字段保證資料能有序地提交給應用層,tcp把資料視為乙個無結構但有序地位元組流,序號建立在傳送的位元組流之上

3.3.3、確認

tcp首部的確認號是期望收到對方下乙個報文段的資料的第乙個位元組的序號

tcp預設採用累計確認

3.3.4、重傳

導致tcp重傳的兩個事件:超時和(3個)冗餘ack

tcp提供一種基於滑動視窗的流量控制機制,來消除可能使接收方快取區溢位的可能性。

接收方根據自己接收快取的大小,動態地調整傳送方的傳送傳送視窗的大小,這稱為接收視窗rwnd;同時,傳送方根據其對網路擁塞成都的估計而確定的視窗值,這稱為擁塞視窗cwnd傳送方的傳送視窗通常等於rwnd和cwnd的最小值

tcp協議要求傳送方維護一下兩個視窗:

接收視窗rwnd:接收方根據目前接收快取大小所許諾的最新視窗值,反映接收方的容量。由接收方根據其放在tcp報文的首部的視窗字段通知傳送方

擁塞視窗cwnd:傳送方根據自己估算的網路的擁塞程度而設定的視窗值,反映網路的當前容量。

傳送視窗的上限值應該是rwnd和cwnd中較小的乙個,即:傳送視窗的上限值=min[rwnd,cwnd]

3.5.1、慢開始和擁塞避免

3.5.2、快重傳和快恢復

計算機網路之傳輸層

明天就考計算機網路,暫時先簡單的寫一寫 tcp 協議,日後再繼續寫完這一層吧。實際的傳輸通道總是不夠理想的,不可避免的會發生一些差錯,這就需要我們制定一些規則來使得傳輸變得可靠,tcp 協議就這樣應運而出。這是 tcp 協議中採用的最簡單的一種實現可靠傳輸的協議。如下圖,停止等待 就是傳送端傳送乙個...

計算機網路之傳輸層

網路層只把分組傳送到目的主機,但是真正通訊的並不是主機而是主機中的程序。傳輸層提供了程序間的邏輯通訊,傳輸層向高層使用者遮蔽了下面網路層的核心細節,使應用程式看起來像是在兩個傳輸層實體之間有一條端到端的邏輯通訊通道。向兩個主機中程序間的通訊提供通用資料傳輸服務 區別 首部字段只有 8 個位元組,包括...

計算機網路 傳輸層

為什麼要劃分傳輸層?既然網路層已經能把源主機上發出的資料傳送給目的主機,那麼為什麼還需要加上乙個傳輸層呢?這就需要我們理解主機使用者應用層通訊的主體,位於兩台網路主機中真正的資料通訊主體並不是這兩台主機,而是兩台主機中的各種網路應用程序.同一時間一台主機上可能有多個程序同時執行,這時候就需要為應用程...