IP 位址是什麼意思:格式、分類與作用
IP 位址是網路裡每個介面的“門牌號”:IPv4 位址由 32 位二進位制組成,寫成 192.168.1.10 這樣的 4 段十進位制;前一部分(網路位)表示在哪個網段,後一部分(主機位)表示網段裡的哪一台。路由器只看網路位決定往哪送,到了目標網段,再靠 MAC 位址交到具體的網路卡。
IP 位址是什麼意思:IP 位址(Internet Protocol Address)是網路層給每個網路介面分配的數字位址,資料包靠它從一台裝置送到另一台裝置。目前最常用的 IPv4 位址由 32 位二進位制組成,為了方便閱讀,寫成 4 段 0 到 255 的十進位制數,中間用點隔開,例如 192.168.1.10。一個位址分成兩部分:前面的網路位說明它在哪個網段,後面的主機位說明它是網段裡的哪一台,分界線由子網掩碼決定。IP 位址的作用可以概括成兩點:標識這個介面是誰,以及讓路由器知道資料包該往哪裡送。IPv6 位址是 128 位,寫法和規則另成一套,本文以 IPv4 為主。
點分十進位制:32 位二進位制怎麼寫成 192.168.1.10
計算機裡的 IPv4 位址就是一串 32 位的二進位制數。按 8 位一段切成 4 段,每段換算成 0 到 255 的十進位制,就得到點分十進位制寫法。每一位的權重從左到右依次是 128、64、32、16、8、4、2、1,以 192.168.1.10 為例:
| 段 | 十進位制 | 拆成 2 的冪 | 二進位制 |
|---|---|---|---|
| 第 1 段 | 192 | 128 + 64 | 11000000 |
| 第 2 段 | 168 | 128 + 32 + 8 | 10101000 |
| 第 3 段 | 1 | 1 | 00000001 |
| 第 4 段 | 10 | 8 + 2 | 00001010 |
32 位一共能表示 2^32 = 4,294,967,296 個位址,約 43 億。扣掉私網、組播、保留等特殊用途的位址,能分到網際網路上使用的更少,這就是 IPv4 位址稀缺、需要 IPv6 的根本原因。
點分十進位制有幾種看起來像、實際不對的寫法,錄台帳和寫指令碼時要特別注意:
| 寫法 | 是否合法 | 說明 |
|---|---|---|
| 192.168.1.10 | 合法 | 標準寫法 |
| 192.168.1.256 | 不合法 | 每段最大 255 |
| 192.168.010.1 | 有歧義 | 很多系統把 0 開頭的段當八進位制,010 被讀成 8 |
| 192.168.1 | 不規範 | 部分程式把它補成 192.168.0.1 |
| 3232235786 | 能被部分程式接受 | 32 位整數寫法,等於 192.168.1.10 |
第三行不是理論問題,在 Windows 和 Linux 上都能復現:
C:\> ping 192.168.010.1
正在 Ping 192.168.8.1 具有 32 位元組的資料:
$ ping 192.168.010.1
PING 192.168.010.1 (192.168.8.1) 56(84) bytes of data.
Python 的 ipaddress 模組從 3.9.5 起直接拒絕帶前導零的寫法,更早的版本則把 010 當成十進位制的 10。同一個字串,不同工具、甚至同一工具的不同版本理解都不同,所以台帳、配置和工單裡一律寫不帶前導零的標準形式。
網路位和主機位:掩碼劃出“哪個網段、哪一台”
光有位址還不夠,還要知道哪幾位是網路位。子網掩碼就是幹這個的:掩碼裡為 1 的位是網路位,為 0 的位是主機位。把位址和掩碼按位相與,得到的就是網路位址:
位址 192.168.1.10 11000000.10101000.00000001.00001010
掩碼 255.255.255.0 11111111.11111111.11111111.00000000
按位與 192.168.1.0 11000000.10101000.00000001.00000000 ← 網路位址
這裡前 24 位是網路位,寫成 192.168.1.10/24;最後 8 位的 10 是主機位,表示這個網段裡的第 10 號主機。每個網段裡有兩個位址不能分給裝置:主機位全為 0 的網路位址(192.168.1.0),和主機位全為 1 的廣播位址(192.168.1.255),所以一個 /24 能用的是 254 個。
網路位決定了一台主機怎麼發包。假設本機是 192.168.1.10/24,閘道器是 192.168.1.1:
| 目標位址 | 和本機同網段嗎 | 本機怎麼發 |
|---|---|---|
| 192.168.1.20 | 是,網路位都是 192.168.1 | 用 ARP 查出 .20 的 MAC,直接發給它 |
| 192.168.2.20 | 否 | 發給閘道器 192.168.1.1,由閘道器轉發 |
| 114.114.114.114 | 否 | 同樣交給閘道器 |
在 Linux 上可以直接問系統會怎麼走:
$ ip route get 192.168.1.20
192.168.1.20 dev eth0 src 192.168.1.10
$ ip route get 192.168.2.20
192.168.2.20 via 192.168.1.1 dev eth0 src 192.168.1.10
第一條沒有 via,說明直接投遞;第二條 via 後面是閘道器。Windows 上對應的命令是 PowerShell 的 Find-NetRoute -RemoteIPAddress 192.168.2.20。新人常見的故障“同網段能通、跨網段不通”,多半是閘道器沒填或填錯;“明明同網段卻不通”,先核對兩邊的掩碼是否一致。
A、B、C 類位址和私有位址範圍
早期的 IPv4 按位址開頭的幾位二進位制分成五類,網路位的長度由類別決定:
| 類別 | 首位元組二進位制開頭 | 首位元組範圍 | 預設網路位 | 用途 |
|---|---|---|---|---|
| A 類 | 0 | 0–127 | 8 位(255.0.0.0) | 大型網路;0 和 127 開頭的有特殊用途 |
| B 類 | 10 | 128–191 | 16 位(255.255.0.0) | 中型網路 |
| C 類 | 110 | 192–223 | 24 位(255.255.255.0) | 小型網路 |
| D 類 | 1110 | 224–239 | — | 組播 |
| E 類 | 1111 | 240–255 | — | 保留 |
1993 年起,網際網路改用 CIDR,網路位長度不再由類別決定,103 開頭的位址照樣可以按 /24 甚至更小的塊分配。今天類別只留下兩處痕跡:口語裡的“C 段”(指一個 /24),以及部分作業系統在你輸入位址後按類別自動填寫的預設掩碼,後者常常不是你該用的值。
私有位址是 RFC 1918 從 A、B、C 類裡各劃出的一塊,任何單位都可以在內部重複使用,但不能直接在網際網路上路由,存取外網要經過 NAT 轉換成公網位址:
| 私有位址範圍 | CIDR 寫法 | 相當於 | 位址數 |
|---|---|---|---|
| 10.0.0.0 – 10.255.255.255 | 10.0.0.0/8 | 1 個 A 類網路 | 16,777,216 |
| 172.16.0.0 – 172.31.255.255 | 172.16.0.0/12 | 16 個 B 類網路 | 1,048,576 |
| 192.168.0.0 – 192.168.255.255 | 192.168.0.0/16 | 256 個 C 類網路 | 65,536 |
另外幾個維運中經常遇到的特殊位址:
| 位址 | 含義 | 什麼時候會碰到 |
|---|---|---|
| 127.0.0.0/8 | 環回,指本機 | 測試本機服務 |
| 0.0.0.0 | 未指定;在監聽配置裡表示“本機所有位址” | ss -tln 裡看到 0.0.0.0:80,表示所有網路卡都在監聽 80 連接埠 |
| 169.254.0.0/16 | 鏈路本地,系統自動配置 | 網路卡顯示這個位址,說明沒從 DHCP 拿到位址 |
| 100.64.0.0/10 | 運營商級 NAT 的共享位址 | 寬頻拿到的不是真正的公網 IP |
| 255.255.255.255 | 本網段受限廣播 | DHCP 客戶端找伺服器時發出的報文 |
| 224.0.0.0/4 | 組播 | VRRP、OSPF 等協議的報文 |
IP 位址、域名、MAC 位址是什麼關係
三者都是“位址”,但工作在不同層次,各管一段:
| 對比項 | 域名 | IP 位址 | MAC 位址 |
|---|---|---|---|
| 例子 | www.example.com |
203.0.113.30 | 00:00:5e:00:53:30 |
| 所在層次 | 應用層(DNS) | 網路層 | 資料鏈路層 |
| 作用 | 給人記的名字 | 跨網路定址和路由 | 在同一網段內把幀交給具體網路卡 |
| 誰來分配 | 向註冊商註冊,自己設定解析 | 運營商、機房分配,或由 DHCP 下發 | 網路卡出廠時寫入,可以修改 |
| 怎麼轉換 | DNS 解析成 IP | ARP 解析成 MAC | — |
| 傳輸途中是否變化 | — | 源、目的位址一路不變,經過 NAT 時除外 | 每經過一個路由器就換一次 |
用一次網頁存取把三者串起來,本機仍是 192.168.1.10/24:
- 瀏覽器先做 DNS 解析,得到
www.example.com的 IP,比如 203.0.113.30,用dig +short www.example.com或nslookup www.example.com可以看到這一步的結果。 - 本機比較網路位,發現 203.0.113.30 不在 192.168.1.0/24 裡,決定交給閘道器。
- 本機用 ARP 查出閘道器 192.168.1.1 的 MAC,已在快取裡就直接用。
- 發出的幀裡,目的 MAC 是閘道器的,目的 IP 是 203.0.113.30。
- 每經過一個路由器,二層頭被拆掉重新封裝,MAC 換成下一跳的;IP 頭裡的目的位址始終是 203.0.113.30。
- 最後一個路由器在伺服器所在的網段裡用 ARP 找到伺服器的 MAC,把包交過去。
三者之間也不是一一對應:一個域名可以解析出多個 IP(負載均衡、CDN),一個 IP 上可以承載多個域名(虛擬主機),一塊網路卡通常只有一個 MAC,卻可以配多個 IP。
IP 位址是根據什麼定位的
IP 位址本身不含任何地理資訊,“IP 定位”是查資料庫得出的結果。定位資料庫的資料主要來自幾個方面:
| 資料來源 | 能提供什麼 | 精度 |
|---|---|---|
| 位址註冊資訊(whois) | 位址段由哪個機構持有、登記在哪個國家或地區 | 通常到國家,有時到省 |
| 路由宣告(BGP) | 這段位址由哪個運營商在網際網路上宣告 | 到運營商 |
| 網路測量 | 從多個已知位置測延遲、看路由路徑,推算大致位置 | 取決於探測點的密度 |
| 應用和合作方提供的定位樣本 | 已知位置與當時所用 IP 的對應關係 | 取決於樣本數量,會隨位址重新分配而過時 |
所以 IP 定位常見這幾種偏差:手機網路的出口集中,顯示的城市可能是省會或別的城市;雲伺服器、CDN 節點顯示的是機房所在地,而不是使用者所在地;註冊地與實際使用地不一致的位址,會被一些庫識別成註冊地;走代理或 VPN 時,看到的是代理出口的位置。想知道一個位址登記在誰名下,用 whois 查:
whois 203.0.113.30
# APNIC、RIPE 的記錄重點看 inetnum(位址範圍)、netname、descr(持有機構)、country(登記國家)幾行
# ARIN 的記錄欄位名不同,對應 NetRange、NetName、OrgName、Country
IP 位址在哪裡檢視
| 想查什麼 | Windows | Linux | 說明 |
|---|---|---|---|
| 本機網路卡上的位址 | ipconfig |
ip -4 addr |
家裡和辦公室看到的多是私網位址 |
| 掩碼和閘道器 | ipconfig |
ip route,default via 後面是閘道器 |
掩碼在 Linux 上以 /24 這樣的字首長度顯示 |
| 出口公網 IP | curl.exe -4 ifconfig.me |
curl -4 ifconfig.me |
網際網路上別人看到的位址 |
手機在 Wi-Fi 設定裡點開當前網路的詳情就能看到本機位址。本機位址和出口位址不一樣,說明中間有路由器或運營商做了位址轉換,這在家庭寬頻和辦公網裡是常態;機房伺服器配的通常就是公網 IP,兩者一致。
機房裡一台伺服器會用到哪些 IP
新入行的維運很快會發現,一台託管伺服器身上不止一個位址:
| 位址 | 例子 | 配在哪裡 | 誰能存取 |
|---|---|---|---|
| 業務公網 IP | 203.0.113.30/26 | 伺服器的業務網路卡 | 網際網路 |
| 閘道器 | 203.0.113.1 | 三層交換器的 VLAN 介面 | 同網段的伺服器 |
| IPMI 管理 IP | 10.20.0.15/24 | 伺服器的 BMC 管理口 | 只有機房管理網 |
| 內網 IP | 10.30.1.15/24 | 伺服器的第二塊網路卡 | 同機房內網 |
| 交換器管理 IP | 10.10.0.2/24 | 交換器的管理介面 | 只有維運 |
這些位址分屬不同的段、不同的用途,一個記錯就是一次故障:業務 IP 重複分配會衝突,IPMI 位址落進公網段會暴露管理口。Toplink DCIM 的 IP 位址管理按 CIDR 錄入位址段,自動算出起止位址和子網掩碼,閘道器可選段內第一個或最後一個位址;每個段可以標記為公網 IP、IPMI、客戶內網、內網 IP、臨時 IP 等型別,分別統計和分配。開通伺服器時從可用段自動取址,下架或退訂時把位址設為空閒即可回收,哪個位址在哪台機器上,一查便知。
常見問題
IP 位址會變嗎?
看分配方式。家庭寬頻的出口位址多數是動態分配的,重新撥號或光貓重啟後就可能變;家裡和辦公室的私網位址由路由器的 DHCP 下發,也可能變。機房伺服器的位址是靜態分配的,不主動變更就不會變,所以對外服務、讓對方加白名單都要用伺服器的固定位址。
IP 位址和連接埠是什麼關係?
IP 位址找到主機,連接埠找到主機上的某個程式,取值範圍是 0–65535。一條 TCP 連線由源 IP、源連接埠、目的 IP、目的連接埠共同確定,例如 SSH 預設用 22 連接埠,HTTPS 預設用 443 連接埠。
知道一個 IP 位址,能查到具體是誰嗎?
單憑公開資訊查不到。公開的 IP 定位庫只能給出大致的國家、省市和運營商;某個時刻由哪位使用者使用,只有分配位址的運營商或機房有記錄,這些記錄不對外公開。家庭寬頻和手機網路還普遍使用位址轉換,同一個公網 IP 背後可能有很多使用者。