數據鏈路層

數據鏈路層和網絡層的對比

? ? ? ? 如果說網絡層實現的是路由的功能,那么數據鏈路層就是實打實的實現具體的傳輸

? ? ? ? 就像導航,網絡層告訴我們下一步該去哪個主機,而數據鏈路層則是實現去下一個主機的方法。

? ? ? ? 網絡層的IP地址告訴我們目的地在哪里,而數據鏈路層則告訴我們下一步去哪里。

? ? ? ? 而想了解數據鏈路層是如何做到的,就必須了解數據鏈路的以太網協議。

以太網

? ? ? ? 以太網是一種技術標準,涵蓋了數據鏈路層的內容,也包括物理層的內容。

? ? ? ? 但是數據鏈路層并非只有以太網,還有令牌環網和無線LAN等,不過這里就了解以太網。

以太網協議格式

????????

  • 以太網中的目的地址實際上是指目的主機的MAC地址
  • MAC地址:用來識別數據鏈路層中相連的節點,長度為 48 位,及6個字節,一般用 16 進制數字加冒號的形式,一般在網卡出廠的時候就確定了,具有唯一性
  • 類型分為 IP,ARP,RARP三種
  • 幀末尾是CRC校驗碼

碰撞

? ? ? ? 一般來說,一個局域網內在同一時間只能有一個主機在局域網內部發數據,不能同時出現多臺主機發消息,因為數據之間會發生碰撞。

? ? ? ? 我們可以將局域網看成是一個臨界資源,同一時間只能有一臺主機訪問。

? ? ? ? 正是因為有碰撞的風險,因此局域網不可太大,同時主機也不能過多,會增加碰撞概率。

? ? ? ? 局域網同時有多個節點相連,其中這些節點的集合就是碰撞域和廣播域

? ? ? ? 一個局域網之間的節點發消息會有碰撞的風險,而為了避免碰撞,大佬們提出了各種各樣的方法,比如交換機,在一個局域網內控制碰撞的數據不傳播給局域網內的其他節點。

碰撞域:連接在同一導線上的所有工作站的集合,或者說是同一物理網段上所有節點的集合或以太網上競爭同一帶寬的節點集合。

廣播域:接收同樣廣播消息的節點的集合。? ? ? ?

? ? ? ? 而為了防止碰撞的發送,以太網協議也有自己的辦法,那就是MTU。?

認識MTU

? ? ? ? MTU是針對不同數據鏈路層對應的物理層而提出的限制。

  • 以太網中的數據長度規定最小46字節,最大1500字節,不夠46字節的要填充,超過1500字節的則分片
  • 最大值為1500稱為以太網的最大傳輸單元,不同網絡類型有不同的MTU
  • 一個數據包從以太網到撥號鏈路上,長度大于撥號鏈路的MTU則需要分片
  • 不同的數據鏈路層的標準MTU不同

? ? ? ? 至于分片和組裝的過程則由網絡層自己分片組裝。

MSS

? ? ? ? MSS是TCP協議的概念,標識TCP能夠承載的最大的應用數據段長度,一般為 MTU-20字節TCP報頭-20字節IP報頭,以太網下為1460字節。

MTU對UDP的影響

? ? ? ? UDP報頭時間8字節,IP報頭是20字節,那么由于MTU的原因,UDP能攜帶的數據不能超過1472字節,否則就需要分片。

? ? ? ? 而UDP又是不可靠的協議,若是一個數據報分片了,那么它在網絡中丟包的概率就更大了。

MTU對TCP的影響

? ? ? ? 一個TCP的數據報的長度也不是無限大的,限制于MTU,其中TCP協議單個數據報的最大長度稱為MTU。

? ? ? ? TCP是面向連接的,在連接過程中,雙方會進行MSS協商。

? ? ? ? 最好情況下,MSS的值是正好在IP協議都不會被分片的大小,不過任然受制于數據鏈路層的MTU。

? ? ? ? 當雙方進行連接確認時,會在發送SYN的同時發送自己的MSS值,然后取小值作為最終的MSS值。

? ? ? ? 這個MSS值就藏在TCP首部的40字節變長選項中(kind = 2)。

? ? ? ? 這個MTU我們可以通過ifconfig命令來查看,IP地址和MAC地址也可以通過這個命令查看。

ARP協議

? ? ? ? 在數據鏈路層通過以太網協議發送數據之前,有一個問題需要解決。

? ? ? ? 那就是一般我們通過IP地址找到了對應的局域網,但是我們卻不知道該主機的硬件地址,也就是MAC地址。

? ? ? ? 因為IP地址和MAC地址并非一對一的,IP地址是能夠改變的,因此我們想要兩臺主機進行通信,僅知道一個IP地址是無法成功通信的,還必須知道對應的MAC地址。

? ? ? ? 而ARP協議就是用來解決這個問題的。

????????

  • ?當一個局域網內有一臺主機需要跟局域網內的另一臺主機通信時,它會先發送一個ARP請求包,并廣播到局域網內的所有主機上。
  • 當對應主機收到后檢查IP地址,發現這個請求是給自己的,它就通過請求上的地址返回一個ARP響應包,并告訴對方自己的MAC地址。
  • 發送端收到響應后,就會將對方的IP地址和MAC地址維護在一個ARP緩存表中,形成一對一的映射關系,這個表的生命周期是20分鐘,若20分鐘內沒使用某一項,該項目就會失效,需要重新請求。
  • 正是由于主機的IP地址是會變化的,所以這個ARP緩存表有生命周期,而非永久存在。
  • ARP緩存表可以通過 arp -a 命令查看。

ARP協議格式

  • 這里的目的地址和源地址在首尾各出現了一次,在以太網協議里來說是多余的,但是其他協議需要
  • 硬件類型是固定的字段,硬件類型為1
  • 協議類型一般也是固定字段,表明需要通過IP協議來獲得MAC地址,此處填 0x0800。
  • 硬件地址長度填6字節。
  • 協議地址長度對于IP為4字節
  • op為 1 表示請求, 2 表示應答。

ARP廣播過程

? ? ? ??當一個ARP請求廣播在局域網內時,它會將目的地址全部填 0x FFFFFF 的字段,并且op填1,其它選項正常填寫。

? ? ? ? 當局域網內其它主機接收到廣播后,先看以太網首部報頭,發現目的地址是 0xFFFFFF,就知道這是一個廣播,然后根據ARP請求的op,發現是請求后,再看目的 IP 地址若是自己,則自己返回應答,否則丟棄。

? ? ? ? 當對應主機收到請求后,就返回一個ARP應答,填好 目的地址和其他選項,然后再 填 op 為2 ,表示是響應。

? ? ? ? 之后廣播到局域網內,其他主機收到廣播后會發現目的地址不是自己,就會丟棄報文,而對應的主機則會收到報文,并且發現這是一個ARP應答,就會將 IP 地址 和 MAC 地址維護在自己的ARP緩存表。

DNS

? ? ? ? DNS 是一整套從域名映射到IP的系統。

????????雖然IP對于機器來說,很好用,但是對應人來說,復雜而難記,因此出現了DNS系統。

? ? ? ? 最開始的時候,人們通過hosts文件來描述主機名和IP地址的關系,由互聯網信息中心來管理這個hosts文件,但是這個十分麻煩。

? ? ? ? 每次計算機要接入網絡或者計算機IP變更,都需要去信息中心申請變更hosts文件,而其他主機也要定期下載更新新版本的hosts文件才能正確上網。

? ? ? ? 于是就產生了DNS系統。

  • DNS系統是一個組織的系統管理機構,維護系統內每一個主機的IP和主機名的對應關系
  • 若新的計算機接入網絡,會將這個信息接入到數據庫中
  • 用戶輸入域名時會自動查詢DNS服務器,來檢索對應域名,找到對應的IP地址

? ? ? ? 我們可以通過 cat /etc/hosts 命令來查看hosts文件,域名解析的時候會優先查找hosts的內容。

域名的格式

? ? ? ? 我們以百度的域名來理解域名格式。

????????????????????????????????????????????????www.baidu.com

  • com:一級域名,表示這是一個企業域名,同級的還有 "net"(網絡提供商),"org"(非盈利組織),"edu"(教育機構)等。
  • baidu:二級域名,公司的名稱
  • www:一種習慣用法。

? ? ? ? 我們可以下載 dig 工具,來查看域名解析過程。

? ? ? ? 先使用 "yum install bind-utils"命令來安裝工具。?

? ? ? ? 就能夠查看了。

  • 開頭是dig指令的版本號
  • 第二部分表示服務器返回的詳情,status:NOERROR 表示查詢成功
  • QUESTION SECTION 表明查詢的是什么域名
  • ANSWER SECTION 表示查詢的結果,這里先將 www.baidu.com 表示成 www.a.shifen.com,然后再查詢了兩個ip地址
  • 最下面是一個結果統計,包含查詢時間和DNS服務器的地址等?

ICMP協議

? ? ? ? 這是一個網絡層的協議,用來測試網絡是否通暢,若丟包了還會通知傳輸層丟包原因。

? ? ? ? ICMP主要功能包括

  1. 確認IP包是否成功發送給對方
  2. 通知發送過程中,IP包被丟棄的原因
  3. ICMP基于IP協議工作,但是它是網絡層的協議
  4. ICMP搭配?IPv4 工作,ICMPv6 搭配 IPv6工作

ICMP報文

????????

  • ICMP報文分為通知出錯原因和用于診斷查詢兩類

其中,ICMP類型分為這么幾類。

?ping命令

? ? ? ? 可以用來驗證網絡的連通性,還會統計響應時間和IP包的 TTL(生存周期)。

? ? ? ? ping命令就是通過發送 ICMP Echo Request 給對端,然后接收對方的 ICMP Echo Reply來工作的。

? ? ? ? 不過有一點需要注意的是,ping的是域名而非url。

? ? ? ? 而且ping命令是基于ICMP,是在網絡層的,沒有端口。????????

traceroute命令

? ? ? ? 該命令基于ICMP協議實現,可以打印出去到目標主機之前要經歷的路由器。?

總結

? ? ? ? 本篇博客講述了以太網如何實現同一個局域網內的主機互相通信的原理,并且了解了為什么IP層需要進行分片。

? ? ? ? 然后還知道主機之間通信必須要先通過ARP協議來保存IP地址對應MAC地址的映射關系。

? ? ? ? 還了解了DNS和ICMP兩個小玩意。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/41172.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/41172.shtml
英文地址,請注明出處:http://en.pswp.cn/news/41172.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring 框架入門介紹及IoC的三種注入方式

目錄 一、Spring 簡介 1. 簡介 2. spring 的核心模塊 ? 二、IoC 的概念 2.1 IoC 詳解 2.2 IoC的好處 2.3 談談你對IoC的理解 三、IoC的三種注入方式 3.1 構造方法注入 3.2 setter方法注入 3.3 接口注入(自動分配) 3.4 spring上下文與tomcat整…

MySQL--存儲過程--詳解/示例

MySQL中的存儲過程詳解 在MySQL數據庫中,存儲過程是一種預先編譯好的SQL代碼塊,可以被重復調用。它們允許我們將常用的操作邏輯封裝起來,并簡化數據庫交互。本文將介紹MySQL存儲過程的基本語法和使用示例。 創建存儲過程 使用CREATE PROCE…

前端JavaScript企業框架的全面解析

引言 在現代Web開發中,前端JavaScript框架扮演著至關重要的角色。它們提供了豐富的功能和工具,幫助開發人員構建功能強大且易于維護的企業級應用程序。本篇博客將全面解析前端JavaScript企業框架,介紹其優勢、使用場景和常見的框架選擇。 什…

第三屆OceanBase數據庫大賽啟動,升級為國家級競賽

近日,第三屆OceanBase數據庫大賽啟動報名。本屆大賽進一步升級為全國大學生計算機系統能力大賽,由系統能力培養研究專家組發起,全國高等學校計算機教育研究會、系統能力培養研究項目發起高校主辦,OceanBase承辦,旨在培…

【Linux】Linux工具篇(yum、vim、gcc/g++、gdb、Makefile、git)

🚀 作者簡介:一名在后端領域學習,并渴望能夠學有所成的追夢人。 🚁 個人主頁:不 良 🔥 系列專欄:🛹Linux 🛸C 📕 學習格言:博觀而約取&#xff…

nvm命令

1. 常見命令 1. nvm -v //查看nvm版本 nvm --version :顯示 nvm 版本 2. nvm list //顯示版本列表 nvm list :顯示已安裝的版本(同 nvm list installednvm list installed:顯示已安裝的版本nvm list available:顯示所有…

【java】常用工具——包裝類

1. Java中的數據類型 #mermaid-svg-8QZByhDXxJpYzQ8U {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-8QZByhDXxJpYzQ8U .error-icon{fill:#552222;}#mermaid-svg-8QZByhDXxJpYzQ8U .error-text{fill:#552222;stroke…

圖數據庫_Neo4j學習cypher語言_使用CQL_構建明星關系圖譜_導入明星數據_導入明星關系數據_創建明星關系---Neo4j圖數據庫工作筆記0009

首先找到明星數據 可以看到有一個sheet1,是,記錄了所有的關系的數據 然后比如我們搜索一個撒貝寧,可以看到撒貝寧的數據 然后這個是構建的CQL語句 首先我們先去啟動服務 neo4j console 然后我們再來看一下以前導入的,可以看到導入很簡單, 就是上面有CQL 看一下節點的屬性

【HarmonyOS】鴻蒙應用獲取華為帳號手機號碼步驟(API7及以下)

【寫在前面】 本文主要介紹使用API7及以下版本開發HarmonyOS應用時,通過華為帳號SDK和云側接口獲取手機號碼的主要開發步驟,注意:開發過程中集成的華為帳號SDK僅支持API7及以下版本的HarmonyOS應用。 【前提準備】 1、HarmonyOS應用已申請獲…

搭載KaihongOS的工業平板、機器人、無人機等產品通過3.2版本兼容性測評,持續繁榮OpenHarmony生態

近日,搭載深圳開鴻數字產業發展有限公司(簡稱“深開鴻”)KaihongOS軟件發行版的工業平板、機器人、無人機等商用產品均通過OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)3.2 Release版本兼容性測評,獲頒O…

centos7安裝 postgresql postgis pgrouting

centos7 源碼編譯太煩了。直接yum install ...... 一、版本信息: CentOS版本:CentOS Linux release 7.9.2009 (Core) PostgreSQL版本: PostgreSQL 12.0 PostGIS版本:postgis31 二、PostgresSQL PostGIS 安裝 1、官網安裝鏈接&…

ue5讀取外部文件

準備環境 我的環境是win10,ue5.1.1,cpux86。 創建工程時,需要選擇C模式 這樣在Content Browser中會出現C Classes文件夾,下面有一個本項目命名的文件夾,鼠標右鍵可以看到New C Class選項。 新建類的時候選擇父類Blue…

JAVA Bean 對象的作用域和生命周期

Bean 作用域和生命周期 1. 作用域1.1 作用域定義1.2 Bean 的 6 種作?域1.2.1 singleton(單例作?域)1.2.2 prototype (原型作?域 / 多例作?域)1.2.3 request:(請求作?域)1.2.4 session:(會話作?域)1.2.5 application:(全局作?域)1.2.6 …

【Redis】Redis 的學習教程(五)之 SpringBoot 集成 Redis

在前幾篇文章中,我們詳細介紹了 Redis 的一些功能特性以及主流的 java 客戶端 api 使用方法。 在當前流行的微服務以及分布式集群環境下,Redis 的使用場景可以說非常的廣泛,能解決集群環境下系統中遇到的不少技術問題,在此列舉幾…

Vector

歡迎來到Cefler的博客😁 🕌博客主頁:那個傳說中的man的主頁 🏠個人專欄:題目解析 🌎推薦文章:題目大解析2 目錄 👉🏻vector概念👉🏻vector constr…

Node + Express 后臺開發 —— 起步

Node Express 后臺開發 —— 起步 前面陸續學習了一下 node、npm、模塊,也稍嘗試 Express,感覺得換一個思路加快進行。 比如筆者對前端的開發已較熟悉,如果領導給一個內部小網站的需求,難道說你得給我配置一個后端?…

selenium 選定ul-li下拉選項中某個指定選項

場景:selenium的下拉選項是ul-li模式,選定某個指定的選項。 from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 顯示等待def select_li(self, text, *ul_locator):"…

六圖備份 大容量圖片

1.1、切割(9*16) # 參考網址:https://blog.csdn.net/weixin_42182534/article/details/125773141?ops_request_misc&request_id&biz_id102&utm_termpython%E6%88%AA%E5%8F%96%E5%9B%BE%E7%89%87%E7%9A%84%E4%B8%80%E9%83%A8%E5%…

為什么在Spring中使用@Autowired時會提示Field injection is not recommended 而@Resource不會

在使用IDEA進行開發時,在字段上使用Spring的依賴注入注解Autowired后會出現如下警告 Field injection is not recommended (字段注入是不被推薦的) 這個原因具體可以看看: 【注解使用】使用Autowired后提示:Field injection is not recomme…

【抖音小玩法-彈幕游戲】開發者功能測試報告提交模板

背景 字節有明確的要求,準入和準出更加嚴格,要求有明確的測試報告。格式如下: *本文參考字節wiki:開發者功能測試報告提交模板 網絡兼容性 請確認在以下網絡類型驗證過插件功能 WIFI 4G 測試機型 請羅列驗證過的雙端機型 An…