《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 其他 > 硬核圖解!30張圖帶你搞懂!路由器,集線器,交換機(jī),網(wǎng)橋,光貓有啥區(qū)別?

硬核圖解!30張圖帶你搞懂!路由器,集線器,交換機(jī),網(wǎng)橋,光貓有啥區(qū)別?

2022-11-23
作者:胖虎
來源:一口Linux

  故事就從一個車轱轆說起吧。先來看一個車轱轆。

  微信圖片_20221123150149.jpg

  輻條從車轱轆邊緣,一直匯聚到 中心的軸,這個軸在英文里叫hub。

  而我們今天要講到的集線器,英文里也叫hub

  都叫hub,多少有點(diǎn)關(guān)系,看下這面這個圖大概能明白,其實(shí)兩者有點(diǎn)像。

  微信圖片_20221123150154.png

  hub的由來

  大概想表達(dá)的意思是,它是匯聚網(wǎng)線的中心,因此就叫集線器。

  所以可以理解,大家常逛的 Github,Docker Hub, 還有P**hub ,都是為了表達(dá)它們是某類資源的中心了吧。

  那么集線器是什么呢?那就要從電腦是怎么互聯(lián)的這個話題說起。

  小學(xué)的時候,有一種網(wǎng)吧,它其實(shí)是不能上外網(wǎng)的。也就是不能打開度娘,不能搜索資料。

  不能上網(wǎng)的網(wǎng)吧還能叫網(wǎng)吧?

  能。雖然不能上外網(wǎng),但網(wǎng)吧老板可以把很多臺機(jī)子連起來,實(shí)現(xiàn)網(wǎng)吧內(nèi)互聯(lián),形成一個局域網(wǎng)(Local Area Network,簡稱LAN)。

  網(wǎng)吧內(nèi)互聯(lián)之后,就可以放上各種游戲,比如CS,實(shí)現(xiàn)網(wǎng)吧內(nèi)對線。

  這種網(wǎng)吧有種好處,沒有那么多鍵盤俠。

  畢竟你不知道什么時候鍵著鍵著,對方就順著網(wǎng)線找過來了。

  對戰(zhàn)直接從線上轉(zhuǎn)移到線下了。

  因此大家打游戲都很和諧,客氣,場面十分感人就是了。

  那么網(wǎng)吧內(nèi)的電腦是怎么互聯(lián)呢?

  一根網(wǎng)線互聯(lián)電腦

  從最簡單的場景說起,假設(shè)網(wǎng)吧內(nèi)只有兩臺電腦

微信截圖_20221123150540.png

  兩臺電腦互聯(lián)

  隨便連根網(wǎng)線就能實(shí)現(xiàn)互聯(lián)嗎?

  當(dāng)然不是。

  還記得網(wǎng)絡(luò)分層嗎?

  微信截圖_20221123150558.png

  數(shù)據(jù)如果要進(jìn)行傳輸,會從A電腦經(jīng)過這些網(wǎng)絡(luò)分層把消息組裝好,再到B電腦層層解包。

  網(wǎng)線,只是代替了上面的灰色部分,實(shí)現(xiàn)物理層上互聯(lián)。

  如果想要兩臺電腦互聯(lián)成功,還需要確保每一層所需要的步驟都要做到位,這樣數(shù)據(jù)才能確保正確投送并返回。

  我們自頂向下,從細(xì)節(jié)開始說一下實(shí)現(xiàn)互聯(lián)需要做什么。

  應(yīng)用層

  該層的網(wǎng)絡(luò)功能由應(yīng)用本身保證。

  假設(shè)兩臺電腦是打算用游戲進(jìn)行聯(lián)網(wǎng),那么該應(yīng)用層的功能由游戲程序保證。

  傳輸層

  絕大部分游戲用的傳輸層協(xié)議都是TCP,我們可以看下TCP報頭。

微信截圖_20221123150657.png

  這里面我們需要關(guān)注的是源和目的端口,這個可以定位到這臺電腦上哪個進(jìn)程在收發(fā)數(shù)據(jù)。

  這兩個端口信息一般是游戲內(nèi)部已經(jīng)填好。

  AB兩臺電腦,其中一臺作為服務(wù)端啟動,比如A,起了個服務(wù)器進(jìn)程。

  服務(wù)器會開放一個固定的端口,比如27015。這就是目的端口。

  這時候A和B都可以搜索到這個服務(wù)器。啟動一個客戶端進(jìn)程,連接進(jìn)入A的服務(wù)器進(jìn)程。

  而源端口,則由A和B自己生成。

  網(wǎng)絡(luò)層

  上圖除了端口,我們還看到一個192.168.0.105,這個就是A的IP地址

  我們看一下IP層的報文頭。

 微信截圖_20221123150810.png

  這里面需要關(guān)注是源和目的IP地址。

  如果兩臺電腦想通過一根網(wǎng)線進(jìn)行消息通信,那么他們需要在一個局域網(wǎng)內(nèi)。

  這意味著,他們的子網(wǎng)掩碼需要一致。局域網(wǎng)內(nèi),假設(shè)子網(wǎng)掩碼是 225.225.225.0,會認(rèn)為 192.168.0.x 這些IP都屬于一個局域網(wǎng)。所以當(dāng)A的IP地址是192.168.0.105 時,那么B的IP地址可以配成192.168.0.106 。

  關(guān)于IP這一塊是啥,后面會細(xì)講,大家如果沒明白我說的是啥,不要急。

  組裝好網(wǎng)絡(luò)層報頭后,數(shù)據(jù)包傳入到數(shù)據(jù)鏈路據(jù)層。

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

  以上解決了網(wǎng)絡(luò)層的互聯(lián),而在數(shù)據(jù)鏈路層,數(shù)據(jù)包里需要拼接上MAC報頭。先看下MAC報頭長什么樣子。

微信截圖_20221123153831.png

  其中需要關(guān)心的是標(biāo)紅的源和目的MAC地址。MAC地址可以粗略理解是這臺電腦網(wǎng)卡的唯一標(biāo)識。大概長這樣

  28:f9:d3:62:7d:31

  源和目的地址,在發(fā)送消息的時候就會被填上。

  但是A只知道自己的MAC地址,怎么才能知道B的MAC地址呢?

  這時候需要ARP協(xié)議。

  ARP(Address Resolution Protocal),即地址解析協(xié)議。用于將IP地址解析為以太網(wǎng)的MAC地址的協(xié)議。

  在局域網(wǎng)中,當(dāng)主機(jī)A有數(shù)據(jù)要發(fā)送給主機(jī)B時,A必須知道B的IP地址。

  但是僅僅有IP地址還是不夠的,因?yàn)镮P數(shù)據(jù)報文還需要在數(shù)據(jù)鏈路層封裝成幀才能通過物理網(wǎng)絡(luò)發(fā)送。因?yàn)榘l(fā)送端還必須有接收端的MAC地址,所以需要一個從IP地址到MAC地址的映射。ARP就是干這事情的協(xié)議。

  微信截圖_20221123154046.png

  A查本地ARP表發(fā)現(xiàn)B的IP和MAC映射關(guān)系不存在

  A通過ARP廣播的形式向局域網(wǎng)發(fā)出消息,詢問某IP對應(yīng)的MAC地址是多少。比如A此時知道B的IP,但并不知道B的MAC地址是多少,就會嘗試在局域網(wǎng)內(nèi)發(fā)起ARP廣播,詢問局域網(wǎng)下所有機(jī)器,哪個機(jī)器的IP與B的IP一致。

  B收到這個ARP消息,發(fā)現(xiàn)A要問的IP與自己的IP一致,就會把自己的MAC地址作為應(yīng)答返回給A。

  此時A就知道了B的MAC地址,順便把消息記錄到本地ARP表里,下次直接用表里的關(guān)系就行,不需要每次都去問。

  物理層

  從數(shù)據(jù)鏈路層到物理層,數(shù)據(jù)會被轉(zhuǎn)為01比特流

  此時需要把比特流傳到另一臺電腦。

  通過一根網(wǎng)線,兩段水晶頭插入網(wǎng)口,把兩臺電腦連起來。

  但對網(wǎng)線有一些要求。

  這根網(wǎng)線兩端的水晶頭需要采用交叉互聯(lián)法。

微信截圖_20221123154125.png

  水晶頭里有8根線,注意上圖里的顏色,是有順序的。第1、2根線起著收信號的作用,而第3、6腳發(fā)信號的作用。將一端的1號和3號線、2號和6號線互換一下位置,就能夠在物理層實(shí)現(xiàn)一端發(fā)送的信號,另一端能收到。

  當(dāng)然,現(xiàn)在有些網(wǎng)卡有自適應(yīng)的功能,就算是直連互聯(lián)法的線,也能有交叉互聯(lián)法的效果。如果你用的是這種網(wǎng)卡,就當(dāng)我物理層這塊什么都沒說吧。

  互聯(lián)

  此時,在確保關(guān)閉防火墻的前提下,可以嘗試從A電腦中ping一下B,再從B電腦中ping一下A。如無意外,都能ping通。

  A給B發(fā)個消息,從應(yīng)用層到數(shù)據(jù)鏈路層,會分別加上A和B的各種''身份信息"。比如在傳輸層會加上A和B的應(yīng)用端口號,在網(wǎng)絡(luò)層加上源和目的IP,在數(shù)據(jù)鏈路層會加上源和目的網(wǎng)卡的MAC頭部信息。

  B收到消息后逐層解包,驗(yàn)證,最后順利到達(dá)應(yīng)用層。實(shí)現(xiàn)AB兩臺機(jī)器消息互通。

  至此游戲就能正常聯(lián)機(jī)對線,兩臺電腦互聯(lián)成功!

  什么是集線器

  兩個人打cs,總會覺得無聊,但是每臺電腦又只有一個網(wǎng)線口。

  想要邀請更多的人一起玩,怎么辦?

  微信截圖_20221123154333.png

  那就要回到文章開頭提到的集線器(hub)了。

  這是個工作在物理層的設(shè)備。

  有多個網(wǎng)口,很好的解決了電腦上只有一個網(wǎng)口的問題,可以做到多臺電腦的網(wǎng)線都插入到集線器上。

  同時工作原理也非常簡單,會把某個端口收到的數(shù)據(jù),輸入到中繼電路

  中繼電路的基本功能是將輸入的信號廣播到集線器的所有端口上。

  簡單來說就是無腦復(fù)制N份到其余N個端口上。

微信截圖_20221123154402.png

  數(shù)據(jù)復(fù)制到N個端口后。對應(yīng)轉(zhuǎn)發(fā)到N臺機(jī)器里。

  集線器內(nèi)部結(jié)構(gòu)

  說到這里,已經(jīng)對集線器有個大概認(rèn)識了。

  接下來,我們看下集線器的內(nèi)部結(jié)構(gòu)。

 微信截圖_20221123154451.png

  從A網(wǎng)口進(jìn)入集線器的消息,此時還是電信號。這里經(jīng)過一個PHY模塊。

  要理解PHY模塊的作用,首先要先了解每個網(wǎng)口,都可能接著網(wǎng)線(廢話),而每根網(wǎng)線的傳輸?shù)母袷蕉际怯锌赡懿煌摹6鳳HY的作用,就是把這些格式轉(zhuǎn)化為一個通用的格式。

  舉個例子。PHY就好比一個翻譯器,有的人說英文,有的人說日文。但是PHY,會把它統(tǒng)一轉(zhuǎn)為普通話,給內(nèi)部電路處理。內(nèi)部電路處理完之后,再經(jīng)過PHY模塊,轉(zhuǎn)為英語,或日文從對應(yīng)網(wǎng)口里輸出。

  經(jīng)過PHY的處理后,以電信號的形式輸入到中繼電路,被無腦廣播,再次經(jīng)過PHY模塊后變成BCD網(wǎng)口的格式輸出。

  這里面的電信號,是會受噪聲干擾,導(dǎo)致信號形變出錯的。

  但就算是錯了,也還是會原封不動的廣播出去,這就是上面提到無腦的精髓所在。

  那信號如果出錯了怎么辦?

  只能讓接收方收到消息后進(jìn)行校驗(yàn)。

  還記得上文里提到的數(shù)據(jù)鏈路層的MAC報頭里最末尾有個FCS嗎?

  FCS里存放的是發(fā)送方通過循環(huán)冗余校驗(yàn)CRC計(jì)算得到的值。

  接收方用收到的數(shù)據(jù)算一次CRC,與FCS里的值進(jìn)行對比。

  如果一致,那證明數(shù)據(jù)沒問題。如果出錯,則直接丟棄。

  當(dāng)然,丟棄包并不會影響數(shù)據(jù)的傳輸, 因?yàn)閬G棄的包不會觸發(fā)確認(rèn)響應(yīng)。因此協(xié)議棧的 TCP 模塊會檢測到丟包, 并對該包進(jìn)行重傳。

  如果消息沒出錯,但是因?yàn)闊o腦廣播,C也能收到A發(fā)給B的數(shù)據(jù)包。

  此時 C 會在接受到數(shù)據(jù)包后一層層的"剝開"。

  正常情況下,在數(shù)據(jù)鏈路層時,識別到目的 MAC 地址跟 C 的不一致時,也會把數(shù)據(jù)丟棄。

微信截圖_20221123154704.png

  什么是交換機(jī)

  目前只有 ABC 三臺機(jī)器,每次都是廣播發(fā)消息倒還好。

  如果機(jī)器越來越多,每臺機(jī)器發(fā)一條消息,都會被廣播,就有點(diǎn)頂不住了。

  舉個例子。

  假設(shè)N臺機(jī)器,其中兩臺機(jī)器A和B,A發(fā)到B和B發(fā)給A,共兩條消息。

  如果這N臺機(jī)器,用的是集線器。還是AB之間互發(fā)消息,每條消息都是廣播的話,就是(N-1)+(N-1)條消息,差距有些大,對網(wǎng)絡(luò)資源浪費(fèi)就有些嚴(yán)重了。

  那么,有沒有可能做到,A發(fā)給B的消息,就不要轉(zhuǎn)發(fā)給C呢?

  可以的,把集線器換成交換機(jī)。

  交換機(jī),又叫switch,跟集線器長得很像。

  但是功能更強(qiáng)一些,從網(wǎng)絡(luò)分層上來說,屬于數(shù)據(jù)鏈路層,比集線器所在的物理層還要高一層。

  所有發(fā)到交換機(jī)的數(shù)據(jù),都會先進(jìn)入交換機(jī)的緩存區(qū)。接著消息再被轉(zhuǎn)發(fā)到對應(yīng)機(jī)器上。

  注意這里用的是轉(zhuǎn)發(fā),而不是集線器的廣播,交換機(jī)是怎么做到轉(zhuǎn)發(fā)的呢?

  MAC地址表

  交換機(jī)內(nèi)部維護(hù)了一張MAC地址表。

  記錄了 端口號和MAC地址的對應(yīng)關(guān)系。

  這個表的數(shù)據(jù)是交換機(jī)不斷學(xué)習(xí)的結(jié)果。

  當(dāng)A發(fā)消息到交換機(jī)時,交換機(jī)發(fā)現(xiàn)消息是從1號端口進(jìn)來的,則會在MAC地址表上,記錄A的MAC地址對應(yīng)1號端口。

  如果A沒有很長時間沒發(fā)消息到這個1號端口,那這條記錄就會過期并被刪除。

  那么,當(dāng)時間足夠長,ABC 都發(fā)過消息給交換機(jī)后,地址表就會有完整的關(guān)系信息。

微信截圖_20221123154809.png

  A準(zhǔn)備發(fā)送消息給B,此時A會把B的MAC地址,放入要發(fā)送的數(shù)據(jù)里。數(shù)據(jù)順著網(wǎng)線發(fā)出。

  交換機(jī)從端口收到數(shù)據(jù),會把數(shù)據(jù)里的源和目的MAC地址提出來,跟MAC地址表進(jìn)行對比。

  發(fā)現(xiàn)B的MAC地址正好在2號端口,那么就把數(shù)據(jù)轉(zhuǎn)發(fā)給2號端口。

  此時B電腦從網(wǎng)線收到來自交換機(jī)2號端口的數(shù)據(jù)。

  兩種特殊情況

  正常流程很清楚了,看兩個特殊情況

  交換機(jī)查詢地址表時,發(fā)現(xiàn)目的 MAC 地址的目標(biāo)端口和這個包的源端口,是同一個端口,怎么辦?

  先說結(jié)論,會直接丟棄這個包

  我們看下,假設(shè)它不丟棄,會發(fā)生什么情況。

  微信截圖_20221123155116.png

  A發(fā)了個消息給B,中間經(jīng)過一個集線器,此時消息會被廣播到B和交換機(jī)。

  此時B收到第一條A發(fā)給它的消息

  交換機(jī)從1號端口收到A的消息后,解包,獲得目的MAC地址是BB-BB-BB-BB-BB-BB。查MAC地址表,發(fā)現(xiàn)要發(fā)到1號端口。此時,源和目的端口都是同一個,如果交換機(jī)不丟棄這個消息,B會收到第二條A發(fā)給它的消息。

  A只發(fā)了一次消息,B卻收到兩條消息,明顯不對。

  因此,當(dāng)交換機(jī)查詢地址表時,發(fā)現(xiàn)目標(biāo)端口和源端口,是同一個端口時,會丟棄這個包。

  MAC地址表里找不到對應(yīng)的MAC地址,怎么辦?

  這可能是因?yàn)榫哂性摰刂返脑O(shè)備,還沒有向交換機(jī)發(fā)送過包,或者這個設(shè)備一段時間沒有工作,導(dǎo)致地址被從地址表中刪除了。

  這種情況下,交換機(jī)無法判斷應(yīng)該把包轉(zhuǎn)發(fā)到哪個端口,只能將包轉(zhuǎn)發(fā)到除了源端口之外的所有端口上,無論該設(shè)備連接在哪個端口上,都能收到這個包。

  此時,交換機(jī)就會跟集線器一樣進(jìn)行廣播。

  發(fā)送了包之后目標(biāo)設(shè)備會作出響應(yīng),只要返回了響應(yīng)包,交換機(jī)就可以將它的地址寫入地址表,下次也就不需要把包 發(fā)到所有端口了。

  交換機(jī)內(nèi)部結(jié)構(gòu)

  再看下交換機(jī)內(nèi)部結(jié)構(gòu)。

  微信截圖_20221123155955.png

  其實(shí)對比可以發(fā)現(xiàn),交換機(jī)和集線器內(nèi)部結(jié)構(gòu)很像。

  重點(diǎn)需要提到的是MAC模塊。消息以電信號的形式從網(wǎng)口進(jìn)入,到了PHY會被轉(zhuǎn)成通用格式的電信號。而MAC模塊的作用是把這個電信號轉(zhuǎn)為數(shù)字信號,這樣就能提取出MAC包頭,并通過MAC數(shù)據(jù)幀末尾的FCS校驗(yàn)這個包有沒有問題,如果沒問題,則把數(shù)據(jù)放到內(nèi)存緩沖區(qū)里,否則直接丟棄。

  另外,這個MAC模塊,雖然這么叫。但其實(shí)交換機(jī)MAC模塊不具有 MAC 地址。因此交換機(jī)的端口不核對接收方 MAC 地址,而是直接接收所有的包并存放到緩沖區(qū)中。

  放入到內(nèi)存緩沖區(qū)后,還會把MAC地址和端口號記錄到MAC地址表中。同時檢查目的MAC地址在不在MAC地址表中,在的話則會轉(zhuǎn)發(fā)到對應(yīng)端口。否則廣播。

  交換機(jī)與網(wǎng)橋的區(qū)別

  網(wǎng)橋,本質(zhì)上可以理解為兩個網(wǎng)線口的交換機(jī),正好可以把兩臺電腦給連起來,也叫橋接。而交換機(jī),則是多網(wǎng)線口的網(wǎng)橋,可以把多臺電腦給連(橋接)起來。

  其他功能方面,大差不差,不必太過糾結(jié)。

  交換機(jī)和二層交換機(jī)和三層交換機(jī)有什么區(qū)別

  這一部分提到的交換機(jī),其實(shí)就是二層交換機(jī),也就是工作在第二層(數(shù)據(jù)鏈路層)的交換機(jī),二者沒區(qū)別。

  而三層交換機(jī),是工作在第三層(網(wǎng)絡(luò)層)的交換機(jī),其實(shí)就是接下來要提到的路由器。

  什么是路由器

  有了交換機(jī)之后,小網(wǎng)吧里的電腦就都可以被連起來了。交換機(jī)網(wǎng)口不夠?那就再接個交換機(jī)。

  但世界上電腦這么多,交換機(jī)里的MAC地址表難道全都要記住嗎?

  顯然做不到。為了解決這個問題。

  于是就有了路由器,工作在網(wǎng)絡(luò)層,比數(shù)據(jù)鏈路層更高一層。

  網(wǎng)絡(luò)層引入了IP的概念。

  什么是IP

  比如前面提到的 192.168.0.105 就是一個IP,同一個局域網(wǎng)內(nèi)還可能會有一個IP是192.168.0.106。有沒有發(fā)現(xiàn),它們都是192.168.0.xxx。

  像極了 上海市.黃浦區(qū).南京東路.105號,這樣的地址。現(xiàn)實(shí)生活中,我們可以通過一個地址定位到要去哪。到了 上海市.黃浦區(qū).南京東路.105號樓里,我們就可以再去找某個叫身份證為xiaobaixxxxx的人。

  那互聯(lián)網(wǎng)世界里,我們也就可以通過IP地址,定位到某個廣域網(wǎng)段,再通過廣域網(wǎng)內(nèi)部的局域網(wǎng)的MAC地址定位到具體某個電腦。

  上海市.黃浦區(qū).南京東路.105號可以幫助我們定位到在南京東路上的第105號樓的位置。但還有些路,比如南京西路,可能不止105號,可能要到257號。

  實(shí)際上一個IP由網(wǎng)絡(luò)號和主機(jī)號組成,共32位組成。如果拿了前面24位做網(wǎng)絡(luò)號,那主機(jī)號就剩8位了,2的8次方=256,最多表示表示256號樓。因此為了多表示幾個樓,可以向網(wǎng)絡(luò)號多挪幾位過來作為主機(jī)號。

  那么具體多少位作為網(wǎng)絡(luò)號呢?可以在IP后面加一個數(shù)字,用來表明這一點(diǎn)。

  于是就有了 192.168.0.105/24這種表示方法,表明前24位192.168.0.0是網(wǎng)絡(luò)號,105是主機(jī)號。

微信截圖_20221123160031.png

  有了網(wǎng)段,就可以一次性表示一大批地址。就不需要像交換機(jī)那樣苦哈哈的一條一條MAC地址記錄在表里。

  路由表

  路由器的作用,可以幫助我們在互聯(lián)網(wǎng)世界里轉(zhuǎn)發(fā)消息到對應(yīng)的IP。

  對比一下。

  交換機(jī),是通過 MAC 頭部中,接收方 MAC 地址,來判斷轉(zhuǎn)發(fā)目標(biāo)的。

  路由器,則是根據(jù) IP 頭部中, IP 地址來判斷的。

  由于使用的地址不同,記錄轉(zhuǎn)發(fā)信息的表也會不同。

  類似交換機(jī)的MAC地址表,路由器也維護(hù)了一張路由表。

  而路由表,是用于告訴路由器,什么樣的消息該轉(zhuǎn)發(fā)到什么端口。

微信截圖_20221123160054.png

  假設(shè)A要發(fā)消息到D。也就是192.168.0.105/24要發(fā)消息到192.168.1.11/24。

  那么A會把消息經(jīng)過交換機(jī)發(fā)到路由器。

  路由器通過192.168.0.105/24獲得其網(wǎng)絡(luò)號是 192.168.0.0 ,而目的地的網(wǎng)絡(luò)號是192.168.1.0,二者網(wǎng)絡(luò)號不同,處于不同局域網(wǎng)。

  查路由表,發(fā)現(xiàn)192.168.1.0,在e2端口,那么就會把消息從e2端口發(fā)出,到達(dá)交換機(jī),交換機(jī)發(fā)現(xiàn)MAC地址是它局域網(wǎng)下的D機(jī)器,就把消息打過去。

  當(dāng)然,如果路由表里找不到,那就打到默認(rèn)網(wǎng)關(guān)吧,也就是從e1口發(fā)出,發(fā)到IP192.0.2.1。這個路由器的路由表不知道該去哪,說不定其他路由器知道。

  路由器的內(nèi)部結(jié)構(gòu)

微信截圖_20221123160122.png

  路由器內(nèi)部,分為控制平面和數(shù)據(jù)平面,說白了就是對應(yīng)軟件部分和硬件部分。

  硬件部分跟交換機(jī)很像。數(shù)據(jù)從A網(wǎng)口進(jìn)入,此時數(shù)據(jù)還是網(wǎng)線上格式的電信號,會被PHY模塊轉(zhuǎn)為通用信號格式,再被MAC模塊轉(zhuǎn)為數(shù)字信號,通過FCS進(jìn)行錯誤校驗(yàn),同時校驗(yàn)MAC地址是否是自己,通過校驗(yàn)則進(jìn)入內(nèi)存緩沖區(qū),否則丟棄。

  再進(jìn)入軟件部分,由路由選擇處理器,通過一定規(guī)則(軟件邏輯),查詢路由表判斷轉(zhuǎn)發(fā)目標(biāo)和對應(yīng)轉(zhuǎn)發(fā)口,再經(jīng)由硬件部分的交換結(jié)構(gòu)轉(zhuǎn)發(fā)出去。

  如果路由表中無法找到匹配記錄,路由器會丟棄這個包,并通過ICMP消息告知發(fā)送方。

  路由器和交換機(jī)的主要區(qū)別

  MAC模塊的區(qū)別

  路由器和交換機(jī)不同點(diǎn)在于,它的每個網(wǎng)口下,都有一個MAC地址和IP地址。

  正因?yàn)槁酚善骶哂?MAC 地址,因此它能夠成為數(shù)據(jù)鏈路層的的發(fā)送方和接收方。

  怎么理解這句話?

  前面提到交換機(jī),是不具備MAC地址的,而MAC報頭是需要填上目的MAC地址的。因此交換機(jī)從來都不是數(shù)據(jù)的目的地,它只簡單轉(zhuǎn)發(fā)數(shù)據(jù)幀到目的地。

  但路由器,是有MAC地址的,因此MAC報頭就可以寫上,下一站目的地就是xx路由。

  到了路由器后,路由器可以再次組裝下一站的目的MAC地址是再下一個路由,通過這一點(diǎn),讓數(shù)據(jù)在路由和路由之間傳輸。

  而同時因?yàn)榻粨Q機(jī)不具有MAC地址,因此也不會校驗(yàn)收到的數(shù)據(jù)幀的MAC地址是不是自己的,全部收下做轉(zhuǎn)發(fā)。而路由器則會校驗(yàn)數(shù)據(jù)幀的MAC報頭里的目的MAC地址是不是自己,是的話才會收入內(nèi)存緩沖區(qū),否則丟棄。

  找不到轉(zhuǎn)發(fā)目的地時的處理方式有區(qū)別

  如果在路由表中無法找到匹配的記錄,路由器會丟棄這個包,并通過 ICMP消息告知發(fā)送方。

  而交換機(jī)在MAC地址表里找不到轉(zhuǎn)發(fā)端口時會選擇廣播。

  這里的處理方式兩者是不同的,原因在于網(wǎng)絡(luò)規(guī)模的大小。

  交換機(jī)連接的網(wǎng)絡(luò)最多也就是幾千臺設(shè)備的規(guī)模,這個規(guī)模并 不大。如果只有幾千臺設(shè)備,遇到不知道應(yīng)該轉(zhuǎn)發(fā)到哪里的包,交換機(jī)可以將包發(fā)送到所有的端口上,雖然這個方法很簡單粗暴,但不會引發(fā)什么 問題。

  但路由器工作的網(wǎng)絡(luò)環(huán)境就是互聯(lián)網(wǎng),全世界所有的設(shè)備都連接在互聯(lián)網(wǎng)上,規(guī)模非常大,并且這個規(guī)模還在持續(xù)擴(kuò)大中。如果此時它的操作跟交換機(jī)一樣,將不知道應(yīng)該轉(zhuǎn)發(fā)到哪里的包發(fā)送到整個網(wǎng)絡(luò)上,那就會產(chǎn)生大量的網(wǎng)絡(luò)包,造成網(wǎng)絡(luò)擁塞。因此,路由器遇到不知道該轉(zhuǎn)發(fā)到哪里的包, 就會直接丟棄。

  路由器和光貓有什么區(qū)別

  不管是交換機(jī)還是路由器,前面都是提到網(wǎng)口輸入的是電信號。但現(xiàn)在流行的是光纖傳輸,傳輸?shù)氖枪庑盘枴?/p>

  而光貓(modem),是一種調(diào)制解調(diào)器,其實(shí)就是用于光電信號轉(zhuǎn)換的設(shè)備。

  接收數(shù)據(jù)時,可以將光纖里的光信號轉(zhuǎn)化為電信號,發(fā)給路由器,路由器內(nèi)部再轉(zhuǎn)成數(shù)字信號,并在此基礎(chǔ)上做各種處理。

  相反,也會把路由器傳來的電信號轉(zhuǎn)為光信號,發(fā)到光纖,并進(jìn)入互聯(lián)網(wǎng)。

  微信截圖_20221123160203.png

  總結(jié)

  兩臺電腦可以通過一根網(wǎng)線直接連接,進(jìn)行通信。

  機(jī)器一多,可以把網(wǎng)線都接到集線器(物理層)上,但是集線器會不管三七二十一進(jìn)行廣播。

  不想廣播,可以用(二層)交換機(jī)(數(shù)據(jù)鏈路層),又叫多端口網(wǎng)橋,它比較聰明,會自我學(xué)習(xí)生產(chǎn)MAC地址表,知道消息發(fā)到哪,那就不需要廣播啦

  互聯(lián)網(wǎng)電腦這么多,交換機(jī)MAC地址表總不能全放下吧。改用路由器(網(wǎng)絡(luò)層),也叫三層交換機(jī),通過網(wǎng)段的方式定位要把消息轉(zhuǎn)發(fā)到哪,就不需要像交換機(jī)那樣苦哈哈一條條記錄MAC地址啦。

  路由器和光貓之間是好搭檔,光貓負(fù)責(zé)把光纖里的光信號轉(zhuǎn)換成電信號給路由器。

  現(xiàn)在一般情況下,家里已經(jīng)不用集線器和交換機(jī)了,大部分路由器也支持交換機(jī)的功能。所以可以看到,家里的臺式機(jī)電腦一般就連到一個路由器,再連個光貓就夠能快樂上網(wǎng)了。

  最后

  以前整個班的同學(xué)家里都不見得有一臺電腦,都喜歡偷偷跑去網(wǎng)吧玩電腦。改革開放的春風(fēng),把電腦吹進(jìn)了每家每戶,也把網(wǎng)吧給吹成了網(wǎng)咖。

  從前的我晚上偷偷上網(wǎng),現(xiàn)在的我,接到報警,也能在大半夜爬起來網(wǎng)上沖浪。

  沒想到我以這種方式保持了當(dāng)初最純粹的質(zhì)樸。

 更多信息可以來這里獲取==>>電子技術(shù)應(yīng)用-AET<<

  微信圖片_20210517164139.jpg


微信圖片_20220701092006.jpg

電子技術(shù)應(yīng)用專欄作家 一口linux

原文鏈接:https://mp.weixin.qq.com/s/t7vomHGTMJ179XTmuJjDqQ

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。