數據幀的產生

幀究竟是由誰來產生的?網絡

網卡能夠產生,交換機也能夠產生。交換機產生的話是由於交換機之間須要一些協議來維護特定的功能,如STP,VTP而最重要的功能仍是轉發網卡(也就是主機)所產生的幀。
追問
那好比說,個人設備是這麼連的:主機---路由器---交換機---外網。那網卡是在我計算機內的,也就是網卡直接跟路由器相連。那我要向外發送數據。網卡傳給路由器的不是數據幀嗎?但是路由器是工做在網絡層的,比網卡高。在這裏是什麼樣的狀況,還有這裏的交換機的做用?
真的對這些很模糊,但願能說得明白一點,謝謝。
追答
主機----交換機---路由器--外網,這樣連是比較正常的。
而你那種連法,把交換機去掉,也是能夠的。(也不是說交換機連了就不能夠,而是,不必)
所謂路由器工做在網絡層,那指的是【實現功能中裏最高的層次】,上層必須有底層的支持,也就是說路由器固然能支持數據鏈路層的功能。
你要弄清楚數據的流向:一個幀到了交換機,它不須要把幀解封裝,也就是不會處理網絡層裏數據包的內容,而是根據幀的信息轉發。而到了路由器,它須要解開幀的封裝,查看數據包的信息,而後根據數據包的目標地址再結合本身的路由表查找路徑,從新封裝成幀發往下一個目標。這也是路由器工做在網絡層的含義
追問
很是感謝你的回答。我還有疑問,那就是在計算機內部數據也是從高層(向外發送數據的時候)流向低層,也就是說在說算機內部也完成了對數據的封裝,那計算機也具備網絡層及如下層的功能嗎?這種是否是隻是協議上的用軟件來實現的?也就是說這種功能不僅有路由器纔有(由於咱們都說路由器工做在網絡層)?
我就是對這裏感到疑惑,還有你說的某設備工做在某層,那它是否是具有它所在層及如下層的功能?
追答
計算機具備全部層的功能,其中網卡完成數據鏈路層和物理層(能夠當作硬件),TCP/IP協議棧完成其他上層功能。(能夠當作軟件)
路由器本質上就是計算機,裏面也能夠分底層模塊和高層模塊,通常都是底層由硬件實現而高層會涉及軟件。其實高端路由器的一些比較強大的功能是可能超越網絡層的(但路由器絕大部分仍是在網絡層)
對於你最後的問題:是的。仍是那句話,高層必須有底層支持。其實物理層我沒有提到,但全部設備都是有物理層功能的,也必須通過物理層
以太網(IEEE 802.3)幀格式: 一、前導碼:7字節0x55,一串一、0間隔,用於信號同步 二、幀起始定界符:1字節0xD5(10101011),表示一幀開始 三、DA(目的MAC):6字節 四、SA(源MAC):6字節 五、類型/長度:2字節,0~1500保留爲長度域值,1536~65535保留爲類型域值(0x0600~0xFFFF) 六、數據:46~1500字節 七、幀校驗序列(FCS):4字節,使用CRC計算從目的MAC到數據域這部份內容而獲得的校驗和。 據RFC894的說明,以太網封裝IP數據包的最大長度是1500字節,也就是說以太網最大幀長應該是以太網首部加上1500,再加上7字節的前導同步碼和1字節的幀開始定界符,具體就是:7字節前導同步嗎+1字節幀開始定界符+6字節的目的MAC+6字節的源MAC+2字節的幀類型+1500+4字節的FCS。 按照上述,最大幀應該是1526字節,可是實際上咱們抓包獲得的最大幀是1514字節,爲何不是1526字節呢?緣由是當數據幀到達網卡時,在物理層上網卡要先去掉前導同步碼和幀開始定界符,而後對幀進行CRC檢驗,若是幀校驗和錯,就丟棄此幀。若是校驗和正確,就判斷幀的目的硬件地址是否符合本身的接收條件(目的地址是本身的物理硬件地址、廣播地址、可接收的多播硬件地址等),若是符合,就將幀交「設備驅動程序」作進一步處理。這時咱們的抓包軟件才能抓到數據,所以,抓包軟件抓到的是去掉前導同步碼、幀開始分界符、FCS以外的數據,其最大值是6+6+2+1500=1514。 以太網規定,以太網幀數據域部分最小爲46字節,也就是以太網幀最小是6+6+2+46+4=64。除去4個字節的FCS,所以,抓包時就是60字節。當數據字段的長度小於46字節時,MAC子層就會在數據字段的後面填充以知足數據幀長不小於64字節。因爲填充數據是由MAC子層負責,也就是設備驅動程序。