The Internet Protocol Version 4 address 0.0.0.0 can have multiple uses.

Uses

Official meaning and use

IANA, who allocate IP addresses globally, have allocated the single IP address 0.0.0.0[1] to RFC 1122 section 3.2.1.3. It is named as "This host on this network".

RFC 1122 refers to 0.0.0.0 using the notation {0,0}. It prohibits this as a destination address in IPv4 and only allows it as a source address under specific circumstances.

A host may use 0.0.0.0 as its own source address in IP when it has not yet been assigned an address, such as when sending the initial DHCPDISCOVER packet when using DHCP.

Operating system specific uses

Some operating systems have attributed special internal meanings to the address. These uses do not result in IPv4 packets containing 0.0.0.0 and so are not governed by RFC 1122.[2] These meanings may not be consistent between OS.

In both Windows and Linux, when selecting which of a host's IP address to use as a source IP, a program may specify INADDR_ANY (0.0.0.0).[3][4]

In Linux a program may specify 0.0.0.0 as the remote address to connect to the current host (AKA localhost).[2]

Other non-standard uses

Besides the use by operating systems internally, other uses have been attributed to the address.[5][6]

  • A non-routable meta-address used to designate an invalid, unknown or non applicable target
  • The address a host assigns to itself when address request via DHCP has failed, provided the host's IP stack supports this. This usage has been replaced with the APIPA mechanism in modern operating systems.
  • A way to explicitly specify that the target is unavailable.[7]
  • A way to route a request to a nonexistent target instead of the original target. Often used for adblocking purposes. This can conflict with OS specific behaviour.[8]

Routing

In routing tables, 0.0.0.0 can also appear in the gateway column. This indicates that the gateway to reach the corresponding destination subnet is unspecified. This generally means that no intermediate routing hops are necessary because the system is directly connected to the destination.[9]

The CIDR notation 0.0.0.0/0 defines an IP block containing all possible IP addresses. It is commonly used in routing to depict the default route as a destination subnet. It matches all addresses in the IPv4 address space and is present on most hosts, directed towards a local router.

In IPv6

In IPv6, the all-zeros address is typically represented by :: (two colons), which is the short notation of 0000:0000:0000:0000:0000:0000:0000:0000.[10] The IPv6 variant serves the same purpose as its IPv4 counterpart.

See also

References

  1. ^ "IANA IPv4 Special-Purpose Address Registry". Internet Assigned Numbers Authority. 19 August 2009. Retrieved 7 June 2023.
  2. ^ a b Kitt, Stephen (26 January 2018). "Connecting to IP 0.0.0.0 succeeds. How? Why?". Stack Exchange. Retrieved 7 June 2023.
  3. ^ Kerrisk, Michael (22 March 2021). "ip(7) — Linux manual page". man7.org. Retrieved 7 June 2023.
  4. ^ "bind function (winsock.h) - Win32 apps". Microsoft Learn. 19 August 2022. Retrieved 7 June 2023.
  5. ^ Postill, David (2 August 2015). "What's the difference between 127.0.0.1 and 0.0.0.0?". Stack Exchange. Retrieved 7 June 2023.
  6. ^ Mitchell, Bradley (16 December 2018). "What It Means When You See the 0.0.0.0 IP Address". Lifewire. Retrieved 7 June 2023.
  7. ^ R. Woundy; K. Marez (December 2006). Cable Device Management Information Base for Data-Over-Cable Service Interface Specification (DOCSIS) Compliant Cable Modems and Cable Modem Termination Systems. Network Working Group. doi:10.17487/RFC4639. RFC 4639. Proposed Standard. p. 32. Obsoletes RFC 2669. Updated by RFC 9141. If 0.0.0.0, either syslog transmission is inhibited, or the Syslog server address is not an IPv4 address.
  8. ^ Kitt, Stephen (19 November 2022). "Why accessing 0.0.0.0:443 gets redirected to 127.0.0.1:443 on Linux and how to disallow it?". Stack Exchange. Retrieved 7 June 2023.
  9. ^ Henry-Stocker, Sandra (4 August 2013). "Unix: Getting from here to there (routing basics)". Network World. Retrieved 7 June 2023.
  10. ^ Das, Kaushik (2008). "IPv6 Addressing". ipv6.com. Archived from the original on 11 April 2015. Retrieved 7 June 2023.

External links