IP アドレスをパースする方法
IPv4 と IPv6 アドレスをパース・検証し、情報を抽出します。
问题
IP アドレスを検証し、その種類(IPv4、IPv6、プライベート、ループバック)を判定する必要があります。
前提条件
- IPv4 と IPv6 の形式の理解
- アドレス範囲に関する知識
ステップ
-
1. Determine the IP version
IPv4 addresses are four decimal octets separated by dots (192.168.1.1). IPv6 addresses are eight hex groups separated by colons (2001:db8::1), with zero compression (::) for consecutive zero groups. Detect the format to parse correctly.
入力192.168.1.1输出IPv4 -
2. Validate and parse
Check that each IPv4 octet is 0-255 and each IPv6 group is 0000-ffff. Handle IPv6 shorthand (:: compression, embedded IPv4 in ::ffff:a.b.c.d format). Reject invalid addresses. Parse into a binary representation for comparison.
入力2001:db8::1输出valid IPv6 -
3. Classify the address
Determine the address type: private (10.x, 172.16-31.x, 192.168.x for IPv4; fc00::/7 for IPv6), loopback (127.0.0.1, ::1), link-local (169.254.x, fe80::/10), or public. This classification is useful for security and routing decisions.
入力192.168.1.1输出private (RFC 1918)
期待される結果
バージョンと分類が判別された、検証済みのパース済み IP アドレス。
よくあるエラー
- IPv6 compression not handled
- Expand :: to the correct number of zero groups before parsing. The :: can appear at most once in an address.
- Leading zeros in IPv4 octets
- Some systems interpret leading zeros as octal (010 → 8). Reject or normalize addresses with leading zeros to avoid ambiguity.
トラブルシューティング指引
- If an address fails validation, check for extra whitespace, wrong separator, or out-of-range values.
- IPv4-mapped IPv6 addresses (::ffff:192.0.2.1) represent IPv4 in IPv6 format.
セキュリティ上の制限
- IP address classification helps identify internal vs external traffic. Do not rely solely on IP for authentication (IP spoofing is possible).