這段地方究竟誰包含誰有些不太理解,所以整理了下
資料幀(frame):是一種資訊單位,它的起始點和目的點都是資料鏈路層。
資料報(packet):也是一種資訊單位,它的起始和目的地是網路層。
資料報(datagram):通常是指起始點和目的地都使用無連線網路服務的的網路層的資訊單元。
段(segment):通常是指起始點和目的地都是傳輸層的資訊單元。
訊息(message):是指起始點和目的地都在網路層以上(經常在應用層)的資訊單元。
但是如果一段傳輸資料特別長,那會發生什麼呢?
udp:直接附上ip頭,但在網路層會根據資料幀所能走大小執行分片。
tcp:雙方會互相通報最大報文長度,從而在傳輸層分片
首先需要理解的是資料報是不能比資料幀大的,資料幀根據不同網路(無線有線)長度會有所區別,資料報(一塊資料)進行為網路層傳輸時會進行判別,如果長過是網路層要進行分片,成為資料報。
原因:乙太網的mtu是1500,你可以用 netstat -i 命令檢視這個值。如果ip層有資料報要傳,而且資料報的長度超過了mtu,那麼ip層就要對資料報進行分片(fragmentation)操作,使每一片的長度都小於或等於mtu。我們假設要傳輸乙個udp資料報,乙太網的mtu為1500位元組,一般ip首部為20位元組,udp首部為8位元組,資料的淨荷(payload)部分預留是1500-20-8=1472位元組。如果資料部分大於1472位元組,就會出現分片現象。
ip分片發生在ip層,不僅源端主機會進行分片,中間的路由器也有可能分片,因為不同的網路的mtu是不一樣的,如果傳輸路徑上的某個網路的mtu比源端網路的mtu要小,路由器就可能對ip資料報再次進行分片。而分片資料的重組只會發生在目的端的ip層。
但是正常情況下要避免在網路層分片:
原因是ip層是沒有超時重傳機制的,如果ip層對乙個資料報進行了分片,只要有乙個分片丟失了,只能依賴於傳輸層進行重傳,結果是所有的分片都要重傳一遍,這個代價有點大。由此可見,ip分片會大大降低傳輸層傳送資料的成功率,所以我們要避免ip分片。
所以udp:對於udp包,我們需要在應用層去限制每個包的大小,一般不要超過1472位元組,即乙太網mtu(1500)—udp首部(8)—ip首部(20)。
tcp:對於tcp資料,應用層就不需要考慮這個問題了,因為傳輸層已經幫我們做了。在建立連線的三次握手的過程中,連線雙方會相互通告mss(maximum segment size,最大報文段長度),mss一般是mtu—ip首部(20)—tcp首部(20),每次傳送的tcp資料都不會超過雙方mss的最小值,所以就保證了ip資料報不會超過mtu,避免了ip分片。
資料幀 資料報 資料報三者區分
首先我們有清楚,資訊交換是發生在osi模型中的相同層面,即 等層資訊交換 源機中每一層都把信控制資訊附加在資料中,而目的機器的每一層都會都接收到的資訊進行分析,並從資料中移除控制資訊 在開始之前,需要先了解一下什麼是資料單元?資料單元 data unit 是網路資訊傳輸的基本單位。一般網路連線不允許...
資料幀 資料報 資料報三者區分
首先我們有清楚,資訊交換是發生在osi模型中的相同層面,即 等層資訊交換 源機中每一層都把信控制資訊附加在資料中,而目的機器的每一層都會都接收到的資訊進行分析,並從資料中移除控制資訊 在開始之前,需要先了解一下什麼是資料單元?資料單元 data unit 是網路資訊傳輸的基本單位。一般網路連線不允許...
資料幀 資料報 資料報以及資料段 詳解
資料幀 資料報 資料報以及資料段 osi參考模型的各層傳輸的資料和控制資訊具有多種格式,常用的資訊格式包括幀 資料報 資料報 段 訊息 元素和資料單元。資訊交換發生在對等osi層之間,在源端機中每一層把控制資訊附加到資料中,而目的機器的每一層則對接收到的資訊進行分析,並從資料中移去控制資訊,下面是各...