網路基礎與分層模型#

網路協定是計算機之間溝通的「語言」。就像人類需要共同的語言才能交流,計算機需要共同的協定才能傳輸資料。

為什麼需要網路協定#

一段程式碼能讓一台計算機工作,但要讓一大片機器協同工作,就需要網路協定。網路協定使得全球數十億設備能夠互聯互通,構建起互聯網世界。

協定三要素#

任何協定都包含三個基本要素:

要素說明範例 (HTTP)
語法資料格式和結構規範狀態行、首部、正文的固定格式
語義內容的含義約定200 表示成功,404 表示找不到
順序操作的先後次序先發請求,後收回應

網路分層模型#

複雜的系統都需要分層,網路也不例外。分層讓每一層專注於自己的職責,降低複雜度。

TCP/IP 四層模型#

實際工作中最常用的是 TCP/IP 四層模型:

┌─────────────────────────────────────────┐
│  應用層 (Application)                    │  HTTP, DNS, FTP, SSH
├─────────────────────────────────────────┤
│  傳輸層 (Transport)                      │  TCP, UDP
├─────────────────────────────────────────┤
│  網路層 (Network)                        │  IP, ICMP, 路由協定
├─────────────────────────────────────────┤
│  網路接口層 (Network Interface)          │  MAC, ARP, 乙太網路
└─────────────────────────────────────────┘

層層封裝的核心概念#

網路上傳輸的包都是完整的。可以有下層沒上層,絕對不可能有上層沒下層。

資料在發送時,從上往下逐層添加頭部(封裝);接收時,從下往上逐層剝離頭部(解封裝):

發送方                              接收方
┌──────────┐                      ┌──────────┐
│ HTTP 資料 │                      │ HTTP 資料 │
├──────────┤                      ├──────────┤
│TCP│ 資料  │                      │TCP│ 資料  │
├──────────┤       網路傳輸       ├──────────┤
│IP │TCP│資料│  ──────────────→   │IP │TCP│資料│
├──────────┤                      ├──────────┤
│MAC│IP│TCP│資料│                  │MAC│IP│TCP│資料│
└──────────┘                      └──────────┘

TCP 三次握手時,IP 層和 MAC 層在做什麼?答案是:每發一個 TCP 包,IP 層和 MAC 層都要完整運作一遍。沒有 MAC 和 IP 頭,包根本發不出去。

二層設備與三層設備#

所謂「幾層設備」,是指該設備處理到哪一層:

  • 二層設備(交換機):只看 MAC 頭,決定轉發、丟棄或自己處理
  • 三層設備(路由器):剝掉 MAC 頭後,再看 IP 頭做決策

無論經過幾層設備,網路包本身始終是完整的(包含所有層的頭部)。

IP 地址基礎#

查看 IP 地址#

# Linux
ip addr       # 推薦,iproute2 工具包
ifconfig      # 傳統方式,net-tools 工具包

# Windows
ipconfig
ip addr 輸出範例
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP
    link/ether fa:16:3e:c7:79:75 brd ff:ff:ff:ff:ff:ff
    inet 10.100.122.2/24 brd 10.100.122.255 scope global eth0
  • eth0: 網卡名稱
  • link/ether: MAC 地址
  • inet: IPv4 地址
  • /24: CIDR 表示法,表示前 24 位是網路號
  • brd: 廣播地址
  • mtu 1500: 最大傳輸單元(乙太網路默認值)

CIDR 表示法#

傳統的 A/B/C 類地址劃分已經過時,現在普遍使用 CIDR(無類型域間選路)

10.100.122.2/24
     │         │
     │         └── 前 24 位是網路號,後 8 位是主機號
     └── IP 地址

計算方式:

項目計算方法範例 (10.100.122.2/24)
網路號IP AND 子網掩碼10.100.122.0
子網掩碼前 N 位全 1,後面全 0255.255.255.0
廣播地址網路號 + 主機位全 110.100.122.255
可用主機數2^(32-N) - 2254

/24 對應子網掩碼 255.255.255.0,最多 254 台主機;/16 對應 255.255.0.0,最多約 65534 台主機。

公有 IP 與私有 IP#

類型範圍用途
私有 IP10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16內網使用,可重複
公有 IP除私有 IP 外的地址互聯網使用,全球唯一

私有 IP 就像小區內的門牌號,不同小區可以重複;公有 IP 就像國家統一分配的街道地址,不能重複。

MAC 地址#

MAC 地址是網卡的物理地址,6 個字節,用十六進制表示(如 fa:16:3e:c7:79:75)。

IP 地址 vs MAC 地址#

特性IP 地址MAC 地址
類比門牌號碼身份證號碼
功能定位,指明目的地標識,區分不同網卡
範圍跨網路有效僅在本地網路有效
是否可變可組態出廠固定(可軟體修改)

IP 地址用於跨網路的路由定位,就像快遞地址;MAC 地址用於本地網路內的設備識別,就像收件人姓名。到了目標網路後,通過 MAC 地址找到具體的機器。

一個完整的網路請求過程#

以訪問電商網站為例,串聯所有協定:

  1. DNS 解析:將域名轉換為 IP 地址
  2. 應用層:瀏覽器構建 HTTP/HTTPS 請求
  3. 傳輸層:TCP 封裝,添加源/目標埠號
  4. 網路層:IP 封裝,添加源/目標 IP 地址
  5. 網路接口層:ARP 獲取網關 MAC 地址,封裝成乙太網路幀
  6. 物理傳輸:通過網關、路由器層層轉發
  7. 目標伺服器:逐層解封裝,處理請求,返回回應
瀏覽器 → DNS → TCP → IP → MAC → 網關 → ... → 目標伺服器
                                    │
                              路由器層層轉發

本章小結#

  • 協定三要素:語法、語義、順序
  • 分層模型:TCP/IP 四層,每層各司其職
  • 核心原則:網路包必須完整,有上層必有下層
  • IP 地址:用於跨網路定位,CIDR 表示網路劃分
  • MAC 地址:用於本地網路識別,範圍有限