IP Address Reference Guide

A technically accurate reference covering IPv4 structure, address classes, CIDR notation, RFC 1918 private ranges, carrier-grade NAT, every special-use and DARPA-reserved block, and IPv6 essentials. Written for network engineers, sysadmins, and developers who want facts rather than oversimplifications.

What is an IP address?

An IP address (Internet Protocol address) is a numerical label assigned to every device that participates in a computer network using the Internet Protocol for communication. In IPv4 — the version that has run the internet since the early 1980s — an IP address is a 32-bit unsigned integer. It uniquely identifies a network interface at the network layer (Layer 3 in the OSI model), allowing packets to be routed from a source to a destination across any number of intermediate networks.

Because 32-bit binary strings like 11000000101010000000000000000001 are impractical for humans, IPv4 addresses are written in dotted-decimal notation: the 32 bits are split into four 8-bit groups (octets), each converted to decimal and separated by dots. The example above becomes 192.168.0.1.

An IP address serves two functions: identifying the host (or more precisely, the network interface) and providing location information that routing protocols use to forward packets toward the destination. These two functions are sometimes in tension — a motivation for the design of IPv6, which separates them more cleanly through its address architecture.

IPv4 address structure

Every IPv4 address is exactly 32 bits — four octets of 8 bits each, giving a theoretical address space of 2³² = 4,294,967,296 addresses. In practice, large portions of this space are reserved, private, or otherwise not publicly routable, leaving considerably fewer usable public addresses.

Network portion vs host portion

Every IP address is divided into two logical parts by a subnet mask (or CIDR prefix length):

  • Network portion — the leading bits, identical for all hosts on the same subnet. Determined by the subnet mask.
  • Host portion — the trailing bits, unique per device within the subnet.

For example, in the address 192.168.10.45/24, the first 24 bits (192.168.10) are the network, and the last 8 bits (.45) are the host identifier within that network.

Why 0 and 255 are special within a subnet

Within any subnet, two addresses are not assignable to hosts by convention:

  • Network address — the address with all host bits set to 0 (e.g., 192.168.10.0 in a /24). Identifies the subnet itself and is used in routing table entries.
  • Broadcast address — the address with all host bits set to 1 (e.g., 192.168.10.255 in a /24). Packets sent to this address are delivered to every host on the subnet.

A /24 therefore has 256 total addresses, 254 usable host addresses, one network address, and one broadcast address. This logic applies at any prefix length: a /30 has 4 addresses, 2 usable — the minimal building block for a point-to-point link.

Binary representation

Understanding the binary form is essential for subnetting. Each octet ranges from 0 to 255 (2⁸ − 1). The subnet mask is a contiguous run of 1-bits followed by 0-bits. A /24 mask in binary is:

11111111.11111111.11111111.00000000     = 255.255.255.0

The bitwise AND of an IP address with its subnet mask always produces the network address. This is the fundamental operation that routers and hosts use to determine whether a destination is on-link (same subnet) or off-link (requires routing through a gateway).

IP address classes (classful routing)

Before CIDR was standardized in 1993, the internet used classful routing, where an address’s class was determined by its leading bits. The class implied a fixed network/host boundary without needing a separate mask.

ClassFirst octet rangeDefault maskNetworksHosts per network
A0 – 127/8 (255.0.0.0)12816,777,214
B128 – 191/16 (255.255.0.0)16,38465,534
C192 – 223/24 (255.255.255.0)2,097,152254
D224 – 239N/AN/AMulticast groups
E240 – 255N/AN/AReserved / DARPA

Class A networks handed enormous blocks (16 million+ addresses) to a small number of organizations — early internet players like MIT, Apple, and the US Department of Defense each received Class A allocations. This proved profoundly wasteful. Class B blocks went to universities and corporations. Class C allocations (254 hosts each) were assigned to smaller organizations but became inconvenient when an organization needed more than 254 hosts and had to manage multiple non-contiguous Class C blocks.

Class D (224–239) is reserved for IP multicast. Multicast allows a single packet to be delivered efficiently to a group of receivers — used by protocols like OSPF (which uses 224.0.0.5 and 224.0.0.6), PIM, and streaming applications.

Class E (240–255) was designated “reserved for future use” by DARPA. It has never been allocated for general internet use. Some proposals to repurpose this space as public unicast addresses have been floated during the IPv4 exhaustion crisis, but none have achieved broad adoption because many network stacks and firewalls still drop Class E packets.

Classful routing is largely obsolete — replaced by CIDR in RFC 1519 (1993) and now RFC 4632. However, the class boundaries still appear in vendor documentation, firewall rule names, legacy tools, and conversations, so understanding them remains useful.

CIDR notation

CIDR (Classless Inter-Domain Routing, RFC 4632) replaced classful routing by allowing the network/host boundary to fall at any bit position, not just at octet boundaries. A CIDR address is written as an IP address followed by a slash and a prefix length: 10.0.0.0/8.

Prefix length and subnet mask

The prefix length (the number after the slash) is the count of leading 1-bits in the subnet mask. Common masks:

PrefixSubnet maskTotal addressesUsable hosts
/8255.0.0.016,777,21616,777,214
/16255.255.0.065,53665,534
/24255.255.255.0256254
/25255.255.255.128128126
/26255.255.255.1926462
/27255.255.255.2243230
/28255.255.255.2401614
/29255.255.255.24886
/30255.255.255.25242
/31255.255.255.25422 (point-to-point, RFC 3021)
/32255.255.255.2551Single host

Subnetting vs supernetting

Subnetting splits a larger block into smaller ones by lengthening the prefix. Taking a /24 and creating two /25s divides the address space into two equal halves of 128 addresses each — useful for separating VLANs or departments.

Supernetting (also called route aggregation or summarization) combines multiple contiguous blocks into a single shorter-prefix entry. Combining eight /24 networks into one /21 reduces the number of routing table entries that upstream routers must maintain. This was the primary motivation for CIDR: the 1990s internet routing table was growing explosively because every organization had separately announced Class C allocations. CIDR aggregation dramatically slowed that growth.

Calculate any subnet instantly

Enter a CIDR block to get network address, broadcast address, host range, wildcard mask, and total host count — with IPv6 support.

Use the subnet calculator →

Private IP addresses — RFC 1918

RFC 1918 (Address Allocation for Private Internets, 1996) defines three IPv4 address blocks reserved for use within private networks. These addresses are non-routable on the public internet — routers operated by ISPs and internet exchanges are configured to drop packets sourced from or destined to these ranges. They exist to allow organizations to build internal networks without consuming globally unique address space.

The mechanism that makes private addressing practical at internet scale is NAT (Network Address Translation). A NAT device (typically a home router or corporate firewall) maintains a translation table that maps internal private addresses to a single public IP for outbound connections, and demultiplexes return traffic back to the correct internal host. Without NAT, the IPv4 address pool would have been exhausted far sooner.

10.0.0.0/8Class A private (10.x.x.x)16,777,216 addresses

The largest RFC 1918 block. Covers the entire 10.0.0.0 – 10.255.255.255 range. Commonly used in enterprise networks, data centers, and cloud VPCs where a large flat address space is needed. A single /8 is large enough to accommodate even very large organizations without subnetting into multiple RFC 1918 ranges.

172.16.0.0/12Class B private (172.16.x.x – 172.31.x.x)1,048,576 addresses

Covers 172.16.0.0 through 172.31.255.255 — 16 contiguous /16 blocks. Less commonly encountered in consumer devices but widely used in corporate networks and as the default range for Docker's internal bridge networks. The /12 boundary falls in the middle of the second octet, which trips up administrators who assume RFC 1918 only covers the 172.16.x.x–172.16.255.255 range — the full block extends to 172.31.255.255.

192.168.0.0/16Class C private (192.168.x.x)65,536 addresses

The most familiar private range for anyone who has looked at home network settings. 192.168.0.1 and 192.168.1.1 are the default gateway addresses on the vast majority of consumer routers worldwide. Covers 192.168.0.0 through 192.168.255.255. The small size (65,536 addresses) makes it impractical for large enterprise deployments, but it is entirely sufficient for home and small-office networks.

Important: RFC 1918 addresses can be reused across any number of separate private networks, because they are never advertised publicly. This is why your home router at 192.168.1.1 and every other home router at the same address don’t conflict — they live in isolated NAT bubbles.

CGNAT — RFC 6598 shared address space

As IPv4 addresses grew scarce, ISPs needed a way to share a single public IP among many customers without running NAT on customer-owned equipment. The solution, standardized in RFC 6598 (2012), is CGNAT (Carrier-Grade NAT), also called Large-Scale NAT (LSN) or shared address space.

RFC 6598 allocates 100.64.0.0/10 (covering 100.64.0.0 through 100.127.255.255, approximately 4 million addresses) specifically for use between an ISP’s CGNAT device and customer premises equipment. These addresses are:

  • Not routable on the public internet (ISPs must not forward them externally)
  • Not part of RFC 1918 (deliberately a separate range to avoid conflicts with customer-side NAT)
  • Not visible to the customer’s devices — the customer’s router receives a 100.64.x.x address from the ISP, but typically re-NATs it again before handing out RFC 1918 addresses to home devices

Why this matters in practice

  • Double NAT. If your router’s WAN IP is in the 100.64.0.0/10 range, you are behind double NAT — your ISP’s CGNAT device and your own router. Port forwarding rules set on your router will not work for inbound connections from the internet.
  • Gaming and VoIP. Some real-time protocols (UPnP, NAT-PMP, PCP) rely on being able to open ports on the first NAT layer. Double NAT breaks these unless the ISP supports PCP (Port Control Protocol) on their CGNAT device.
  • IP forensics. If you see 100.64.x.x as a traceroute hop, you are traversing your ISP’s CGNAT infrastructure.

Jamaica context. Flow and Digicel both deploy CGNAT on their residential broadband networks. If checkmiip.com shows a public IP that traces back to a Flow or Digicel ASN, that is the shared public IP your CGNAT device is using — not an address uniquely assigned to your household. If your router’s WAN interface shows a 100.64.x.x address (or a 10.x.x.x address assigned by the ISP), you are behind CGNAT.

Special-use and reserved ranges — full reference

The following table covers all IPv4 ranges that are not available for general public unicast allocation. Sources: IANA Special-Purpose Address Registry, individual RFCs.

RangeNamePurposeRFC
0.0.0.0/8"This" networkSource address before DHCP assignmentRFC 1122
10.0.0.0/8Private-ARFC 1918 private useRFC 1918
100.64.0.0/10Shared (CGNAT)ISP carrier-grade NATRFC 6598
127.0.0.0/8LoopbackLocal host testing (127.0.0.1)RFC 1122
169.254.0.0/16Link-local (APIPA)Auto-assigned when DHCP failsRFC 3927
172.16.0.0/12Private-BRFC 1918 private useRFC 1918
192.0.0.0/24IETF Protocol AssignmentsReserved for IETF protocol useRFC 6890
192.0.2.0/24TEST-NET-1Documentation examples onlyRFC 5737
192.88.99.0/246to4 RelayIPv6-to-IPv4 relay (deprecated)RFC 7526
192.168.0.0/16Private-CRFC 1918 private useRFC 1918
198.18.0.0/15BenchmarkingNetwork device performance testingRFC 2544
198.51.100.0/24TEST-NET-2Documentation examples onlyRFC 5737
203.0.113.0/24TEST-NET-3Documentation examples onlyRFC 5737
224.0.0.0/4MulticastOne-to-many group communicationRFC 1112
240.0.0.0/4Reserved / Class EDARPA research, not publicly routableRFC 1112
255.255.255.255/32Limited broadcastBroadcast to local network segmentRFC 919

TEST-NET ranges (192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24) are analogous to the reserved telephone numbers (555-xxxx) used in US films and TV. They exist so that documentation, RFCs, and textbooks can use real-looking IP addresses without risking that readers try to reach an actual host. Packets to these ranges must not appear on the public internet.

169.254.0.0/16 (APIPA / link-local) is assigned automatically by Windows and other operating systems when DHCP fails. Seeing a 169.254.x.x address on a network interface almost always means the DHCP server is unreachable — the interface failed to acquire a lease. These addresses are only valid on a single network segment and cannot be routed.

198.18.0.0/15 is reserved for network device benchmarking per RFC 2544. Traffic generators testing firewall or router throughput use source/destination addresses from this range so that the synthetic traffic cannot be confused with real user traffic in routing or logging systems.

Public IP addresses and IPv4 exhaustion

A public IP address is any IPv4 address not included in a special-use or private range — one that is globally unique and reachable from anywhere on the internet. The IANA (Internet Assigned Numbers Authority) is responsible for the global allocation of IP address space. IANA does not assign addresses directly to end users; instead, it allocates large blocks to five Regional Internet Registries (RIRs):

  • ARIN — North America
  • LACNIC — Latin America and the Caribbean (including Jamaica)
  • RIPE NCC — Europe, Middle East, and Central Asia
  • APNIC — Asia-Pacific
  • AFRINIC — Africa

RIRs in turn allocate address space to ISPs and large organizations within their regions, which assign smaller prefixes to end customers. This hierarchical model is what makes BGP route aggregation possible — each RIR’s allocations form contiguous supernets that can be announced with minimal routing table entries.

IPv4 exhaustion

The inevitable consequence of a 32-bit address space serving billions of devices:

  • 3 February 2011 — IANA allocated its last five /8 blocks to the five RIRs and declared its free pool exhausted.
  • September 2012 — RIPE NCC moved to its final /8 allocation policy (one /22 per new member).
  • 2014–2015 — ARIN exhausted its free pool and moved to a waiting list.
  • June 2020 — LACNIC exhausted Phase 4 of its exhaustion policy, making new allocations from LACNIC essentially unavailable for most organizations.

New IPv4 addresses are still available on the secondary market (brokers buy and sell address blocks), but prices have risen sharply — from under $10 per address in 2015 to over $50 per address by the mid-2020s.

For Jamaica and the Caribbean, this means ISPs like Flow and Digicel face real pressure on address supply. CGNAT is the primary mitigation for residential customers. IPv6 deployment — still patchy across Caribbean ISPs as of 2026 — is the only long-term solution.

IPv6 — the long-term solution

IPv6 (RFC 8200) addresses the exhaustion problem by expanding the address space from 32 bits to 128 bits — approximately 3.4 × 10³⁸ addresses, or roughly 340 undecillion. To put that in perspective, there are enough IPv6 addresses to assign a /48 subnet (65,536 /64 subnets, each with 18 quintillion addresses) to every person on earth and still not run out.

IPv6 addresses are written in eight groups of four hexadecimal digits, separated by colons: 2001:0db8:85a3:0000:0000:8a2e:0370:7334. Leading zeros within a group can be omitted, and one contiguous run of all-zero groups can be compressed to ::: 2001:db8:85a3::8a2e:370:7334.

Key IPv6 special ranges

RangeNameIPv4 equivalent
::1/128Loopback127.0.0.1
fe80::/10Link-local169.254.0.0/16
fc00::/7Unique local (ULA)RFC 1918 private
ff00::/8Multicast224.0.0.0/4
2001:db8::/32Documentation192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24
2000::/3Global unicast (public)Public IP addresses
64:ff9b::/96IPv4-mapped (NAT64)0.0.0.0/0 (via translation)

Unique local addresses (fc00::/7) behave like RFC 1918 private addresses — they are not routed on the public internet and can be used freely within an organization. The distinction from global unicast is that ULA addresses are randomly generated to be unique enough to avoid collisions if two private networks are ever merged.

Link-local addresses (fe80::/10) are automatically configured on every IPv6-enabled interface and are used for neighbor discovery and router advertisement — the IPv6 equivalents of ARP and DHCP discovery. They are scoped to a single network segment and are never routed.

Transition mechanisms. Because the IPv4 and IPv6 internets coexisted for years (and still do), several transition technologies were developed: dual-stack (running both protocols simultaneously), 6to4 (now deprecated — the 192.88.99.0/24 relay range in the special-use table above), Teredo, and NAT64/DNS64 which allows IPv6-only clients to reach IPv4-only servers.

IPv6 subnet calculator

Our subnet calculator handles both IPv4 and IPv6 CIDR blocks — enter a /48, /64, or any IPv6 prefix to see the full breakdown.

Open the IPv6 subnet calculator →

Check your current public IP

See your IP address, ISP, ASN, and geolocation — detected instantly from the network.

Check my IP →

Last updated: May 2026 · Written by Rubix Systems · checkmiip.com