封裝和解封
復用和分用
流量控制
差錯控制
運輸層位於網路層和應用層之間,運輸層負責向應用層提供服務,同時它接受來自網路層的服務。
運輸層協議主要負責程序到程序間的通訊。
程序可以理解未是使用了運輸層服務的應用層實體。
比如nginx程序,mysql程序等,都需要把資料傳給運輸層,由運輸層負責把資料報傳輸到正確的目標主機的目標程序。
但是主機到主機的通訊是由網路層負責的,網路層協議只能把報文交付給目的計算機,但這並不是完整的交付,報文必須交付到正確的程序,而這正是運輸層協議的任務。
程序間通訊有很多種方式,但最常用的方法是客戶-伺服器正規化。位於本地主機上的程序稱為客戶,它通常需要遠端主機上的乙個稱為伺服器的程序提供的服務。
比如本地主機的瀏覽器程序就是客戶,它需要向遠端的web伺服器索取服務。
網路層協議支援把本地主機報文交付給正確的遠端主機,但是只交付到主機是不夠的。運輸層需要把報文交付到正確的應用層程序。
本地主機和遠端主機都是通過ip位址來定義的。
那如何定義程序呢,我們需要引入新的標識,也就是埠號。在tcp/ip協議族中,埠號是 0~65535之間的整數。
客戶端程式通過乙個埠號來定義自己,這種埠號稱為臨時埠號。「臨時」的含義是指生存時間很短,客戶的生存時間通常都比較短。
伺服器程序也需要用乙個埠號來定義自己。但是這個埠號不能隨機選取,這會導致客戶程式不知道該請求伺服器的哪個埠。
tcp/ip決定讓伺服器使用全球通用埠號,它們稱為熟知埠號。
事實上客戶端可以使用熟知埠號,而伺服器也可以使用其他埠號。這個決定更像是一種約定,或者預設。比如我們在請求web伺服器的時候,如果我們不指定埠號,瀏覽器缺省會請求目的主機的80埠。但是如果伺服器同時在8080埠也提供服務,我們也可以通過指定8080埠來請求服務。
現在應該清楚,在選擇資料最後的終點時,ip位址定義了無數臺主機中的一台,而埠則定義了主機上多個程序之中的某乙個。
icann(the internet corporation for assigned names and numbers)網際網路名稱與數字位址分配機構是乙個非營利性的國際組織.
icann 把埠好劃分為三個範圍段:
熟知埠號範圍從0~1023,由icann指派和控制。
註冊埠範圍從1024~49151,icann既不指派也不控制,但它們必須在 icann處註冊以防止重複。
動態埠範圍從19152~65535 它們可被用作臨時的或專用的埠號
ip位址和埠號的組合就稱為套接字位址。
客戶套接字定義了唯一的客戶程序,同樣伺服器套接字定義了唯一的乙個伺服器程序。
為了把報文從乙個程序傳送到另乙個程序,運輸層協議要對報文進行封裝和解封。
封裝發生在傳送方。傳送方程序需要將報文以及套接字等資訊遞交給運輸層。運輸層負責接收並新增運輸層首部。
在網際網路中,運輸層的分組也稱為使用者資料報、資料段或分組。
解封發生在接收方。接收方運輸層接收到報文後,拆除首部,並將報文交付給正確的應用層程序。
當乙個實體接收來自多個源的輸入時,就稱為復用。
當乙個實體將資料交付到多個源時,就稱為分用。
源點的運輸層執行的是復用,它需要接收來自多個應用層程序的報文。
終點的運輸層執行的是分用,它需要把資料交付給多個應用層程序。
當乙個實體產生資料而另乙個實體消耗這些資料時,資料的產生速度和消耗速度之間應當達到某種平衡。如果資料產生速度比消耗的快,那麼消耗方就會以為來不及處理而丟失一部分資料。如果資料產生的速度比消耗的慢,消耗方需要等待,從而使整個系統的效率降低。而流量控制就是為了解決第乙個問題。
生產者傳送資料到消耗者有兩種方式:
推送:生產者一有資料產生就傳送出去,不管消耗方是否有能力處理。
拉取: 消耗方請求資料的時候,生產者才傳送資料。
推送方式中,當生產者生產速率過快,消費者來不及處理時,就需要通知生產者進行流量控制。
拉取方式中,消費者在拉取資料時,是準備好的狀態,是有能力處理即將到來的資料的,所以不需要進行流量控制。
第十三章 運輸層簡介
1 運輸層提供程序到程序的通訊,程序通過ip 埠號標識自己,埠號16位,取值0 65535之間 2 0 1023為熟知埠號,1024 49151為註冊埠號,49152 65535為動態埠號 3 源點運輸層執行復用,將不同程序資料放入運輸層,終點運輸層執行分用,將運輸層資料交付到不同程序 4 資料的推...
unix網路程式設計之簡介和運輸層TCP UDP
前言 本文只介紹了有關unix網路程式設計的理論知識,具體的應用和例子在稍後的博文中將更新 第一章 簡介 乙個簡單的伺服器程式步驟 說明 1.建立tcp套介面 2.伺服器的眾所周知埠 3.把套介面變換成監聽套介面 4.接受客戶連線,傳送應答,伺服器程序在呼叫accept函式後處於睡眠狀態,它等待客戶...
運輸層筆記 TCP
tcp ip tcp 流量控制 差錯控制 擁塞控制 tcp報文段 程序到程序的通訊 流交付服務。全雙工通訊 復用和分用 面向連線的服務。兩個tcp之間建立虛連線,而不是物理連線。可靠的服務 編號系統 tcp是面向位元組的,所以首部中的序號和確認號字段所指的都是位元組的編號 流量控制 tcp能夠使用面...