網絡編程懶人入門(六):史上最通俗的集線器、交換機、路由器功能原理入門


1、前言

即時通訊網整理了大量的網絡編程類基礎文章和資料,包括《TCP/IP協議 卷1》、《[通俗易懂]深入理解TCP協議》系列、《網絡編程懶人入門》系列、《不為人知的網絡編程》系列、《P2P技術詳解》系列、《高性能網絡編程》系列、甚至還有圖文並貌+實戰代碼的《NIO框架入門》等,目的是幫助即時通訊類應用的開發者,至少要掌握網絡編程最基本的原理,所謂知其然更要知其所以然。尤其現在移動網絡大行其道的時代,在網絡環境如此復雜的情況下,能寫好一套技術精湛、用戶體驗等俱佳的IM或消息推送系統,顯然不是隨便用用Netty、MINA、AFNetwoking、okhttp等服務端和客戶端框架就能搞定的事。總之,即時通訊技術歸根結底還是網絡編程技術的應用,只有更深入地了解了網絡編程及其相關知識,才能更好地寫出優質的應用。

實際上計算機網絡編程或者網絡通信技術最基本的物理載體,就是集線器、交換機、路由器這些基本設備,了解這些基本設備的工作原理,對於程序員來說是基本素養,總不能什么事都甩鍋給網管,何況中小公司根本就沒有條件配備專職網管,還是得程序員親自動手。但技多不壓身,何況這些設備和技術總比那些毫無技術含量插刪改查代碼擼起來有意思。話不多說,回歸正題吧。

本文旨在簡單地說明集線器、交換機與路由器的區別,因而忽略了很多細節,三者實際的發展過程和工作原理並非文中所寫的這么簡單。如果你看完本文能大概了解到三者的異同,本文的目的就達到了。至於更具體的技術問題,歡迎在留言中探討。

另外,如果您正打算從零開發移動端IM,則建議您從《新手入門一篇就夠:從零開發移動端IM》一文開始,此文按照IM開發所需的知識和技能要求,擬定了詳盡的學習提綱和建議等。

學習交流:

- 即時通訊開發交流3群:185926912[推薦]

- 移動端IM開發入門文章:《新手入門一篇就夠:從零開發移動端IM

(本文同步發布於:http://www.52im.net/thread-1629-1-1.html

2、系列文章

本文是系列文章中的第6篇,本系列文章的大綱如下:

網絡編程懶人入門(一):快速理解網絡通信協議(上篇)

網絡編程懶人入門(二):快速理解網絡通信協議(下篇)

網絡編程懶人入門(三):快速理解TCP協議一篇就夠

網絡編程懶人入門(四):快速理解TCP和UDP的差異

網絡編程懶人入門(五):快速理解為什么說UDP有時比TCP更有優勢

網絡編程懶人入門(六):史上最通俗的集線器、交換機、路由器功能原理入門》(本文)

如果您覺得本系列文章過於基礎,您可直接閱讀《不為人知的網絡編程》系列文章,該系列目錄如下:

不為人知的網絡編程(一):淺析TCP協議中的疑難雜症(上篇)

不為人知的網絡編程(二):淺析TCP協議中的疑難雜症(下篇)

不為人知的網絡編程(三):關閉TCP連接時為什么會TIME_WAIT、CLOSE_WAIT

不為人知的網絡編程(四):深入研究分析TCP的異常關閉

不為人知的網絡編程(五):UDP的連接性和負載均衡

不為人知的網絡編程(六):深入地理解UDP協議並用好它

關於移動端網絡特性及優化手段的總結性文章請見:

現代移動端網絡短連接的優化手段總結:請求速度、弱網適應、安全保障

移動端IM開發者必讀(一):通俗易懂,理解移動網絡的“弱”和“慢”

移動端IM開發者必讀(二):史上最全移動弱網絡優化方法總結

3、帝國時代

我相信我們都玩過一款特別火的游戲:帝國時代。小時候想要玩帝國時代,需要到軟件城購買盜版光盤安裝,大概3塊錢一張左右的樣子,當時已經覺得很便宜了,誰想到現在有了網絡之后是免費。

小A是一個帝國時代大神,他打通了游戲的所有關卡,可以一個人單挑8個瘋狂的電腦玩家。漸漸地他覺得無聊了,想要找小伙伴一起PK。

但是兩個電腦需要互聯才行,如何實現兩台設備的互聯呢?

小A很聰明,他發明了一個類似於USB口一樣的可以傳輸數據的端口,他將其命名為網口。小A通過一根網線將自己的電腦與小B的網口相連,實現了兩台電腦間的互連(如下圖)。

 

4、集線器(Hub)

兩個小伙伴很開心,聯機玩了起來,這時被路過的小C看見了,小C也要加入進來。

但是我們知道,每台電腦只有一個網口,無法實現三台電腦的相互連接,那要要怎么辦呢?

 

這時候小B出了一個主意:咱們再找一台計算機,給他多設計幾個網口,我們每個人都連到這台計算機的網口上,不也實現咱們哥幾個之間的互連了嗎。

說干就干,於是他們設計出了一款微型計算機,他本身具備多個網口,專門實現多台計算機的互聯作用,這個微型計算機就是集線器(HUB)。

顧名思義,集線器起到了一個將網線集結起來的作用,實現最初級的網絡互通。

集線器是通過網線直接傳送數據的,我們說他工作在物理層(如下圖所示)。

 

5、交換機

有了集線器后,越來越多的小伙伴加入到游戲中,小D、小E等人都慕名而來。

然而集線器有一個問題,由於和每台設備相連,他不能分辨出具體信息是發送給誰的,只能廣泛地廣播出去。

例如小A本來想問小C:你吃了嗎?結果小B,小D和小E等所有連接在集線器上的用戶都收到了這一信息。 

由於處於同一網絡,小A說話時其他人不能發言,否則信息間會產生碰撞,引發錯誤,對這種情況,我們稱為各設備處於同一沖突域內。

 
 

這樣的設備用戶體驗極差,於是小伙伴們一起討論改進措施。

這時聰明的小D發話了:我們給這台設備加入一個指令,讓他可以根據網口名稱自動尋址傳輸數據。

比如我把小A的網口命名為macA,將小C的命名為macC,這時如果小A想要將數據傳給小C,則設備會根據網口名稱macA和macC自動將資料從A的電腦傳送到C的電腦中,而不讓小B、小D和小E收到。

(補充說明: 這里的macA, macB指的就是MAC地址,相當於一個人的身份證,獨一無二。)

也就是說,這台設備解決了沖突的問題,實現了任意兩台電腦間的互聯,大大地提升了網絡間的傳輸速度,我們把它叫做交換機。

由於交換機是根據網口地址傳送信息,比網線直接傳送多了一個步驟,我們也說交換機工作在數據鏈路層(如下圖)。

 
 

這回小伙伴們高興了,他們愉快地玩耍起來。

6、路由器

漸漸地,他們在當地有了名氣,吸引了越來越多的小伙伴加入到他們的隊伍中。有一天,一個外村的小伙突然找上門來,希望能和他們一起互聯,實現跨村間的網絡對戰。

小A說可以呀,於是他們找了一根超長的網線將兩個村落的交換機連在了一起。結果發現一件奇怪的事:兩個村落間竟然不能相互通信。

怎么回事?原來那邊的電腦和他們用的不是一套操作系統,這導致信息間的傳送形式的不匹配。在這期間,還有其他村落的人也來找過小A,可是小A發現,每個村子之間用的操作系統都不一樣。

這可咋辦吶?難道以后只能各自村子玩各自的了嗎?為了解決這一問題,各村的小伙伴們坐在一起組織了一場會議,最終得出了一套解決方案:采用同樣的信息傳送形式(像不像秦始皇統一度量衡?)。

那如何實現呢?小伙伴們規定,不同的村子間先在各自的操作系統上加上一套相同的協議。不同村落通信時,信息經協議加工成統一形式,再經由一個特殊的設備傳送出去。這個設備就叫做路由器。

在這套協議中,每個機器都被賦予了一個IP地址,相當於一個門牌號一樣。路由器通過IP地址尋址,我們說它工作在計算機的網絡層。

這樣,經由如此的一系列改裝,小A終於帶領村民們實現了整個鄉鎮的通信。隨着越來越多的城里人也加入小A的協議,小A帶領村民逐步實現了全市、全國乃至全世界的通信。這一套協議便是TCP/IP協議簇,互聯網也便這樣形成了(關於TCP/IP改變世界的故事,詳見《技術往事:改變世界的TCP/IP協議(珍貴多圖、手機慎點)》)。

 

然而,即便如今全網絡已遍布了全世界,在小A和村里的小伙伴對戰帝國時代的時候,也仍然用着交換機。只有和外面更大的世界交流的時候才用到路由器。

其實上圖只是為了幫助您更好地理解路由器,一個真實的網絡拓撲中,路由器、交換機、集線器是一起分工合作的,正如下圖所示:

 
(如上圖所示:Router即路由器、Switch即交換機、Hub即集線器)

附錄:更多網絡編程資料

TCP/IP詳解 - 第11章·UDP:用戶數據報協議

TCP/IP詳解 - 第17章·TCP:傳輸控制協議

TCP/IP詳解 - 第18章·TCP連接的建立與終止

TCP/IP詳解 - 第21章·TCP的超時與重傳

技術往事:改變世界的TCP/IP協議(珍貴多圖、手機慎點)

通俗易懂-深入理解TCP協議(上):理論基礎

通俗易懂-深入理解TCP協議(下):RTT、滑動窗口、擁塞處理

理論經典:TCP協議的3次握手與4次揮手過程詳解

理論聯系實際:Wireshark抓包分析TCP 3次握手、4次揮手過程

計算機網絡通訊協議關系圖(中文珍藏版)

UDP中一個包的大小最大能多大?

P2P技術詳解(一):NAT詳解——詳細原理、P2P簡介

P2P技術詳解(二):P2P中的NAT穿越(打洞)方案詳解

P2P技術詳解(三):P2P技術之STUN、TURN、ICE詳解

通俗易懂:快速理解P2P技術中的NAT穿透原理

高性能網絡編程(一):單台服務器並發TCP連接數到底可以有多少

高性能網絡編程(二):上一個10年,著名的C10K並發連接問題

高性能網絡編程(三):下一個10年,是時候考慮C10M並發問題了

高性能網絡編程(四):從C10K到C10M高性能網絡應用的理論探索

技術掃盲:新一代基於UDP的低延時網絡傳輸層協議——QUIC詳解

讓互聯網更快:新一代QUIC協議在騰訊的技術實踐分享

現代移動端網絡短連接的優化手段總結:請求速度、弱網適應、安全保障

聊聊iOS中網絡編程長連接的那些事

移動端IM開發者必讀(一):通俗易懂,理解移動網絡的“弱”和“慢”

移動端IM開發者必讀(二):史上最全移動弱網絡優化方法總結

IPv6技術詳解:基本概念、應用現狀、技術實踐(上篇)

IPv6技術詳解:基本概念、應用現狀、技術實踐(下篇)

>> 更多同類文章 ……

(本文同步發布於:http://www.52im.net/thread-1629-1-1.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM