運輸層學習筆記二 多路復用與多路分解

2021-10-02 14:09:16 字數 866 閱讀 8821

多路分解:將運輸層報文段中的資料交付到正確的套接字的工作

多路復用:在源主機從不同套接字中收集資料塊,並為每個資料塊封裝上首部資訊從而生成報文段,然後將報文段傳遞到網路層的工作

資料本身是進入到套接字

運輸層多路復用的要求:

使用下面方式建立udp套接字時,運輸層自動為該套接字分配乙個埠號。

clientsocket = socket(socket.af_inet, socket.sock_dgram)
也可以在建立乙個套接字後,使用bind()方法為這個udp套接字關聯乙個特定的埠號如

clientsocket.bind(('',19157))
如果編寫周知協議的伺服器端,開發者必須為其分配乙個相應的周知埠號,應用程式的客戶端讓運輸層自動的分配埠號,而伺服器端分配乙個特定的埠號。

乙個udp套接字是由乙個二元組來全面標識的,該二元組包含乙個目的ip位址和乙個目的埠號。

tcp套接字是由乙個四元組(源ip位址,源埠號,目的ip位址,目的埠號)來標識的。

與udp不同的是,兩個具有不同源ip位址或源埠號的到達tcp報文段將被定向到兩個不同的套接字,除非tcp報文段攜帶了初始建立連線的請求

當客戶端向該伺服器傳送報文段時,所有報文段的目的埠都將為80

連線套接字和程序之間並非總是有著一一對應的關係,如今高效能的web伺服器通常只使用乙個程序,但是為每個新的客戶連線建立乙個具有新連線套接字的新執行緒。

運輸層多路復用與多路分解

我們現在來看這樣乙個案例,張三家很有錢,川普是張三家的老管家。張三有兩個兒子,大三和二三,乙個女兒,姍姍。李四也是富豪,李四的管家叫巴馬,李四也有兩個兒子乙個女兒。大李,二李,和莉莉。現在兩家因為是親戚,所以子女間會有書信往來,大三,二三,莉莉寫完信以後,交給管家川普去封裝,寫上張三家的位址還有各自...

運輸層的多路復用與多路分解

程序並不直接把資料交給運輸層,而是把資料交給套接字,由套接字把資料交給運輸層。由於每個主機上有多個套接字存在,所以就需要為每個套接字提供乙個唯一標識,這個標識就是常說的主機的埠號 為了知道每個報文是發往哪個主機的哪個程序的,所以有了ip協議的ip位址和tcp udp協議的埠號 ip位址提供主機到主機...

Select POLL多路復用 學習筆記

本來我不喜歡寫筆記,都是因為我同桌,她是乙個愛寫的人,把我給影響了,邊學習,邊記錄。i o 復用一般用在五種場合 1.客端處理多少描述字時。2.乙個客戶端處理多個套接字 很少出現 3.如果tcp伺服器,既要監聽套接字,又要處理accept函式返回值時,一般要使用復用。4.如果乙個伺服器要處理,tcp...