How to Parse IP Addresses
Parse, validate, and extract information from IPv4 and IPv6 addresses.
Problem
You need to validate an IP address and determine its type (IPv4, IPv6, private, loopback).
Prerequisites
- Understanding of IPv4 and IPv6 formats
- Knowledge of address ranges
Steps
-
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.
Input192.168.1.1OutputIPv4 -
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.
Input2001:db8::1Outputvalid 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.
Input192.168.1.1Outputprivate (RFC 1918)
Expected result
A validated, parsed IP address with its version and classification.
Common errors
- 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.
Troubleshooting
- 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.
Security limits
- IP address classification helps identify internal vs external traffic. Do not rely solely on IP for authentication (IP spoofing is possible).
Related tools
Related tasks
Ready to run it?