Why are the IP addresses separated by dots?

The original programmers of the network modules had no preference when it came to writing your IPV4 address. TCP/IP allows you to write a numeric address using several formats. The following addresses are strictly equivalent:

  • 0x7f000001 – still works, at least on Linux.
  • 0x7f.1 – still works, at least on Linux
  • 0177.00.00.01 – Octal for 127.0.0.1 – Still valid on Linux
  • 127.0.0.1 – Decimal format
  • 2130706433 – Decimal without dot. – Still valid on Linux. Mostly exploited by computer viruses.

Why all this format:

There are several valid forms of digital IPV4 address. Around 1980, the world was separated between octal (DEC, NOVA…) and Hexadecimal (IBM, Amdhal…). TCP/IP was born between these two worlds.

It had a flexible address mode that could adapt to both environments.

The beginning of networks on mini-computers

For the simple reason that the developers didn’t know what we could do with a network, they all started with the development of 255 nodes solution (8 bits address). So TCP/IP, DECNET, ARCNET and many other less known solutions such as “NETWORK” started with computers numbered from 1 to 255. All the protocols of the time used decimal to number the computers which was easier for non computer scientists and researchers.

Definition of Network, Area or similar context.

Before 1983, there were no microcomputers to consider in companies. Moreover, the majority did not own 255 computers. On the other hand, they had an interest to exchange data with other companies.

TCP/IP defined the concept of network class (A,B,C,D,E), DECNET used the concept of Area.host. and “NETWORK” used “Client.Region.Computer”.

At that time, for all addressing formats, the goal was to facilitate the work of routers. It should be remembered that the first dedicated routers from Cisco date from 1985. In 1980, a VAX 11/780 (1 Million$), was a flagship computer of the time. It offered 1 MIPS Drystone of power. A new Raspberry PI 4 of $50 offers 22500 MIPS Drystone. The network protocols were trying to limit the power thirst of the routing algorithms.

Nomenclature with “.”

The “.” was featured in this application. Almost all network protocols used it to stand for Network.Node. In many applications, the “.” denoted a hierarchy. For example, domain names: http://WWW.JYL.CA

(Computer.Domain.Registrar). It replaced the space and gave meaning to the nomenclature.

DECNET with Area→node: 16bits.16bits in octal or decimal.

IPX with Network→Server→Node EX: 0000.0000.0001

But TCP/IP unlike other protocols is much more hierarchical. It relies heavily on the notion of Subnetwork for its routing function. In 1981 or 1982, it already seemed clear that all addresses would ultimately be used when split into Class C, the only realistic way for routing protocols to work as defined in the RFCs.

At that time, some TCP/IP networks used addresses such as: network.node. EX: ping 127.1. or ping 0x7f.1 or ping 0177.01. This type of simple addressing was abandoned with the routing function. We had to use subnets and in 1982 these were called TCP/IP class “C” networks. These were defined by four independent bytes, a type of hierarchy.

Cemented by the introduction of the NCSA MOSAIC browser (1993)

NCSA MOSAIC was written by application/researcher type programmers and less familiar with TCP/IP internals. The first version of the browser only accepted addresses in the form [x.x.x.x] decimal.

For network people this was not really a consideration anymore. There weren’t many programmers who read octal or hexadecimal in the usual way anymore. DNS was working relatively well and this is the 90s.

I believe that this was the marketing basis for the generalization of the X.X.X.X – Decimal format.

DISCLAIMER: Some of the facts stated depend on my perceptions at the time. I have been installing, developing and managing NETWORK and DECNET systems since 1981. However, my first TCP/IP networks were installed in 1984. At that time, the French documentation was non-existent and I didn’t speak English. When I had a question, a translator sent a letter and most of the time, we received a module printout written in “C” with lines highlighted with the Highlighter. This doesn’t help much with the philosophical concepts and whys.