wireshark 數據鏈路層

前言

有一些概念性的詞語,咱們先沒必要理解其具體含義,可是有必要把他們之間的邏輯層級關係理順清楚。。
首先鏈路是針對兩個直接節點之間,他倆是相鄰的,不經過任何中間設備的。物理鏈路自己又分爲有線鏈路,無線鏈路,局域網等。數據鏈路層是封裝的網絡層的數據報,而網絡層的數據報如今通常爲ip數據報。
數據鏈路層協議包括以太網,PPP,令牌環,FDDI等,前兩種最多見。數據鏈路層又劃分爲邏輯鏈路層LLC子層和介質訪問控制MAC層。其中後者是爲了解決局域網中公用信道產生競爭時解決如何分配信道使用權的問題,而ppp是點對點,不涉及此路控制。所以能夠說是局域網將數據鏈路層又分爲了LLC和MAC。
其中ppp能夠包含ip,ipx,novel。其中涉及ppp的概念有LCP,NCP。具體ppp的工做流程先略過。
而以太網算是一組協議規範,主要定義的是局域網內(LAN)的(Medium Access Control訪問控制(csma/cd|ca)、物理電器特性,以太幀封裝格式,以太網取代的是數據鏈路層的令牌環和FDDI.以太網早期是總線型拓撲,後來爲了減小衝突和提升效率,使用了交換機,構成星型拓撲。
能夠簡單理解,鏈路層的ppp和以太網都是對ip層協議的封裝。PPPoE另說。。
osi的網絡模型和tcp/ip的網絡模型都涉及到封裝數據的問題,而在數據鏈路層的傳輸單位爲幀frame。傳輸層的數據放到ip層,ip層的數據部分就爲傳輸層的數據。網絡層的ip數據報傳到數據鏈路層,就爲數據鏈路層的幀的數據部分。見下面兩個圖html

ip數據報

tcp data in ip

數據鏈路層ppp幀

clipboard.png

數據鏈路層以太網(mac)幀,沒有幀尾

clipboard.png

Win查看MTU服務器


若是是wlan的話第一列應該是1492,以太網Ethernet II是1500(Why 1500?網絡

interface ipv4 show subinterfacestcp

MTU  MediaSenseState   傳入字節  傳出字節      接口
------  ---------------  ---------  ---------  -------------
4294967295                1    4552252       4865  Loopback Pseudo-Interface 1
  1500                1  3022660347  234035687  以太網
  1500                1        648    1443666  VirtualBox Host-Only Network

ping 網關

C:\Users\yaxia>ping -f -l 1473 10.70.30.1
正在 Ping 10.70.30.1 具備 1473 字節的數據:
須要拆分數據包可是設置 DF。
須要拆分數據包可是設置 DF。

10.70.30.1 的 Ping 統計信息:
數據包: 已發送 = 2,已接收 = 0,丟失 = 2 (100% 丟失),
Control-C
^C
C:\Users\yaxia>ping -f -l 1472 10.70.30.1

正在 Ping 10.70.30.1 具備 1472 字節的數據:
來自 10.70.30.1 的回覆: 字節=1472 時間<1ms TTL=255
來自 10.70.30.1 的回覆: 字節=1472 時間<1ms TTL=255
來自 10.70.30.1 的回覆: 字節=1472 時間<1ms TTL=255
來自 10.70.30.1 的回覆: 字節=1472 時間<1ms TTL=255

10.70.30.1 的 Ping 統計信息:
數據包: 已發送 = 4,已接收 = 4,丟失 = 0 (0% 丟失),往返行程的估計時間(以毫秒爲單位):最短 = 0ms,最長 = 0ms,平均 = 0ms

MTU通常爲68-1500B,通常更改MTU大小指的是三層MTU的修改。1472+包頭28字節=MTU(Maximum Transmission Unit),是數據鏈路層,當第三層(ip)收到打包以後,要將數據包分片以後再往二層傳輸。而通常說的修改MTU就是說的修改IP層分片的大小,而不是指的(固定)大小的數據鏈路層的分片。oop

ipconfig/all

以太網適配器 以太網:

   鏈接特定的 DNS 後綴 . . . . . . . :
   描述. . . . . . . . . . . . . . . : Intel(R) Ethernet Connection (5) I219-LM
   物理地址. . . . . . . . . . . . . : 8C-EC-4B-5F-E9-49
   DHCP 已啓用 . . . . . . . . . . . : 是
   自動配置已啓用. . . . . . . . . . : 是
   本地連接 IPv6 地址. . . . . . . . : fe80::ed9a:ac29:db44:2570%11(首選)
   IPv4 地址 . . . . . . . . . . . . : 10.70.30.47(首選)
   子網掩碼  . . . . . . . . . . . . : 255.255.254.0
   得到租約的時間  . . . . . . . . . : 2019年9月18日 15:43:11
   租約過時的時間  . . . . . . . . . : 2019年9月23日 15:43:13
   默認網關. . . . . . . . . . . . . : 10.70.30.1
   DHCP 服務器 . . . . . . . . . . . : 10.70.1.36
   DHCPv6 IAID . . . . . . . . . . . : 42789963
   DHCPv6 客戶端 DUID  . . . . . . . : 00-01-00-01-22-50-8C-EE-8C-EC-4B-5F-E9-49
   DNS 服務器  . . . . . . . . . . . : 10.70.1.38
                                       10.70.1.39
   TCPIP 上的 NetBIOS  . . . . . . . : 已啓用

以太網數據幀結構this


以太網數據幀結構

  1. 前同步碼:準確的說是前導碼7個Byte +幀開始符1個Byte ,目的是時鐘同步,爲了支持不一樣的以太網類型。時鐘同步簡單的理解爲你們拔河的時候喊得1,2,1,2這樣式兒的口號。
  2. 目的mac地址:能夠是某個機器物理地址,也能夠是廣播地址(FF-FF-FF-FF-FF-FF for arp)
  3. 源mac:略過
  4. 類型:容許以太網多路複用,常見的爲TCP/udp/IP,Novell IPX/SPX,Apple Talk Phase。這樣以太網更好的勝任了數據鏈路層的工做
  5. 數據:46-1500Kb
  6. CRC:Cyclic Redundancy Check循環校驗。

綜上最大應爲:7+1+6+6+2+1500+4=1526,可是物理網卡會去掉一頭的前同步碼8個字節,去掉一尾的crc4個字節,wireshark裏展現的爲核心須要解析的爲6+6+2+(46-1500),最大爲1514字節,最小爲60。以下圖spa

最大1514

ipv4

Ethernet II, Src: Dell_5f:e9:49 (8c:ec:4b:5f:e9:49), Dst: Cisco_8f:98:00 (84:b2:61:8f:98:00)code

Destination: Cisco_8f:98:00 (84:b2:61:8f:98:00)
Source: Dell_5f:e9:49 (8c:ec:4b:5f:e9:49)
Type: IPv4 (0x0800)

arp

Ethernet II, Src: Cisco_8f:98:00 (84:b2:61:8f:98:00), Dst: Broadcast (ff:ff:ff:ff:ff:ff)htm

Destination: Broadcast (ff:ff:ff:ff:ff:ff)
    Address: Broadcast (ff:ff:ff:ff:ff:ff)
    .... ..1. .... .... .... .... = LG bit: Locally administered address (this is NOT the factory default)
    .... ...1 .... .... .... .... = IG bit: Group address (multicast/broadcast)
Source: Cisco_8f:98:00 (84:b2:61:8f:98:00)
    Address: Cisco_8f:98:00 (84:b2:61:8f:98:00)
    .... ..0. .... .... .... .... = LG bit: Globally unique address (factory default)
    .... ...0 .... .... .... .... = IG bit: Individual address (unicast)
Type: ARP (0x0806)
Padding: 000000000000000000000000000000000000

二層爲arp廣播,基本靠吼,經過arp廣播查到網關地址blog

14    0.826054    Cisco_8f:98:00    Broadcast    ARP    60    Who has 10.70.30.1? Tell 10.70.30.1

三層爲路由,每一跳的mtu可能都不一樣,這就涉及到分包(DF),在發現下一跳路由器的MTU大小以後,會有兩個選擇:若是爲1且包大於本身的mtu,那就直接扔掉。若是爲0,那就準備ip分片發送。接收方收到後重組(reassemble)後放到本身的接收緩衝區。

Ethernet II和802.3


區別以及如何經過13和14字節區分,參考車總這個回答

參考資料:

  1. 數據鏈路層--PPP協議
  2. 數據鏈路層的錯誤檢測等
  3. CSMA/CD
  4. ppp和以太網
相關文章
相關標籤/搜索