コンテンツへスキップ
uencoder

IP アドレスをパースする方法

IPv4 と IPv6 アドレスをパース・検証し、情報を抽出します。

问题

IP アドレスを検証し、その種類(IPv4、IPv6、プライベート、ループバック)を判定する必要があります。

前提条件

  • IPv4 と IPv6 の形式の理解
  • アドレス範囲に関する知識

ステップ

  1. 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. 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. 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).

関連ツール

参考链接