SheepDev

IP與網路計算

紀錄中的大整數是 IP 位址嗎?

使用工具

日誌或資料庫欄位可能存大整數而非點分 IP。它可能是裝置編號,也可能是 IPv4 的三十二位元整數。工具可在本機檢查表示,不查詢網路;但應先確認欄位定義,不能把所有大整數當位址。

將整數轉回 IPv4 並反查

用於往返的三種表示
3221225994
192.0.2.10
0xc000020a

數值輸入選擇 IPv4,輸入 3221225994 得 192.0.2.10。再輸入該位址得到同一整數與 0xc000020a,帶 0x 的十六進位也能轉回。往返一致可確認該次轉換未丟位數。

這些是計算範例,不檢查主機或擁有者。轉出像位址的結果不證明它是真實存取來源,應結合產生日誌系統的欄位含義與編碼判斷。

把四段看作以 256 為底的位

192.0.2.10 的整數值
192 × 256³ + 0 × 256² + 2 × 256 + 10
= 3221225994
bytes: c0 00 02 0a

IPv4 每段是一位元組的 0~255。工具把左段放高位,不是把字串拼成 1920210。十六進位每位元組兩位,c0、00、02、0a 易於對應原四段。

自訂打包格式或無分隔縮寫不一定遵循該規則。轉換成功的前提是明確來源資料為無符號整數、四個位元組還是文字。先知道型別,才能區分表示與算術問題。

整數 1 不能決定位址族

同一整數按兩種位址族解讀
1 → 0.0.0.1 (IPv4)
1 → ::1 (IPv6)
4294967295 → 255.255.255.255 (IPv4)

解碼需位址族:1 在 IPv4 為 0.0.0.1,在 IPv6 為 ::1。只把大數當 IPv6 會誤讀小值 IPv6。應保留日誌中的族資訊,整數不能恢復遺失的中繼資料。

IPv4 上限 4294967295,4294967296 會被拒絕。IPv6 為一百二十八位元,中間軟體轉為浮點可能丟末位。應以精確數字字串傳遞並往返核對,不用捨入科學記號顯示替代位址。

結果像位址卻不符時,檢查位元組順序

位元組順序反轉範例
c0 00 02 0a → 192.0.2.10
0a 02 00 c0 → 10.2.0.192
0x0a0200c0 = 167903424

原始記憶體或二進位檔案涉及儲存位元組順序,反轉四位元組會變為另一位址。工具不自動偵測來源順序。應查產生程式規範或已知紀錄,而不是換到看起來合理。

負數 IPv4 可能來自有符號三十二位元解讀,但工具不自動修正負數。僅確認來源型別後再處理符號;負數也可能是錯誤碼,不要強行全部轉位址。

能轉換不代表能通訊

轉出後可用 IP/CIDR 比較檢查包含關係,但兩者都不查 DNS、不連連接埠、不推斷位置。有效表示、屬於範圍、實際可達是不同檢查。

記錄原整數、位址族、轉換結果與反查是否一致。位元組順序或符號未知就註明未知。可讀位址有助核對日誌,但外觀不能補足來源定義缺失。

參考資料

使用工具

指南 →