網路基礎與分層模型#
網路協定是計算機之間溝通的「語言」。就像人類需要共同的語言才能交流,計算機需要共同的協定才能傳輸資料。
為什麼需要網路協定#
一段程式碼能讓一台計算機工作,但要讓一大片機器協同工作,就需要網路協定。網路協定使得全球數十億設備能夠互聯互通,構建起互聯網世界。
協定三要素#
任何協定都包含三個基本要素:
| 要素 | 說明 | 範例 (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
ipconfigip 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 eth0eth0: 網卡名稱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,後面全 0 | 255.255.255.0 |
| 廣播地址 | 網路號 + 主機位全 1 | 10.100.122.255 |
| 可用主機數 | 2^(32-N) - 2 | 254 |
/24對應子網掩碼255.255.255.0,最多 254 台主機;/16對應255.255.0.0,最多約 65534 台主機。
公有 IP 與私有 IP#
| 類型 | 範圍 | 用途 |
|---|---|---|
| 私有 IP | 10.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 地址找到具體的機器。
一個完整的網路請求過程#
以訪問電商網站為例,串聯所有協定:
- DNS 解析:將域名轉換為 IP 地址
- 應用層:瀏覽器構建 HTTP/HTTPS 請求
- 傳輸層:TCP 封裝,添加源/目標埠號
- 網路層:IP 封裝,添加源/目標 IP 地址
- 網路接口層:ARP 獲取網關 MAC 地址,封裝成乙太網路幀
- 物理傳輸:通過網關、路由器層層轉發
- 目標伺服器:逐層解封裝,處理請求,返回回應
瀏覽器 → DNS → TCP → IP → MAC → 網關 → ... → 目標伺服器
│
路由器層層轉發本章小結#
- 協定三要素:語法、語義、順序
- 分層模型:TCP/IP 四層,每層各司其職
- 核心原則:網路包必須完整,有上層必有下層
- IP 地址:用於跨網路定位,CIDR 表示網路劃分
- MAC 地址:用於本地網路識別,範圍有限