DATA



Networking Protocols

Many different networking technologies exist.

They are each designed for a particular purpose (resilience, flexibility, speed, latency, predictability, security, distance, etc) and it just happened that the technology stack we call Internet today has proven to be the most versatile and economic way of interconnecting computers on a planetary scale.

The unique difference between computer networks and other types, for example video and TV networks is that the term connection exists only from the perspecive of the end-systems. Every other device inside the network just handles data packets which carry a type and address information inside a header and the actual messages in a body. This design makes computer networks efficient, economic and scalable and is the main reason why they are so predominant today.

Seen from the top, computer networks provide a uniform and universal way of communication for end-systems and applications, but underneath they are composed from vastly different technologies. Just imagine how seamless you can send an email, for example, from a wired desktop computer in your European office running Outlook under Windows to someone reading that email in a WebMail portal running Safari on an iPad tablet that is connected to a wireless LTE network in America.

Neither your email program nor the email reader on the other side has to handle or even understand the complexity of all the different technologies on the way. From the perspective of an application it seems communication happends end-to-end, while in fact, messages are forwarded by the network hop-by-hop. In order to make such communication happen, computer networks are using all sorts of standardised protocols for resolving names and addresses, passing messages and protecting their contents from corruption all the way from their original author (called sender here) to the final recipient (called receiver).

Protocol layers and their functions

Networking software is designed as a hierarchy of protocol layers which together form a so called network stack. Each layer fulfils a particular set of tasks, utilizing services from the layer directly underneath and providing services to the next layer above. That way computer networks can deal with the vastly different features of physical media and still provide the same functionality towards applications. Protocols make it possible for different vendors (e.g. Microsoft and Apple) to implement individual networking software and still make their systems interoperate with each other.

In the Internet there are five distinct protocol layers, starting at the physical medium and ending at the so called application level which have the following functions:

The Application Layer provides direct services to an end user through application software such as web browsers, email programs, data transfer applications. Protocols defined here cover a wide scope of useful functions such as identifying and authenticating communication partners, determining availability of resources, synchronizing and encrypting exchanged messages.

The Transport Layer transports messages and data streams from a source to a destination across one or more intermediate networks. It is the transport layer that generates the illusion of an end-to-end connection for applications. It segments and reassembles data into packets, can retransmit lost data (error control) and controls the sending rate to not overflow a network with too much data (flow control).

The Network Layer manages the addressing of nodes, the forwarding of packets and the routing of packets between connected networks so a packed gets closer to its destination with each hop. IP-based networks are particularly resilient here. They can easily re-route packet streams when links fail or become overloaded.

The Link Layer controls the sending schedule of adjacent network nodes (media access control, MAC), the rate of sending data (flow control) and it protects from or corrects errors that happen on the physical layer.

The Physical Layer converts the digital data from the link layer into analog signals tailored to a specific medium (radio waves, copper, optical fiber) and sends or receives those signals, controlling modulation, power and timing.

  • Application Layer:  HTTP, SMTP, IMAP, DNS, DHCP, FTP, Aspera, SIP, RTP/RTSP
  • Transport Layer:    TCP, UDP
  • Network Layer:      IP
  • Link Layer:              802.11 (WiFi), 802.3 (Ethernet), Bluetooth
  • Physical Layer:      Radio links, Copper, Fiber

To use transport protocols in different applications on the same computer they define so called port numbers. They work like post boxes in a large building. A packet arriving on a destination computer for a particular port is forwarded to the designated application, when running or rejected otherwise. Registrations for many well-known port numbers exist, such as TCP port 80 for HTTP (web browsing) and TCP port 443 (HTTPS) for secure web browsing.

Internet Protocols

Protocols are strictly defined standards about how systems must communicate on each layer. The Internet standards are only concerened with defining network, transport and application layer protocols. In fact, there is only a single network protocol, the so called Internet Protocol (IP), and two major transport protocols (TCP and UDP) which are sufficient for almost all application needs.

Thanks to IP, protocols and applications above can operate over any current and future link layer technology such as WiFi, Bluetooth, mobile 3G and 4G networks, satellite links, Ethernet over copper or fiber and so on. IP itself is best effort, meaning it does not give any guarantee about delivery times, data rates or loss-less delivery of data.

TCP enables connection-oriented, order-preserving, bi-directional, flow- and error-controlled transfers of data streams. The strict guarantees of TCP tremendously simplify the programming of applications like Web browsers, Email clients, an file sharing tools. TCP connections, even ones originating from different computers, share available network bandwidth in a fair manner.

UDP in contrast, is a simple unidirectional message passing protocol that conveys (the non existent guarantees of) raw IP to applications. UDP is sufficient or even beneficial for some applications. The Domain Name System (DNS) uses UDP to avoid the overhead of connections and because requests and answers almost always fit into a single packet.

In realtime applications, such as as Voice over IP (VoIP) and Realtime Audio/Video Streaming (RTP/RTSP) the lack of error control in UDP means data gets delivered as fast as possible. Likewise, the lack of flow control is utilized by fast file transfer protocols (Aspera) which quickly floods a network with data up to its capacity limit at the cost of fairness towards parallel traffic.

Internet Addresses

Every network node and every end-system in the Internet carries a unique numeric network-level address (IP address). IP addresses allow packet routers to identify which node sent a packet and which node a packet is destined to. Today, there are two versions of IP network addresses in use, an older version 4 (IPv4) and newer version 6 (IPv6). IP addresses are 32bit (v4) or 128bit (v6) long. They contain two parts, a network address prefix identifying a pool of computers sharing the same local network (all are one hop away from each other) and a host address identifying a single computer.

IPv4 addresses are written in dot-notation as 4 blocks of decimal numbers (0..255) followed by a slash (/) and the length of the routing prefix in bits. IPv6 addresses are written in colon-notation as 8 blocks of 16bit hexadecimal numbers (0000..FFFF), also followed by a slash (/) and the length of the routing prefix in bits.

Examples:

  • IPv4  192.168.1.235/24
  • IPv6  2001:db8:1234:1:1:1:1:1/48

Internet Domain Names

Numeric internet addresses are easy to handle by software but hard to comprehend by human users. That's why the Domain Name System (DNS) allows assigning human-readable names to computers on the Internet. DNS is a world-wide distributed database that can translate a given DNS name into an IP address and vice versa. The related DNS protocol runs on UDP port 53 and is available on every computer. Whenever you enter a DNS name in a Web browser, FTP or Email program, the DNS system is queried for the IP address of the server. DNS is very flexible and can even contain multiple IP addresses for a single name. This is often used by popular Internet services to direct users to the geographically closest servers.

Domain names are hierarchical. Hierarchy levels, also called zones, are separated by a single dot '.'. A DNS name is written in reverse order so that the top-level domain comes last. A fixed number of such top-level domains exists, one for each country and several more for particular commercial (.com), non-commercial (.org), educational (.edu) and many other purposes. Domain names must be registered with central authorities, so called registrars. To operate a DNS domain you need a domain name server that can resolve all host names inside your domain. Domain registration and DNS server hosting are often provided by Internet service providers as a package. With sufficient technical expertise an organisation or individual domain owner can do this alone with open source software.

Common Internet Protocols

  • ARP:        Link Layer / Port: local
    Purpose: IP to MAC address resolution
  • ICMP:      Network Layer / Transport: IP
    Purpose: IP control protocol, e.g. for PING
  • IPSec:      Network Layer / Transport: IP
    Purpose: virtual private network with encrypted traffic
  • DHCP:      App Layer/ Transport: UDP / Port: 67, local
    Purpose: IP address assignment, network management
  • DNS:        App Layer / Transport: UDP / Port: 53
    Purpose: name to IP address resolution (google.com -)
  • HTTP:      App Layer / Transport: TCP / Port: 80, 443
    Purpose: Web browsing
  • SMTP:      App Layer / Transport: TCP / Port: 25, 485
    Purpose: Email sending and forwarding
  • IMAP:      App Layer / Transport: TCP / Port: 143, 993
    Purpose: Email reading
  • RTP:        App Layer / Transport: UDP
    Purpose: real-time audio, video and text chat transport
  • RTSP:      App Layer / Transport: TCP / Port: 554
    Purpose: session management for real-time communication
  • SIP:        App Layer / Transport: TCP/UDP / Port: 5060, 5061
    Purpose: session management for Internet telephony VoIP


Author: Alexander Eichhorn

Related Articles: