數據鏈路層
是OSI參考模型中的第二層,介乎於物理層和網絡層
之間。
數據鏈路層在物理層提供的服務的基礎上向網絡層提供服務,其最基本的服務是將源自網絡層來的數據可靠地傳輸到相鄰節點的目標機網絡層。
以太網幀
在以太網鏈路上的數據包稱作以太幀
。
以太幀起始部分由前導碼和幀開始符組成。後面緊跟着一個以太網報頭,以MAC地址說明目的地址和源地址。幀的中部是該幀負載的包含其他協議報頭的數據包(例如IP協議)。以太幀由一個32位冗餘校驗碼結尾。它用於檢驗數據傳輸是否出現損壞。
- 協議格式
目的MAC地址(6字節)+ 源MAC地址(6字節)+ 類型(2字節) + 數據 + CRC校驗
- 類型:標識着網絡層中所使用的協議
- 數據:有效載荷
- CRC校驗:檢測數據鏈路層中的數據幀是否出錯
ARP 協議
他的用途就是,可以通過ip地址獲取相鄰設備的MAC地址,他只在子網的內部有效
協議的格式
ARP協議格式 = 以太網首部
+ 28字節ARP請求或者應答首部
以太網首部:
- 6字節
以太網目的地址
:ARP請求的目的MAC地址。如果全爲1,則表示爲廣播地址 - 6字節
以太網源地址
:ARP請求的主機的MAC地址 - 2字節
幀類型
:以太網數據幀類型,表名了上層使用的什麼協議。(ARP協議是介於網絡層 和 數據鏈路層之間的協議)
IP 協議: 0x0800
ARP 請求或者應答: 0x0806
28字節ARP請求或者應答
- 2字節
硬件地址類型
:表示ARP網絡的類型。以太網類型等等 - 2字節
協議類型
:表示使用什麼協議。ip地址轉換MAC地址 - 1字節
硬件地址長度
:MAC地址的長度 - 1字節
協議地址長度
:ip地址長度 op
:標識ARP請求和ARP應答。
1 --> 請求
2 --> 應答
- 6字節
發送端以太網地址
:發送ARP請求或者應答主機的MAC地址 - 4字節
發送端ip地址
:發送ARP請求或者應答主機的ip地址 - 6字節
目的以太網地址
:表示接收方設備的硬件地址,在請求報文中該字段值全爲0,即00-00-00-00-00-00,表示任意地址,因爲現在不知道這個MAC地址。
ARP 請求 : 0x0000 0000 0000
ARP 應答 : 所填充的內容是ARP請求中的 源MAC地址
- 4字節
目的ip地址
:目標主機的ip地址
使用arping 命令發送數據
arping -I [網卡類型,ens32,ens33] -c 2 192.168.75.128
進行抓包分析
sudo tcpdump -i any -s 0 -w 1.dat
ARP 緩存表
- 每臺機器會定時獲取相鄰設備的
MAC地址
,時間爲20Min
,20min
也是ARP緩存老化的時間 - 如果數據在數據鏈路層沒有在緩存表中發現相鄰設備的
MAC地址
時,則發送ARP請求
獲取;
否則就會直接從緩存表中獲取,組織數據鏈路層的以太網數據幀
ARP 請求是廣播發送,如果目標主機收到則進行處理;不是目標主機收到就會丟棄
NAT協議
當我們需要用虛擬機訪問外網時,首先得讓虛擬機處於NAT模式
,因爲橋接模式下我們的虛擬機是沒有自己的ip地址的,使用NAT模式和主機共享一個私網ip地址。
NAT協議是一個地址轉換協議
- 請求:將網絡數據中的私網的源ip地址(私網ip)轉換爲 公網的ip地址
- 應答:將網絡數據中的目的ip地址(公網ip)轉換爲 私網ip
NAT 模式的特點:
- 網絡被劃分爲私網和公網,NAT網關設置在私網到公網的路由出口位置,雙方的流量都是需要經過NAT網關的
- 網絡通信只能存私網訪問公網,公網是不能直接訪問私網主機
- NAT網關對於請求而言,是替換源ip地址;對於應答而言,是替換目的ip地址
- NAT網關對於雙方都是透明的,雙方在網絡傳輸的過程中是無感知的。(雙方通信都是直接到位,感覺不到NAT的存在)
- NAT網關爲了實現雙向翻譯功能,需要在NAT服務器中維護一張映射表,把對應ip替換的信息記錄下來
靜態NAT
在NAT網絡轉換的時候,私網ip唯一對應一個公網ip,兩者是1對1的關係
一般用於想要隱藏自己的ip地址
動態NAT
動態NAT,在私網到公網進行映射的時候,不是給一個私網ip唯一映射一個公網ip,而是進行動態分配
NAT網關中維護的映射表中的ip地址之間是動態變化的,但是表的內部還是一個私網ip對應一個公網ip。
這對於ipv4地址枯竭的問題沒有有效的解決
NAPT(NAT重載)
NAPT,當一個私網ip地址經過NAT網關後,在網關中映射的時候,給私網ip地址 加了一個端口號,這樣就可以區分不同的私網ip地址了
再使用這個公網ip + 端口號,去訪問對應的公網ip地址
這樣使得,NAT網關中可以轉換 2^16 個私網ip地址去訪問公網
NAPT
- 私網和NAT中可以是多對一的關係,通過不同的端口進行標識
- NAPT中的公網ip,最多可以映射2^16個端口
- NAPT是一個動態NAT,可以維護多個公網ip
- NAPT很好的解決了ip地址不夠用的問題
DNS協議
DNS協議,也就是域名解析協議
域名就相當於我們的ip地址,當我們使用baidu.com
去訪問百度的時候可以訪問的。同時,如果我們使用百度的ip地址去訪問百度界面,也是可以的。
但是ip地址不容易進行記憶,所以說就有了用域名來表示ip地址
- 域名:域名就是由
.
進行分割的字符串的集合,所分割的字符串都是有着特殊的意義。比如:baidu.com,taobao.com
.com --》 商業公司
.cn --》 中國
.us --》 美國
.edu --》 教育
.gov --》 政府
-
作用:將域名轉化爲ip地址
-
域名服務器(DNS服務器):保存了域名和ip的對應關係,用來處理DNS請求,將域名對應的ip地址應答給請求的瀏覽器。
一般使用UDP協議來處理這樣的請求,使用TCP協議的話在不停的連接過程中,時間上很浪費,還不安全 -
域名服務器是一種層級管理的方式,不同的域名服務器所管理的域名都是不同的
- 域名解析流程
遞歸查詢
遞歸查詢,就是一級一級的向下查找,直到找到需要的數據纔會返回,或者全部找完了沒有找到也會返回。
迭代查詢
迭代查詢的都是從本地DNS服務器開始,依次查詢其他域名服務器,只要沒有找到數據,就返回信息給本地DNS服務器,然後本地DNS服務器再查找下一個級別的服務器