今天工作的時候剛好有客戶對我說 :“包”和“幀”有啥區別,你咋一會說“包”,一會說“幀”呢? 太不講究了!這說的讓我有點臉紅,工作中我們通常會把“包”和“幀“混著說,兩者在大部分場景中都代表著相同的意思。但是嚴格說起來兩者是完全不同的,它們代表著不同的網絡層次,作為一個專業的人,咱們還是要分開說的!它們之間的區別也是我們今天的分享的主題,同時也會分享一下與其相關的內容。
我們來看看下面的這張圖片,看著這張圖,你是不是也有感覺了呢!
網絡層次與專有名詞
就是各位猜想的這樣,在不同的網絡層次,我們對數據有不同的稱呼。
去除封裝會更清晰
我們先看一下最上層的數據,Data是應用層協議產生的數據,例如訪問網頁、看視頻、聽音樂,這些都可以稱為應用層數據,電腦的操作系統會把這些應用層數據按照一定的規則傳給下一層傳輸層。
在傳輸層,我們看到的數據稱之為Segment,中文意思是段。在這一層,數據會被加上TCP或者UDP頭,變成一個應用程序特有的數據。操作系統就是通過TCP或UDP端口號來區別不同應用程序的。
當數據再被往下傳輸的時候,就變成了packet,即“包”的意思。在這一層,Segment會被加上IP頭部信息,然后就可以在三層傳輸了,而工作在三層的路由器會根據目的IP地址來轉發這些”包“。
在往下,數據就會被加上mac地址信息,名稱就變成了Frame,”幀“。在這一層,就是交換機的世界了,交換機通常查找MAC地址表項來轉發相應的”幀“。
上面的幾個層次都可以使用wireshark抓包查看到具體的內容,比較形象,例如下面,一層套著一層,明顯可以看出幀、包、段、數據的區別。
Wireshark抓包信息
在下面的物理層(layer1),我們能看到的都是BIT流,它們呈現給我們的都是0和1這樣的電氣特性,平常只有那些頭發比較稀少的硬件工程師才關注,咱們一般看不到。工作中我們看到網絡設備的物理層都已經是非常成熟的內容,一般不會有問題。
各位看到這里,應該能夠明白“幀”和“包"區別了吧?其實很多的時候它們就是通用的,只是它們所在的網絡層次不同,封裝也不同。為了顯示專業,一般我們在討論交換機相關的layer2內容時,可以把數據稱之為”幀“,在討論與路由器相關的layer3內容時,就把數據稱之為”包“。
如果還有疑問,歡迎關注我的頭條號,并且留言討論,謝謝!