04 從物理層到MAC層以及ARP

目錄:

http://www.reibang.com/p/1961df2a1336

第一層(物理層)

我們常說的路由器匿刮,是在第三層上刃鳄。

網(wǎng)線有的是電腦連電腦苗桂,有的是電腦連網(wǎng)口防楷。

對于電腦連電腦校赤。這種方式就是一根網(wǎng)線灶挟,有兩個頭琉朽。一頭插在一臺電腦的網(wǎng)卡上,另一頭插在另一臺電腦的網(wǎng)卡上稚铣。水晶頭要做交叉線箱叁,用的就是1-3、2-6 交叉接法惕医。

水晶頭的第 1耕漱、2 和第 3、6 腳抬伺,它們分別起著收螟够、發(fā)信號的作用。將一端的 1 號和 3 號線峡钓、2 號和 6 號線互換一下位置妓笙,就能夠在物理層實現(xiàn)一端發(fā)送的信號,另一端能收到能岩。

電腦連電腦寞宫,除了網(wǎng)線要交叉,還需要配置這兩臺電腦的 IP 地址拉鹃、子網(wǎng)掩碼和默認網(wǎng)關(guān)辈赋。要想兩臺電腦能夠通信鲫忍,這三項必須配置成為一個網(wǎng)絡(luò),可以一個是 192.168.0.1/24钥屈,另一個是 192.168.0.2/24悟民,否則是不通的。

兩臺電腦之間的網(wǎng)絡(luò)包篷就,包含 MAC 層射亏,要完整。IP 層要封裝了 MAC 層才能將包放入物理層竭业。

到此為止鸦泳,兩臺電腦已經(jīng)構(gòu)成了一個最小的局域網(wǎng),也即LAN永品。

怎么把三臺電腦連在一起呢做鹰?

使用集線器(Hub)。這種設(shè)備有多個口鼎姐,可以將多臺電腦連接起來钾麸。但是,和交換機不同炕桨,集線器沒有大腦饭尝,它完全在物理層工作。它會將自己收到的每一個字節(jié)献宫,都復(fù)制到其他端口上去钥平。這是第一層物理層聯(lián)通的方案。

第二層(數(shù)據(jù)鏈路層)

Hub 采取的是廣播的模式姊途,如果每一臺電腦發(fā)出的包涉瘾,每個電腦都能收到,這樣就會很麻煩捷兰。需要解決幾個問題:

  • 這個包是發(fā)給誰的立叛?誰應(yīng)該接收?
  • 大家都在發(fā)贡茅,會不會產(chǎn)生混亂秘蛇?有沒有誰先發(fā)、誰后發(fā)的規(guī)則顶考?
  • 如果發(fā)送的時候出現(xiàn)了錯誤赁还,怎么辦?

解決的是上面第二個問題

這幾個問題驹沿,都是第二層艘策,數(shù)據(jù)鏈路層,也即 MAC 層要解決的問題甚负。MAC的全稱是Medium Access Control柬焕,即媒體訪問控制。就是控制在往媒體上發(fā)數(shù)據(jù)的時候梭域,誰先發(fā)斑举、誰后發(fā)的問題。防止發(fā)生混亂病涨。這解決的是上面第二個問題富玷。這個問題中的規(guī)則,學名叫多路訪問既穆。有很多算法可以解決這個問題赎懦。比如接下來這三種方式:

  • 方式一:分多個車道。每個車一個車道幻工,你走你的励两,我走我的。這在計算機網(wǎng)絡(luò)里叫作信道劃分囊颅;

  • 方式二:今天單號出行当悔,明天雙號出行,輪著來踢代。這在計算機網(wǎng)絡(luò)里叫作輪流協(xié)議盲憎;

  • 方式三:不管三七二十一,有事兒先出門胳挎,發(fā)現(xiàn)特堵饼疙,就回去。錯過高峰再出慕爬。叫作隨機接入?yún)f(xié)議窑眯。著名的以太網(wǎng),用的就是這個方式医窿。

解決的是上面第一個問題

這里用到一個物理地址伸但,叫作鏈路層地址。但是因為第二層主要解決媒體接入控制的問題留搔,所以它常被稱為MAC 地址更胖。

解決這個問題就牽扯到第二層的網(wǎng)絡(luò)包格式。對于以太網(wǎng)隔显,第二層的最開始却妨,就是目標的 MAC 地址和源的 MAC 地址。

第二層網(wǎng)絡(luò)包格式.png

接下來是類型括眠,大部分的類型是 IP 數(shù)據(jù)包彪标,然后 IP 里面包含 TCP、UDP掷豺,以及 HTTP 等捞烟,這都是里層封裝的事情薄声。


有了目標 MAC 地址,數(shù)據(jù)包在鏈路上廣播题画,MAC 的網(wǎng)卡才能發(fā)現(xiàn)默辨,這個包是給它的。MAC 的網(wǎng)卡把包收進來苍息,然后打開 IP 包缩幸,發(fā)現(xiàn) IP 地址也是自己的,再打開 TCP 包竞思,發(fā)現(xiàn)端口是自己表谊,也就是 80,而 nginx 就是監(jiān)聽 80盖喷。于是將請求提交給 nginx爆办,nginx 返回一個網(wǎng)頁。然后將網(wǎng)頁需要發(fā)回請求的機器课梳。然后層層封裝押逼,最后到 MAC 層。因為來的時候有源 MAC 地址惦界,返回的時候挑格,源 MAC 就變成了目標 MAC,再返給請求的機器沾歪。

解決的是上面第三個問題
第二層的最后面是CRC漂彤,也就是循環(huán)冗余檢測。通過 XOR 異或的算法灾搏,來計算整個包是否在發(fā)送的過程中出現(xiàn)了錯誤挫望,主要解決發(fā)送錯誤的問題。

ARP 協(xié)議

一個廣播的網(wǎng)絡(luò)里面接入了 N 臺機器狂窑, 我怎么知道每個 MAC 地址是誰呢媳板?這就是ARP 協(xié)議, 也就是已知 IP 地址泉哈, 求 MAC 地址的協(xié)議蛉幸。

ARP 協(xié)議.png

在一個局域網(wǎng)里面,當知道了 IP 地址丛晦,不知道 MAC 怎么辦呢奕纫?靠“吼”。 DHCP也是靠“吼”烫沙,新接入一個網(wǎng)絡(luò)的機器獲取分配的IP地址匹层。

ARP 協(xié)議流程.png

發(fā)送一個廣播包,誰是這個 IP 誰來回答锌蓄。具體詢問和回答的報文如下:

ARP 報文.png

為了避免每次都用 ARP 請求升筏,機器本地也會進行 ARP 緩存撑柔。由于機器存在不斷上線下線,IP 也可能會變您访,所以 ARP 的 MAC 地址緩存過一段時間就會過期铅忿。

交換機

這種使用HUB組網(wǎng)的方法,對少數(shù)電腦沒有問題洋只,但是一旦機器數(shù)目增多,問題就出現(xiàn)了昼捍。Hub 是廣播的识虚,不管某個接口是否需要,所有的 Bit 都會被發(fā)送出去妒茬,然后讓主機來判斷是不是需要担锤。這種方式路上的車少就沒問題,車一多乍钻,產(chǎn)生沖突的概率就提高了肛循。而且把不需要的包轉(zhuǎn)發(fā)過去,純屬浪費银择。

二層設(shè)備交換機可以很好地解決這個問題多糠,會把 MAC頭拿下來, 檢查一下目標 MAC 地址浩考, 然后根據(jù)策略轉(zhuǎn)發(fā)夹孔,而不是傻傻地都轉(zhuǎn)發(fā)。

交換機通過學習析孽,知道每個口的電腦的 MAC 地址搭伤。

交換機學習過程

一臺 MAC1 電腦將一個包發(fā)送給另一臺 MAC2 電腦,當這個包到達交換機的時候袜瞬,一開始交換機也不知道 MAC2 的電腦在哪個口怜俐,所以沒辦法,它只能將包轉(zhuǎn)發(fā)給出了來的那個口之外的其他所有的口邓尤。但是拍鲤,這個時候,交換機會記住汞扎,MAC1 是來自一個明確的口殿漠。以后有包的目的地址是 MAC1 的,直接發(fā)送到這個口就可以了佩捞。

轉(zhuǎn)發(fā)表

過了一段時間之后绞幌,就有了整個網(wǎng)絡(luò)的一個結(jié)構(gòu)了,這個時候一忱,基本上不用廣播了莲蜘,全部可以準確轉(zhuǎn)發(fā)谭确。由于每個機器的 IP 地址會變,所在的口也會變票渠,因而交換機上的學習的結(jié)果(轉(zhuǎn)發(fā)表)逐哈,是有一個過期時間的。

小結(jié)

第一·问顷, MAC 層是用來解決多路訪問的堵車問題的昂秃;
第二·, ARP 是通過吼的方式來尋找目標 MAC 地址的杜窄, 吼完之后記住一段時間肠骆, 這個叫作緩存;
第三塞耕, 交換機是有 MAC 地址學習能力的蚀腿, 學完了它就知道誰在哪兒了, 不用廣播了扫外。

參考資料:

趣談網(wǎng)絡(luò)協(xié)議(極客時間)鏈接:
http://gk.link/a/106nW


GitHub鏈接:
https://github.com/lichangke/LeetCode

知乎個人首頁:
https://www.zhihu.com/people/lichangke/

簡書個人首頁:
http://www.reibang.com/u/3e95c7555dc7

歡迎大家來一起交流學習

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末莉钙,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子筛谚,更是在濱河造成了極大的恐慌磁玉,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件驾讲,死亡現(xiàn)場離奇詭異蜀涨,居然都是意外死亡,警方通過查閱死者的電腦和手機蝎毡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門厚柳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人沐兵,你說我怎么就攤上這事别垮。” “怎么了扎谎?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵碳想,是天一觀的道長。 經(jīng)常有香客問我毁靶,道長胧奔,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任预吆,我火速辦了婚禮龙填,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己岩遗,他們只是感情好扇商,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著宿礁,像睡著了一般案铺。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上梆靖,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天控汉,我揣著相機與錄音,去河邊找鬼返吻。 笑死姑子,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的思喊。 我是一名探鬼主播壁酬,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼次酌,長吁一口氣:“原來是場噩夢啊……” “哼恨课!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起岳服,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤剂公,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后吊宋,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體纲辽,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年璃搜,在試婚紗的時候發(fā)現(xiàn)自己被綠了拖吼。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡这吻,死狀恐怖吊档,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情唾糯,我是刑警寧澤怠硼,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站移怯,受9級特大地震影響香璃,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜舟误,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一葡秒、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦同云、人聲如沸糖权。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽星澳。三九已至,卻和暖如春旱易,著一層夾襖步出監(jiān)牢的瞬間禁偎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工阀坏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留如暖,地道東北人。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓忌堂,卻偏偏與公主長得像盒至,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子士修,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353