- Internet and the Atomic Bomb - packet switching
- First network and first packet
- Hostname Server
- DNS and domain names are born
Due to the stuff I am working on in my current company, I had to get into more details about DNS recently. The way I usually looked at DNS was - it is this simple key/value store where for a given hostname you get the IP address back, which you then put to your packet of data, send it to the internet and it magically finds the way to the destination.
Of course it is not that simple. DNS evolved over time from from simple beginnings to a globaly and highly available distributed database. If you know me well, you know I am really passionate about history. Usually this passion is oriented around, ancient history, forming of nations, kings, queens - you know the typical stuff.
When studying history I am mostly interested in answering question why. Why has something happened? What kind of conditions and context generated this specific outcome. You can learn a lot from it and understand the world better thanks to it.
I do approach learning a new tech simillary. So with DNS, I started with its history.
- How did it happend that we have current solution?
- What kind of problems/requirements shaped its current implementation and architecture?
- Where was the beginning?
And so where to start the journey? I think with the - Atomic Bomb.
Internet and the Atomic Bomb - packet switching1
I was surprised to learn that Atomic bomb is the reason we have Internet today.
In 1960s, communication networks were mostly made from analog circuits. To transfer information from point A to point B a connection had to be established on each node in the network. To do this network had to reconfigure itself using
circuit switching. It is similar concept to telephone lines and asking the operator to let you through. Network was much more centralised with swtiching nodes requiring to have
state of which lines to connect.
This approach has its advantages like reliable reserved connection with allocated bandwidth. There is however one big problem - fault tolerance. In a hypothetical attack you could
break the ability to send information by destroying one of the nodes, breaking the connection and requiring to create new connection using different route. This takes time and creates disruption.
The first step to achieve more resilience was to remove
state from network nodes. To do this, instead of having a place telling nodes how to
switch circuitslet them decide dynamically on the fly how to move data across the network. But then how would the nodes know were to send a data? That is how
packet was born, a piece of information with metadata added to it, containing information required by the network. This enables networ nodes to make decision
just in time without any supervision and removes any central from the picture making whole system more tolerant to disruption.
The second step is decentralise and and make the network more distributed, without stations responsible to arrange a call, without a step to create a connection.
With packets and more distributed network there is no central place you can take out to disrupt the network. Also with packets you don’t need to arrange calls. You partition your data into packets, attach metadata like destination to each one, and sent them to the network. There is no need to start a call. As long as there is
one working route in the network your data will be delivered.
First network and first packet 4
Internet was born on
October 29, 1969. The first network was very simple. Two nodes - one in
UCLA5 and 2nd one in
SRI6. In order to communicate the machines used a serial interface connected to
IMP7 (Interface Message Processor, a device which was the size of a refrigerator). IMP was the precurssor of todays routers, a device that moves and routes the packets through the network.
- First node UCLA - September 2nd, 1969 -
Sigma78 connected to IMP.
- Second node SRI - October 1, 1969 - SRI -
PDP9 with another IMP
The network expanded to 4 hosts the same year.
- Third node - November 1st, 1969
- Fourth node - December, 1969
The first packet send in this network was character
l. Engineers in UCLA wanted to send
login message from their terminal to terminal in SRI. The system crashed when they got to
g character. Internet was born with a crash.
First Address Table
Early network had two types of machines.
IMPS. IMP is responsible for data transfer like a router. HOST machine is used by user to send data across the network.
Eeach packet had an 8-bit address - six bits for IMP devivce number and two bits for Host. With 2 bits you can only have 4 differents states
[00, 01, 10, 11], this ment that one IMP could support only 4 HOST machines. With 6 bits for IMP address there was also a limit to (2^6 = 64) IMPS. This type of address specification limited whole system to have
256 HOSTS attached to it.
Addressing of IMP devices was handled internaly as a User you only had to know which HOST machine you want to send data to. RFC20810 contain first address table.
As a User you specify which HOST you want to reach and it is translated to Network Address. This HOST list was manintained manually on each Host. So each HOST had its onw list with its own naming conventions.
First standarizaiton happened in RFC22611 with a 6 letter designator poiting to a HOST (network address).
Alternate hostnamess and first authorization process
This list was then expanded and included alternate names. These were added due to very interesting reasons, user experience, apparently early users were to lazy to use longer names.12.
It has been brought to my attention that programmers are lazy and don’t like to deal with character strings longer than one computer word or containing characters other than the capital letters A-Z or the digits 0-9. Thus, I have included an alternate list which is limited to 4 character names using only the alphanumerics.
There is also mention of first type of hostname authorization process in RFC236
It also seems to me to be a good idea to consult with each host’s technical liaison officer before assigning that host’s name.
Then in RFC24713. Network Address was attached to a name constructed from
site name and
Hostnames and addressing was a really hot topic back in these days, as there are a lot of RFCs dedicated to discussions around it, also in RFC247 you can find this sentence.
an RFC actually generated comments!!!
Rapid expansion of the internet
- show maps and numbers how quickly it has expanded http://mercury.lcs.mit.edu/~jnc/tech/ARPANet_Maps.gif http://www.cbi.umn.edu/hostedpublications/pdf/McKenzieNCP1972.pdf
First problems https://tools.ietf.org/html/rfc305 How was the host uptadet?
- There was a BBN notification mentioning new imp devices and Hosts, operators updates it on theirs site.
- This of course generates problems as some sites might not update in time or forget it, or make mistakes. The process was manuall.
Each node has its own hosts table. And it was not transferable really beetwen people departments.
Host to IMP protocol https://tools.ietf.org/html/rfc690
- mention that 16mln was considered a lot :D
- and now we reached out ipv4
- and how about ipv6
Centralised HOSTS.txt - file driven address resolution
To start slow standarization process first standarized list was created. In Rfc226 you can find this list, it is dated 20 september 1971. It is amazing that at that time there were only 20 hosts. You could fit this list in your local moder hosts file easilly.
- how it was managed, how it looked like
- how it was propagated to everyone else? Syncrhonization problems.
hostname is born https://tools.ietf.org/html/rfc247
http://www.rfc-editor.org/rfc/rfc625.txt http://www.rfc-editor.org/rfc/rfc623.txt https://tools.ietf.org/html/rfc811 https://tools.ietf.org/html/rfc953
DNS and domain names are born
- difficulty to remember ip addresses
IP is born
TXT is added
CAA is added
NA is added
Types of DNS servers https://www.cloudflare.com/learning/dns/dns-server-types/
why there are only 13 root servers https://www.lifewire.com/dns-root-name-servers-3971336
- http://www.softpanorama.org/DNS/history.shtml https://www.livinginternet.com/i/iw_dns_history.htm https://www.cloudns.net/blog/dns-hisotry-creation-first/