摘要:今天,我們來認識下物理層和層。這叫做隨機接入協議。著名的以太網,用的就是這種方式。對于以太網,第二層的最后面是,也就是循環冗余檢測。
????在上一篇博文中,我們見證了 IP 地址的誕生,機器一旦有了 IP,就可以在網絡的環境里和其他的機器展開溝通了。
????今天,我們來認識下 物理層 和 MAC 層。
????日常生活中,身為 90 后的我們,如果不是通信相關專業出身的,應該從來沒有接觸過物理層和 MAC 層的設備。我們接觸最多的,可能就是路由器了。而路由器實際上是第三層-網絡層的設備了。
????那咱們怎么認識物理層呢?就不扯那些深奧的理論了,從宿舍聯機打魔獸說起吧。
????要想宿舍里的幾臺電腦連接到一個局域網內,第一反應就是買個路由器,大家都連上去就 OK 了。但是在 15 年前,路由器還沒有那么普及的時候,你在校園里找個通信專業的學生問,知道怎么組建宿舍局域網嗎?他應該會回答你,有三種方式:
物理層網線連接
集線器連接
交換機
????上面三種方式中,網線連接和集線器是完全在物理層工作,咱們就先見識下這兩種方式。
????是的,你沒看錯,是用一根網線連接在兩個電腦上。網線水晶頭的第 1、2 和第 3、6腳,分別起著發、收信號的作用,要想通過一根網線將兩臺電腦連接在一個局域網上,需要額外做的操作就是將網線其中一端的 1 號和 3 號線、2 號和 6 號線互換一下位置,這樣就能在物理層實現一端發送的信號,另一端成功接收。
????當然,除了通過網線連接外,我們還需要配置這兩臺電腦的 IP 地址、子網掩碼和默認網關,將這三項配置成為一個網絡,否則是不通的。
????這樣,一個宿舍的兩臺電腦就可以聯機打魔獸了。
????問題來,如果又有一個舍友買了電腦,怎么把三臺電腦連一起呢?先別說交換機這高檔的東西,對于 15 年前的大學生來說,交換機太貴了,買不起。好在除了交換機外,還有個叫做 Hub 的東西,也就是集線器。
????這種設備有多個口,可以將宿舍里的多臺電腦連接起來。和交換機不同的是,集線器很“傻”,它沒有大腦,完全在物理層工作,將自己收到的每一個字節,都復制到其它端口上去。
????這就像,小明想找小紅表白,他不知道小紅在哪個小區,于是他就找其它小伙伴,讓每個小伙伴負責一個小區,去每一戶問是不是小紅家,找到小紅的小伙伴就將表白語告訴小紅。
數據鏈路層????上面通過 Hub 實現局域網的方式,你可能已經發現了,Hub 采取的是廣播的模式。如果每一臺電腦發出的包,局域網內的其它電腦都能收到,那就麻煩了。這就需要解決幾個問題:
這個包是發給誰的?誰接收?
大家都在發生消息,會不會產生混亂?有沒有先后的規則?
如果發生的時候出錯了,怎么辦?
????這幾個問題,都是數據鏈路層,也就是 MAC 層要解決的問題。MAC 的全稱是 Medium Access Control,即媒體介質訪問控制。這里的控制,其實就是控制在往媒體上發數據時,誰先發、誰后發的問題,也就是防止發生混亂。這就解決了第二個問題。這個問題中的規則,學名叫多路訪問。和我們交通管制一樣,常見的有下面三種方式:
方式一:分車道。每個車一個車道,你走你的,我走我的,互不干擾。這在計算機網絡中叫做信道劃分;
方式二:今天單號出現,明天雙號出現,輪著來。這叫做輪流協議;
方式三:不管三七二十一,有事先出門,發現很堵,就回去等待 ,錯過高峰期再走。這叫做隨機接入協議。著名的以太網,用的就是這種方式。
????解析要解決第一個問題:發給誰?誰接收?這里用到一個物理地址,叫做鏈路層地址。但是因為第二層主要解決媒體接入控制的問題,所以它常常被稱為 MAC 地址。
????解決第一個問題就牽扯到第二層的網絡包格式。對于以太網,第二層的最開始,就是目標的 MAC 地址和源的 MAC 地址。
????接下來是類型。大部分的類型是 IP 數據包,其中 IP 里面包含 TCP、UDP,以及 HTTP 等,這些都是里層封裝的事情。
????有了這個目標 MAC 地址,數據包在鏈路上廣播,MAC 的網卡才能發現,這個包是給它的。MAC 的網卡把包收進來,然后打開 IP 包,發現 IP 地址也是自己的,再打開 TCP 包,發現端口是 80,而 nginx 就是監聽 80 端口。
????于是就將請求提交給 nginx,nginx 返回一個網頁,最后再經過層層封裝,返回到 MAC 層。因為來的時候有源 MAC 地址,返回的時候,源 MAC 地址就變成了目標 MAC 地址,再返給請求的機器。
????對于以太網,第二層的最后面是 CRC,也就是循環冗余檢測。通過 XOR 異或的算法,來計算整個包是否在發送的過程中出現了錯誤,這主要解決了第三個問題。
????這里還有一個沒有解決的問題,當源機器知道目標機器的時候,可以將模板地址放入包里。如果不知道呢?一個廣播的網絡里面接入了 N 臺地址,我怎么知道每個 MAC 地址是誰呢?這就是 ARP 協議,也就是已知 IP 地址,求 MAC 地址的協議
????在一個局域網里,如果知道了 IP 地址,不知道 MAC 地址怎么辦?這個在網絡協議-概述中有提過,本地通信靠“吼”。
????發送一個廣播包,廣而告之,誰說這個 IP 誰來回答。具體詢問和回答的報文就像下面這樣:
????為了避免每次都用 ARP 協議,機器本地會進行 ARP 緩存。當然,緩存的 MAC 地址會有一個過期時間。
????上面解決了廣播發出的包,局域網內所有機器都能收到的問題。那么 Hub 是采用怎么樣的方式?
????實際上,Hub 不管某個接口是否需要,所有的數據都會發送出去,然后讓主機來判斷是否需要相關數據。這種方式會有兩個問題:
機器數目大幅增多后,產生沖突的概率就提高了。這很好理解,那么多小伙伴去找小紅,發生交通事故的概率要大于,直接去她家表白發生交通事故的概率;
把大量不需要發送的包發送出去,浪費資源。
????明顯可以看出,要解決上面兩個問題,只要我們知道哪個接口對應哪個 MAC 地址就好了。如果目標 MAC 地址不是這臺電腦的,這個口就不用轉發了。
????那么,誰能知道目標 MAC 地址是否就是連接某個口的電腦的 MAC 地址呢?這就需要一個能把 MAC 頭拿下來,檢查一下目標 MAC 地址,然后根據策略轉發的設備,也就是我們之前提過的,二層設備-交換機。
????交換機怎么知道每個口對應的電腦的 MAC 地址呢?這需要交換機能學習。這個也是交換機和 Hub 最明顯的區別。
????一臺 MAC1 電腦將一個包發送給另一臺 MAC2 電腦,當這個包到達交換機的時候,一開始交換機也不知道 MAC2 電腦再哪個口,所以沒辦法,它只能將包轉發給除了來的那個口之外的其他所有的口。但是,這個時候,交換機會干一件很聰明的事情,就是交換機記住,MAC1 是來自一個明確的口,以后有包的目的地址是 MAC1 的,就直接發送到對應口就可以了。
????當交換機作為一個關卡一樣,過來一段時間后,就有了整個網絡的一個結構了。這個時候,基本上不用廣播,全部可以準確轉發。而交換機學習的結果,我們成為轉發表。當然,每臺機器的 IP 地址會變,所在的口也會變,所以轉發表也是有一個過期時間的。
小結上面扯了一大堆,實際上也就是幾句話的事:
MAC 層是用來解決多路訪問的堵車問題的
ARP 是通過“吼”的方式來尋找目標 MAC 地址,之后會記住一段時間,這個叫做 ARP 緩存
交換機是升級版的 Hub,它有 MAC 地址學習能力,學完就能記住每個 MAC 地址對應哪個口,學習的成果叫轉發表
參考:
劉超-趣談網絡協議系列課;
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/44996.html
摘要:今天,我們來認識下物理層和層。這叫做隨機接入協議。著名的以太網,用的就是這種方式。對于以太網,第二層的最后面是,也就是循環冗余檢測。 ????在上一篇博文中,我們見證了 IP 地址的誕生,機器一旦有了 IP,就可以在網絡的環境里和其他的機器展開溝通了。 ????今天,我們來認識下 物理層 和 MAC 層。 ????日常生活中,身為 90 后的我們,如果不是通信相關專業出身的,應該從來沒...
摘要:應用層提供網絡與用戶應用軟件之間的接口。數據的表示安全壓縮會話層提供包括訪問驗證和會話管理在內的建立和維護應用之間的通信機制。定義傳輸數據的協議端口號流控和差錯校驗網絡層處理網絡間的路由,確保數及時傳送。 showImg(https://segmentfault.com/img/remote/1460000013372565); 為了實現計算機的通信,我們為計算機定義了一系列的通信規則...
摘要:構成數據鏈路數據單元數據幀或幀,并對幀定界同步收發順序的控制。以太網規定,一組電信號構成一個數據包,叫做幀。因此,整個幀最短為字節,最長為字節。協議規定網絡地址的協議,叫做協議。現在廣泛采用的是協議第四版,簡稱。 前言 勞于讀書,逸于作文。 原文地址:internet協議入門 博主博客地址:Damonare的個人博客 博主之前寫過一篇博客:網絡協議分析,在這篇博客里通過抓包,具體的分析...
閱讀 3234·2021-11-18 10:02
閱讀 1936·2021-09-22 10:54
閱讀 2989·2019-08-30 15:43
閱讀 2576·2019-08-30 13:22
閱讀 1575·2019-08-29 13:57
閱讀 1041·2019-08-29 13:27
閱讀 731·2019-08-26 14:05
閱讀 2512·2019-08-26 13:30