网络 链路层 | 以太网协议与ARP协议
數據鏈路層是計算機網絡的底層,主要負責相鄰設備之間的數據幀傳輸
鏈路層就是負責每一個相鄰結點之間的數據傳輸,但是相鄰設備之間也需要描述識別,主要是因為每一個設備都有可能有多個相鄰的設備。這種識別在鏈路層中是通過MAC地址來實現的
MAC地址:mac地址就是網卡的硬件地址,用于識別相鄰的設備,它是一個無符號6字節的整數 uint8_t mac[6]
以太網協議
以太網協議格式
目的地址和源地址:描述識別相鄰的設備之間的數據傳輸
上層協議類型:網絡層的協議類型,進行數據分用時選擇上層的解析協議
數據:網絡層的數據報文
CRC:數據幀尾,包含校驗和,校驗數據的一致性
如何獲取對端的mac地址
一個主機,第一次通過網線連接到路由器上,然后發送DHCP請求,路由器收到之后就會進行響應,給主機分配IP地址,但是此時是不知道對方的mac地址,那我們如何獲取呢?
ARP協議
ARP協議:ARP不是一個單純的數據鏈路層的協議, 而是一個介于數據鏈路層和網絡層之間的協議。主要功能是通過IP地址獲取mac地址
ARP協議格式:
以太網目的地址和以太網源地址:描述識別相鄰的設備之間的數據傳輸
上層協議類型:網絡層的協議類型,進行數據分用時選擇上層的解析協議
硬件類型:鏈路層網絡類型,1為以太網
協議類型:要轉換的地址類型,0x0800為IP地址
硬件地址長度:對于以太網地址為6字節
協議地址長度:對于和IP地址為4字節
op字段:1表示ARP請求,op字段為2表示ARP應答
arp協議如何通過IP地址獲取MAC地址
封裝arp請求,然后將arp請求廣播到整個局域網(私網)中,(以太網頭中設置的對端mac地址為FFFFFFFFFFFF,在arp請求中描述自己的mac地址和ip地址,以及對端的IP地址和對端的mac地址空白),相鄰設備收到arp請求之后,檢測目的IP地址是否與自己相符,若相符則組織arp響應,填充自己的mac地址回復過去,若不符合則直接丟棄。
主機獲取相鄰設備mac地址之后,會緩存一段時間(默認為20 ~30分鐘)
arp局域網欺騙攻擊:惡意主機收到arp廣播請求,偽裝自己,告訴主機自己就是目標主機,將自己的mac地址發送過去。解決方案:防火墻白名單,直接列出受信任的相鄰主機,如果發送過來的mac地址不在白名單上,則直接丟棄
MTU
MTU:MTU為最大傳輸單元,是鏈路層限制的數據幀大小(根據組網方式不同,默認數值也不同,以太網默認為1500B)
mtu對上層協議應用的影響
tcp協議:tcp在傳輸層進行三次握手時,進行MSS協商,也就是最大數據段大小協商,告訴對方自己的mss是多少,然后通信時取較小的一方作為最大傳輸數據段大小,每次從緩沖區中取出不大于mss大小數據進行傳輸。因此通常也說tco在傳輸層會自動進行數據分段。MSS = MTU - 最小IP報頭長度 - 最小TCP報頭長度;
udp協議:因為udp不考慮mss,只要數據段大小小于64k-28,就可以進行傳輸,但是這個數據大小若是大于mtu,則會在網絡層進行數據分片
udp不保證數據可靠傳輸,一個udp報文若在網絡層進行了分片,則傳輸過程中,一個分片出問題,整個udp報文都會被丟棄;也就意味著udp傳輸過程中,分片越多,在傳輸過程中出現問題的幾率就越大
解決方案:程序員在應用層使用udp協議時最好考慮mss問題,將udp數據段按照計算的mss進行分包處理
總結
以上是生活随笔為你收集整理的网络 链路层 | 以太网协议与ARP协议的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “二选一”是支付宝首创,背后是帝国的霸权
- 下一篇: 流量累计程序 博途v15编写的西门子流量