Learning Objectives
- 分辨區域網路(LAN)、廣域網路(WAN)與網際網路,認識常見的網路拓樸
- 說明乙太網路與 Wi-Fi 的角色,以及交換器如何用 MAC 位址表轉送訊框
- 用 IP 位址與子網路遮罩判斷兩台電腦是否在同一個網段
- 說明預設閘道、路由器、DHCP 與 NAT 各自解決什麼問題
這一課要回答的問題
打開手機的 Wi-Fi 設定,常會看到一串像 192.168.1.23 的「IP 位址」,還有「子網路遮罩」「路由器」幾個欄位。
同一個宿舍網路裡的兩台筆電可以直接互傳檔案;可是只要「預設閘道」填錯一個數字,就連不上任何網站。
這一課回答幾個問題:
- 一間教室裡的電腦,和遠在另一個國家的伺服器,是怎麼連在一起的?
- 交換器和路由器長得很像,差別在哪裡?
- 電腦怎麼知道對方「就在旁邊」可以直接送,還是要交給路由器轉送?
- 家裡只有一個對外的位址,為什麼手機、電腦、電視可以同時上網?
區域網路、廣域網路與網際網路
依涵蓋的範圍,網路大致分成:
| 名稱 | 範圍 | 例子 | 主要設備 |
|---|---|---|---|
| 區域網路(LAN,Local Area Network) | 一個房間、一層樓、一棟建築 | 宿舍、電腦教室、家裡的 Wi-Fi | 交換器、無線基地台 |
| 廣域網路(WAN,Wide Area Network) | 城市、國家、跨國 | 學校之間的學術網路、電信業者的骨幹 | 路由器、光纖線路 |
| 網際網路(Internet) | 全世界 | 許多組織的網路互相連接而成的「網路的網路」 | 路由器 |
網際網路的前身之一是美國的 ARPANET:1969 年 10 月 29 日,加州大學洛杉磯分校(UCLA)的電腦第一次透過它把訊息送到史丹佛研究院(SRI), 到 1969 年 12 月已經有 4 個節點。今天的網際網路就是由無數個區域網路,經過路由器與廣域網路連起來的。
網路拓樸(topology)是設備之間連線的形狀:
| 拓樸 | 樣子 | 特性 |
|---|---|---|
| 匯流排(bus) | 所有設備接在同一條線上 | 早期乙太網路用同軸電纜這樣接;線斷了整段都不通 |
| 環狀(ring) | 設備連成一圈 | 訊號沿著環傳遞 |
| 星狀(star) | 每台設備各拉一條線到中央的交換器 | 今天的有線區域網路幾乎都是這樣;一條線壞了只影響一台 |
| 網狀(mesh) | 設備之間有多條路徑 | 網際網路的骨幹:一條路斷了還能繞路 |
乙太網路與 Wi-Fi:區域網路最常用的兩種技術。
- 乙太網路(Ethernet):用網路線連接。1973 年由 Robert Metcalfe 等人在全錄(Xerox)帕羅奧圖研究中心發展,1983 年通過成為 IEEE 802.3 標準。
- Wi-Fi:用無線電波連接,標準是 IEEE 802.11(第一版在 1997 年發布),後來不斷推出更快的版本。
不論有線或無線,資料都切成一個一個的訊框(frame)傳送,每個訊框都寫著來源與目的 MAC 位址。
MAC 位址與交換器
每張網路卡(有線或無線)都有一個 MAC 位址(Media Access Control address),長度 48 位元,寫成 6 組十六進位數字:
3c:22:fb:7a:10:5e (示意)
└──┬───┘
前 3 個位元組通常是製造商的代碼,後 3 個位元組由製造商編號
MAC 位址在出廠時就寫在網路卡上(作業系統可以改用別的值,例如手機為了隱私會在不同 Wi-Fi 使用隨機的 MAC 位址)。 它的用途是:在同一個區域網路裡,找到某一台設備。
交換器(switch)是區域網路的中心,每個埠接一台設備。它不需要事先設定,而是邊轉送邊學習:
- 訊框從某個埠進來,交換器記下「這個來源 MAC 在這個埠」,寫進 MAC 位址表。
- 查目的 MAC:表裡有,就只從那個埠送出;表裡沒有,就從其他所有埠送出(稱為泛洪,flooding)。
- 目的 MAC 是
ff:ff:ff:ff:ff:ff的訊框是廣播,一定送到所有埠。
早期的集線器(hub)不管目的地,每個訊框都送到所有埠,同一時間只能有一台在說話。交換器只送到需要的埠,多組設備可以同時傳送。
IP 位址與子網路遮罩
MAC 位址只在同一個區域網路裡有用。要跨越網路找到對方,靠的是 IP 位址。
IPv4 位址長度 32 位元,寫成 4 個 0~255 的十進位數字,例如 192.168.1.10。
一個 IP 位址分成兩部分:
- 網路部分:這台電腦在哪一個網路(像門牌的「路名」)
- 主機部分:這個網路裡的哪一台(像「門牌號碼」)
哪幾個位元算網路部分,由子網路遮罩(subnet mask)決定:遮罩是 1 的位元屬於網路部分,是 0 的屬於主機部分。
IP 位址 192.168.1.10 = 11000000.10101000.00000001.00001010
遮罩 255.255.255.0 = 11111111.11111111.11111111.00000000
AND 之後 192.168.1.0 = 11000000.10101000.00000001.00000000 ← 網路位址
遮罩也常寫成「斜線後面接 1 的個數」:255.255.255.0 就是 /24,所以這個網路寫成 192.168.1.0/24,
可以放 2⁸ = 256 個位址(扣掉網路位址 .0 與廣播位址 .255,實際可給電腦用的是 254 個)。
判斷同網段的方法:把自己的 IP 和對方的 IP 都和自己的遮罩做 AND(逐位元「兩個都是 1 才是 1」),得到的網路位址相同,就在同一個網段。
有些位址範圍有特別用途:
| 範圍 | 用途 |
|---|---|
10.0.0.0/8、172.16.0.0/12、192.168.0.0/16 |
私有位址(RFC 1918):只在組織或家庭內部使用,不能直接出現在網際網路上 |
192.0.2.0/24、198.51.100.0/24、203.0.113.0/24 |
保留給文件與教材當範例(RFC 5737),本課的「網際網路」位址都用這些 |
127.0.0.1 |
本機自己(loopback) |
用程式判斷是不是同一個網段
這段程式做的就是電腦每次送封包前的判斷。IP 位址拆成 4 段,每段和遮罩的同一段做 &(位元 AND)。遮罩是 255 的段原封不動保留,是 0 的段變成 0。看上方的格子:192.168.1.20 算出來的網路位址和自己相同,192.168.2.20 第 3 段不同,所以要交給預設閘道。
預設閘道、路由器、ARP、DHCP 與 NAT
同網段:電腦先在區域網路裡廣播一個 ARP(Address Resolution Protocol)詢問:「誰是 192.168.1.20?請告訴我你的 MAC。」 對方回覆自己的 MAC 位址後,電腦把訊框的目的 MAC 填上去,經交換器直接送到。
不同網段:電腦把封包交給預設閘道(default gateway),也就是同一個區域網路裡那台路由器的位址。 這時訊框的目的 MAC 是路由器的 MAC,但封包裡的目的 IP 仍然是最終的目的地。所以預設閘道一定要在自己的網段裡; 填了別的網段的位址,電腦根本無法把訊框交給它。
路由器(router)連接兩個以上的網路,每個介面各有一個 IP 位址。它收到封包後查路由表:
目的網段 送出介面
192.168.1.0/24 e0(接區域網路 1)
192.168.2.0/24 e1(接區域網路 2)
0.0.0.0/0 wan(預設路由:其他所有位址都往網際網路送)
| 設備 | 看哪一種位址 | 工作範圍 |
|---|---|---|
| 交換器 | MAC 位址 | 同一個區域網路之內 |
| 路由器 | IP 位址 | 網路與網路之間 |
DHCP(Dynamic Host Configuration Protocol,RFC 2131)讓電腦一連上網路就自動拿到 IP 位址、遮罩、預設閘道與 DNS 伺服器, 不用手動設定。過程是四個訊息:Discover(有沒有 DHCP 伺服器?)、Offer(這個位址給你用)、Request(我要用這個)、Ack(確認)。 家用路由器通常就內建 DHCP 伺服器。
NAT(Network Address Translation,網路位址轉譯):IPv4 位址只有 2³² 個(約 43 億個),不夠分給每一台設備。 負責全球位址分配的 IANA 在 2011 年 2 月把最後幾個大區塊分配給各區域的位址管理機構。 因此家裡與校園內部普遍使用私有位址,連到網際網路時,由路由器把來源位址換成自己對外的公開位址, 並在 NAT 表記下「哪一個內部位址與埠號對應哪一個對外埠號」,回應回來時再換回去。這樣一個公開位址就能讓很多台裝置同時上網。
想一想:交換器與 MAC 位址
一台剛開機的交換器(MAC 位址表是空的),收到電腦 A 送給電腦 C 的訊框,會怎麼做?
關於 MAC 位址與 IP 位址,哪一個說法正確?
想一想:IP 位址、遮罩與閘道
你的電腦 IP 是 192.168.10.37,遮罩 255.255.255.0。下列哪一個位址和你在同一個網段?
下面的程式模仿電腦計算網路位址(遮罩 255.255.255.192,也就是 /26),會印出什麼?
ip = [192, 168, 1, 70]
mask = [255, 255, 255, 192]
print([ip[i] & mask[i] for i in range(4)])
一台筆電可以印到同一間教室的印表機,但打不開任何網站,連用 IP 位址也連不到外面。它的設定是:IP 192.168.5.23、遮罩 255.255.255.0、預設閘道 192.168.50.1。最可能的原因是?
家裡有 5 台裝置透過同一台路由器上網。它們同時連到同一個網站時,網站伺服器看到的來源 IP 位址是?
重點整理
- 區域網路涵蓋一棟建築以內,廣域網路跨城市與國家,網際網路是許多網路互相連接而成;今天的有線區域網路多是以交換器為中心的星狀拓樸。
- 乙太網路(IEEE 802.3)用網路線、Wi-Fi(IEEE 802.11)用無線電波,資料都以訊框傳送,訊框上有來源與目的 MAC 位址(48 位元)。
- 交換器從來源 MAC 學習位址表;認得目的 MAC 只從一個埠送出,不認得或廣播就送到所有埠。
- IPv4 位址 32 位元,子網路遮罩劃分網路部分與主機部分;IP 和遮罩做 AND 得到網路位址,相同就是同網段。
- 同網段用 ARP 問到 MAC 後直接送;不同網段交給預設閘道,閘道必須在自己的網段裡。路由器依 IP 位址查路由表,在網路之間轉送。
- DHCP 自動分配 IP、遮罩、閘道;NAT 讓使用私有位址的多台裝置共用一個公開位址上網。
下一課看封包本身:資料怎麼一層一層包上 TCP、IP、乙太網路的標頭,TCP 怎麼確保資料完整送到。