如3.2圖所示,接收方的運輸層並不是直接把資料傳輸給某個程序,而是傳送給乙個中間的socket,因為在任何時刻在接收方計算機上都不止乙個socket,每個socket都有乙個獨一無二的識別符號,這個識別符號的格式取決於這個socket是使用tcp還是udp協議,
現在我們看接收方計算機是怎麼把收到的運輸層segment傳送給合適的socket,為了這個目的,運輸層segment會有一系列fields,在接收方,運輸層會檢視這些fields來確定目標socket並把它傳送給這個socket,這個將運輸層資料傳輸到正確的socket的工作叫做分用。 從源計算機的不同socket中收集data chunks,然後為每個data chunk加上頭資訊構成segment並把這些segment傳送到網路層叫做復用
note :中間計算機的運輸層必須要把從網路層上來的segments分發到p1或者p2程序,這是通過直接將segment中的資料傳送到對應的程序的socket中是實現的,這個計算機的運輸層還必須從sockets中收集需要傳送出的資料,組成運輸層segments,並把這些segment傳送到網路層,雖然我們在網際網路運輸層協議的背景下介紹完了分用和復用,但是我們需要重點指出的是: 一旦乙個單一的協議要服務於上邊更高層級的多個協議的時候就會涉及到分用和復用
為了說明分用問題,上篇部落格講到乙個例子每個孩子都是通過名字來識別的,當bill從郵差那裡收到一批信件,他就會進行乙個分用工作——看每封信是郵寄給誰並且送到收信人手上,ann會進行乙個復用工作——從孩子們那裡收集信件並把這些信件交給郵差
上邊的學習我們知道運輸層復用需要(1).socket都有唯一的識別符號(2).每個segment都有特殊字段(fields)來宣告它需要被發往哪socket,
特殊字段包括:source port number field和destination port number field,每個埠數字都是乙個16-bit的數字,數碼從0到65535,從0到1023都稱作well-known port number,也就是說它們是用來保留給有名的應用層協議比如http(使用80埠)和ftp(使用21埠)等來使用的,當我們開發乙個應用的時候,必須要分配給應用乙個埠號
現在運輸層是怎麼執行分用就很明了了,計算機上的每個socket都分配乙個埠號,當乙個segment到達計算機,運輸層檢視它的destination port number並把它傳送到那個socket,然後segment中的資料就通過socket傳送到匹配的程序,
運輸層多路復用與多路分解
我們現在來看這樣乙個案例,張三家很有錢,川普是張三家的老管家。張三有兩個兒子,大三和二三,乙個女兒,姍姍。李四也是富豪,李四的管家叫巴馬,李四也有兩個兒子乙個女兒。大李,二李,和莉莉。現在兩家因為是親戚,所以子女間會有書信往來,大三,二三,莉莉寫完信以後,交給管家川普去封裝,寫上張三家的位址還有各自...
運輸層的多路復用與多路分解
程序並不直接把資料交給運輸層,而是把資料交給套接字,由套接字把資料交給運輸層。由於每個主機上有多個套接字存在,所以就需要為每個套接字提供乙個唯一標識,這個標識就是常說的主機的埠號 為了知道每個報文是發往哪個主機的哪個程序的,所以有了ip協議的ip位址和tcp udp協議的埠號 ip位址提供主機到主機...
運輸層 概論和udp
為應用程序之間提供端到端的邏輯通訊 但網路層是為主機之間提供邏輯通訊 對收到的報文進行差錯檢測 ip資料報只針對首部進行檢測 含面向連線的 tcp 和無連線的 udp udp 在傳送資料之前不需要先建立連線。對方的運輸層在收到 udp 報文後,不需要給出任何確認。雖然 udp 不提供可靠交付,但在某...