計算機網路筆記 5 傳輸層

2021-09-24 15:39:54 字數 4300 閱讀 2469

tcp(可靠傳輸) — 分段、編號、流量控制、建立會話

udp(不可靠傳輸) — 乙個資料報就能完成資料通訊 、不建立會話、多播

傳輸層和應用層的之間的關係

共享資料夾=tcp+445

sql=tcp+1433

應用層協議和服務之間的關係

服務執行後在 tcp 或 udp 的某個埠偵聽客戶端請求

防火牆不能攔截木馬程式

windons ipsec 控制流量

傳輸層協議和網路層協議的主要區別

傳輸層的主要功能:

tcp 與 udp

tcp 協議的概述

tcp 是面向連線的傳輸層協議

每條 tcp 連線只能有兩個端點(endpoing),每一條 tcp 連線只能是點對點的(一對一)

tcp 把連線作為最基本的抽象

每一條 tcp 連線都有兩個端點

tcp 連線的端點不是主機,不是主機的 ip 位址,不是應用程序,也不是傳輸層的協議埠。

tcp 連線的端點叫做套接字(socket)

埠號拼接到 ip 位址即構成了套接字。

tcp 提供可靠的交付服務

tcp 提供全雙工通訊(傳送端和接收端都在不斷的相互響應)

tcp 協議的特點

tcp 如何實現可靠傳輸

可靠傳輸的工作原理———停止等待協議

​ 無差錯情況:

傳送端等待接收端的確認資訊

傳送端收到確認後傳送後面的資料

​ 超時重傳:

傳送端沒有收到接收端的確認訊息

等一會重新傳資料

​ 確認丟失:

接收端的確認資訊在傳輸的過程中丟失了,傳送端沒有收到

超時重傳

​ 確認遲到:

在一斷時間沒有收到確認資訊,重傳

在後面再接收到確認訊息時不做處理

使用上述的確認和重傳機制,我們就可以在不可靠的傳輸網路上實現可靠的通訊。

這種可靠傳輸協議常稱為自動重傳請求 arq(automatic repeat request)

arq 表明重傳是請求是自動進行的,接收方不需要請求方傳送重傳某個出錯的分組。

停止等待協議的優點是簡單,但缺點是通道利用率太低。

提高通道利用率:

流水線傳輸

傳送方可連續傳送多個分組,不必每發完乙個分組就停下來等待對方的確認資訊。由於通道上一直有資料不間斷的傳送,這種傳輸方式可獲得很高的通道利用率。

連續 arq 協議(流水線)

傳送方維持傳送視窗(比如是5)

每收到乙個確認資訊,視窗就向後移一位,後面進入到傳送視窗的資料組開始傳送。

累積確認(流水線)

當傳送方收到第 n 個組的確認資訊後,第 n 個之前的確認資訊就不用再發了。

tcp 協議如何實現流量控制

tcp 首部報文

urg:當 urg =1 時,表示傳送的是緊急報文,在傳送端的快取區不排隊等待,當當前資料報文傳送完畢後立即傳送該報文。

ack:表示前面的確認號字段是否有效。ack=1,表示前面的確認號字段有效。也就表示該 tcp 會話建立成功。

psh:告訴對方收到該報文後是否應該立即推送給上層。當 psh=1時,表示對方接收到報文時,在快取區不等待,直接接收。

rst:當 rst=1時,說明你與主機的連線出現了嚴重的錯誤,必須釋放連線,然後再重新建立連線。或者說明你上次傳送給主機的資料有問題,主機拒絕響應。

syn:在建立連線時用來同步序列號。當 syn=1 ack=0時,表示這是乙個請求建立連線的報文,當 syn=1 ack =1時,表示對方同意建立連線,當 syn=1時,表示這是乙個建立連線的請求或同意建立連線的請求。只有在前兩次握手中 syn 才會設定為1。

fin:標記資料是否傳送完畢。當 fin=1時,相當於告訴對方:我的資料已經傳送完畢,你可以釋放連線了。

資料視窗:表示可以接收的資料量,傳送方根據該設定自己資料的傳送量。

校驗和:計算時與 udp 類似。

緊急指標:指向緊急資料的最後乙個位元組的位置。

選項部分

選項部分的應用:

mss最大報文段長度(maxium segment size):指明資料字段的最大長度,資料字段的長度加上tcp首部的長度才等於整個tcp報文段的長度。mss值指示自己期望對方傳送tcp報文段時那個資料字段的長度。通訊雙方可以有不同的mss值。如果未填寫,預設採用536位元組。mss只出現在syn報文中。即:mss出現在syn=1的報文段中。

視窗擴**項(windows scaling):由於tcp首部的視窗大小字段長度是16位,所以其表示的最大數是65535。但是隨著時延和頻寬比較大的通訊產生(如衛星通訊),需要更大的視窗來滿足效能和吞吐率,所以產生了這個視窗擴**項。

sack選擇確認項(selective acknowledgements):用來確保只重傳缺少的報文段,而不是重傳所有報文段。比如主機a傳送報文段1、2、3,而主機b僅收到報文段1、3。那麼此時就需要使用sack選項來告訴傳送方只傳送丟失的資料。那麼又如何指明丟失了哪些報文段呢?使用sack需要兩個功能位元組。乙個表示要使用sack選項,另乙個指明這個選項占用多少位元組。描述丟失的報文段2,是通過描述它的左右邊界報文段1、3來完成的。而這個1、3實際上是表示序列號,所以描述乙個丟失的報文段需要64位即8個位元組的空間。那麼可以推算整個選項欄位最多描述(40-2)/8=4個丟失的報文段。

時間戳選項(timestamps):可以用來計算rtt(往返時間),傳送方傳送tcp報文時,把當前的時間值放入時間戳字段,接收方收到後傳送確認報文時,把這個時間戳字段的值複製到確認報文中,當傳送方收到確認報文後即可計算出rtt。也可以用來防止迴繞序號paws,也可以說可以用來區分相同序列號的不同報文。因為序列號用32為表示,每2^32個序列號就會產生迴繞,那麼使用時間戳字段就很容易區分相同序列號的不同報文。

nop(no-operation):它要求選項部分中的每種選項長度必須是4位元組的倍數,不足的則用nop填充。同時也可以用來分割不同的選項字段。如視窗擴**項和sack之間用nop隔開。

tcp 協議如何避免網路堵塞

tcp 的流量控制———在給定的傳送端和接收端之間的點對點通訊量的控制,它所要做的就是抑制傳送端傳送資料的速率,以便使接收端來得及接收。

tcp 的擁塞控制-------擁塞控制是乙個全域性性的過程,涉及到所有的主機、所有的路由器,以及與降低網路傳輸效能有關的所有因素

tcp 傳輸連線管理

傳輸連線有三個階段:連線建立,資料傳送,連線釋放

tcp 連線的建立都是採用客戶伺服器方式

主動發起連線建立的應用程序叫做客戶端

被動等待連線建立的應用程序叫做伺服器

建立連線:三次握手

連線釋放:四次揮手

資料傳輸結束後,通訊的雙方都可釋放連線。客戶端應用程序先向其 tcp 發出連線釋放報文段,並停止再傳送資料,主動關閉 tcp 連線。

客戶端把連線釋放報文段首部的 fin=1,其序列號 seq=u,等待伺服器的確認。

伺服器發出確認,確認號 ack=u+1,而這個報文段自己的序列號 seq=v,tcp 伺服器程序通知高層應用程序,從客戶端到伺服器這個方向的連線就釋放了,tcp 連線處於半關閉狀態。伺服器傳送資料,客戶端仍會接收。

若伺服器沒有要向客戶端傳送的資料,其應用程序就通知 tcp 釋放連線。

客戶端收到連線釋放報文段後,必須傳送確認

tcp 連線必須經過時間 2msl 後才真正釋放掉。

計算機網路 傳輸層

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

計算機網路(傳輸層)

網路層提供了主機之間的邏輯通訊,運輸層為運輸在不同主機上的程序之間提供了邏輯通訊。運輸層協議是在端系統中而不是在路由器中實現的。運輸協議能夠提供的服務常常受制於底層網路層協議的服務模型。底層無法提供時延或頻寬保證,運輸層協議也無法提供。但是即使底層網路協議不可靠,運輸協議也可以提供可靠的資料傳輸服務...

計算機網路 傳輸層

運輸層最重要的兩種協議 tcp協議,udp協議 真正的通訊 兩個主機之間應用程序的通訊 運輸層的重要功能 1 復用 傳送方的不同應用程序使用同乙個運輸層協議傳輸資料 應用層 運輸層 2 分用 接收方的運輸層在剝去報文首部後把資料真正交付到目的應用程序 運輸層 應用層 網路層和運輸層的區別 網路層說明...