The Internet Protocol (IP) has two versions currently in use (see IP version history for details). Each version has its own definition of an IP address.
Because of its prevalence, "IP address" typically refers to those defined by IPv4.
An illustration of an IP address (version 4), in both dot-decimal notation and binary.
An illustration of an IP address (version 4), in both dot-decimal notation and binary.
IP version 4 addresses
IPv4 only uses 32-bit (4-byte) addresses, which limits the address space to 4,294,967,296 (232) possible unique addresses. However, many are reserved for special purposes, such as private networks (~18 million addresses) or multicast addresses (~270 million addresses). This reduces the number of addresses that can be allocated as public Internet addresses, and as the number of addresses available is consumed, an IPv4 address shortage appears to be inevitable in the long run. This limitation has helped stimulate the push towards IPv6, which is currently in the early stages of deployment and is currently the only contender to replace IPv4.
IPv4 addresses are usually represented in dotted-decimal notation (four numbers, each ranging from 0 to 255, separated by dots, e.g. 184.108.40.206). Each range from 0 to 255 can be represented by 8 bits, and is therefore called an octet. It is possible, although less common, to write IPv4 addresses in binary or hexadecimal. When converting, each octet is treated as a separate number. (So 255.255.0.0 in dot-decimal would be FF.FF.00.00 in hexadecimal.)
IPv4 address networks
Currently, three classes of networks are commonly used. These classes may be segregated by the number of octets used to identify a single network, and also by the range of numbers used by the first octet.
* Class A networks (the largest) are identified by the first octet, which ranges from 1 to 127.
* Class B networks are identified by the first two octets, the first of which ranges from 128 to 191.
* Class C networks (the smallest) are identified by the first three octets, the first of which ranges from 192 to 223.
A class A network does not necessarily consist of 16 million machines on a single network, which would excessively burden most network technologies and their administrators. Instead, a large company is assigned a class A network, and segregates it further into smaller sub-nets using Classless Inter-Domain Routing. However, the class labels are still commonly used as broad descriptors.
IPv4 private addresses
Machines not connected to the outside world (e.g. factory machines that communicate with each other via TCP/IP) need not have globally-unique IP addresses. Three ranges of IPv4 addresses for private networks, one per class, were standardized by RFC 1918; these addresses will not be routed, and thus need not be coordinated with any IP address registrars.
Each block is not necessarily one single network, although it is possible. Typically the network administrator will divide a block into subnets; for example, many home routers automatically use a default address range of 192.168.0.0 - 192.168.0.255 (192.168.0.0/24).
IP version 6 addresses
IPv6 is a new standard protocol intended to replace IPv4 for the Internet. Addresses are 128 bits (16 bytes) wide, which, even with a generous assignment of netblocks, will more than suffice for the foreseeable future. In theory, there would be exactly 2128, or about 3.403 × 1038 unique host interface addresses. Further, this large address space will be sparsely populated, which makes it possible to again encode more routing information into the addresses themselves.
Writing for Technology Review in 2004, Simson Garfinkel wrote notes that there will exist "roughly 5,000 addresses for every square micrometer of the Earth's surface". This enormous magnitude of available IP addresses will be sufficiently large for the indefinite future, even though mobile phones, cars and all types of personal devices are coming to rely on the Internet for everyday purposes.
The above source, however, involves a common misperception about the IPv6 architecture. Its large address space is not intended to provide unique addresses for every possible point. Rather, the addressing architecture is such that it allows large blocks to be assigned for specific purposes and, where appropriate, aggregated for providing routing. With a large address space, there is not the need to have complex address conservation methods as used in classless inter-domain routing (CIDR).
Windows Vista, Apple Computer's Mac OS X, and an increasing range of Linux distributions include native support for the protocol, but it is not yet widely deployed elsewhere.
IPv6 private addresses
Just as there are addresses for private, or internal networks in IPv4 (one example being the 192.168.0.0 - 192.168.255.255 range), there are blocks of addresses set aside in IPv6 for private addresses. Addresses starting with FE80: are called link-local addresses and are routable only on your local link area. This means that if several hosts connect to each other through a hub or switch then they would communicate through their link-local IPv6 address.
Early designs specified an address range used for "private" addressing, with prefix FEC0. These are called site-local addresses (SLA) and are routable within a particular site, analogously to IPv4 private addresses. Site-local addresses, however, have been deprecated by the IETF, since they create the same problem that does the existing IPv4 private address space (RFC 1918). With that private address space, when two sites need to communicate, they may have duplicate addresses that "combine". In the IPv6 architecture, the preferred method is to have unique addresses, in a range not routable on the Internet, issued to organizations (e.g., enterprises).
The preferred alternative to site-local addresses are centrally assigned unique local unicast addresses (ULA). In current proposals, they will start with the prefix FC00.
Neither ULO nor SLA nor link-local address ranges are routable over the internet.
IP address subnetting
Both IPv4 and IPv6 addresses utilize subnetting, or dividing the IP address into two parts: the network address and the host address. By using a subnet mask, the computer can determine where to split the IP address.
Static and dynamic IP addresses
When a computer uses the same IP address every time it connects to the network, it is known as a Static IP address. In contrast, in situations when the computer's IP address changes frequently (such as when a user logs on to a network through dialup or through shared residential cable) it is called a Dynamic IP address.
Method of assignment
Static IP addresses are manually assigned to a computer by an administrator. The exact procedure varies according to platform. This contrasts with dynamic IP addresses, which is assigned either randomly (by the computer itself, as in Zeroconf), or arbitrarily assigned by a server using Dynamic Host Configuration Protocol (DHCP). Even though IP addresses assigned using DHCP may stay the same for long periods of time, they can generally change. In some cases, a network administrator may implement dynamically assigned static IP addresses. In this case, a DHCP server is used, but it is specifically configured to always assign the same IP address to a particular computer, and never to assign that IP address to another computer. This allows static IP addresses to be configured in one place, without having to specifically configure each computer on the network in a different way.
In the absence of both an administrator (to assign a static IP address) and a DHCP server, the operating system may still assign itself a dynamic IP address using Zeroconf. These IP addresses are known as link-local addresses. For IPv4, link-local addresses are in the 169.254.0.0/16 address range.
Uses of dynamic addressing
Dynamic IP Addresses are most frequently assigned on LANs and broadband networks by Dynamic Host Configuration Protocol (DHCP) servers. They are used because it avoids the administrative burden of assigning specific static addresses to each device on a network. It also allows many devices to share limited address space on a network if only some of them will be online at a particular time. In most current desktop operating systems, dynamic IP configuration is enabled by default so that a user does not need to manually enter any settings to connect to a network with a DHCP server. DHCP is not the only technology used to assigning dynamic IP addresses. Dialup and some broadband networks use dynamic address features of the Point-to-Point Protocol.
Uses of static addressing
Static addressing is essential in some infrastructure situations, such as finding the Domain Name Service directory host that will translate domain names to numbers (IP addresses). Static addresses are also convenient, but not absolutely necessary, to locate servers inside an enterprise. An address obtained from a DNS server comes with a time to live, or caching time, after which it should be looked up to confirm that it has not changed. Even static IP addresses do change as a result of network administration, however (RFC 2072).
Modifications to IP addressing
IP blocking and firewalls
Firewalls are common on today's Internet. For increased network security, they allow or deny access to their private network based on the public IP of the client. Whether using a blacklist or a whitelist, the IP address that is blocked is the perceived public IP address of the client, meaning that if the client is using a proxy server or NAT, blocking one IP address might block many individual people.
IP address translation
IP addresses can appear to be shared by multiple client devices either because they are part of a shared hosting web server environment or because an IPv4 network address translator (NAT) or proxy server acts as an intermediary agent on behalf of its customers, in which case the real originating IP addresses might be hidden from the server receiving a request. A common practice is to have a NAT hide a large number of IP addresses in a private network. Only the "outside" interface(s) of the NAT need to have Internet-routable addresses.
Most commonly, the NAT device maps TCP or UDP port numbers on the outside to individual private addresses on the inside. Just as there may be site-specific extensions on a telephone number, the port numbers are site-specific extensions to an IP address.
In small home networks, NAT functions are usually performed by a residential gateway device, typically one marketed as a "router". In this scenario, the computers connected to the router would have 'private' IP addresses and the router would have a 'public' address to communicate with the Internet. This type of router allows several computers to share one public IP address.