Software Networking

Computing system is not about single hardware executions; it is about networking multiple hardware together into a pool and distribute the executions among them. This is known as distribution tool and it needs networking component. This section is all about networking in the computing world.

Basic of Networking

Network is being abstracted into multi-layers. Here is the OSI diagram of data flow from hardware to your application and vice versa:

As a architecture designer, you need to at least know how your system networking works both internally and externally. We will go through each layers before we move into distributions.


Physical Layer

This layer is more of the network hardware. Speed and transmission reliability is solely dependent on the hardware channel design. Some example factors are:

  1. is the hardware transmit via copper wire / electromagnetic through space / light through fiber optics?
  2. is the hardware having signal shielding?
  3. what is the maximum transmission speed (can be bytes / kibi)?


Data Link Layer

This layer provides node-to-node data transfer. It holds the details and metadata for the physical network device. Normally, this layer has the following information:

  • MAC Address (IEEE 802)
  • Logical Link Control (IEEE 802)
  • Point-to-Point Protocol (asynchronous and synchronous serial line)
  • ITU-T G.hn


Network Layer

This layer provides the lower-level networking operations like managing IP Address, routing, and traffic control. This includes:

  • firewall
  • heuristic packet analysis
  • IPv4
  • IPv6


Transport Layer

This layer handles data flow control and protocol. These are the packet encoding and decoding layer for communicating via the network layers. The 2 common transports are:

  • TCP
  • UDP


Application Layer

This layer is your application. This is where the application process the incoming/outgoing packets provided by the network system. Application layer according to the latest OSI diagram can be split into 3 more layers. The order of these layers is solely depending on the application designer. They are:

  • Session Layer - responsible for defining, managing, and terminate a connection.
  • Presentation Layer - data encoding and processing like serialization / presentation via various data format like JSON, XML, etc.
  • Application Layer - the very high level application logics.

IPv4 or IPv6

This is more of the IP address you plan to use. To date (2019), there are 2 types of IP addresses:

  1. IP Address version 4
    • Host mapped by 4 bytes decimal address separated by period. Example 255.255.255.255
    • Can have ~4 billion distinct addresses per topography.
  2. IP Address version 6
    1. Host mapped by hexadecimal address separated by colon. Example: fe80::d4a8:6435:d2d8:d9f3b11
    2. Can have infinite distinct addresses per topography.

Both uses port number from 0-65535 that are assigned conventionally. Example: 80 for web server.

TCP or UDP

Architecture based. Both has their specialties.

UDP (User Datagram Protocol)

  • Unreliable, discrete packet of data
  • Focusing on mass broadcast and speed (e.g. streaming) over the entire network
  • Not expecting any acknowledgement, sequencing or even re-transmission in case of error
  • It is connection-less.

TCP (Transmission Control Protocol)

  • Reliable
  • Focusing on quality data transmission (e.g. secure transfers)
  • Segment re-transmission and flow-control via windowing.
  • Connection-oriented.

Application Layer - Protocol

This is the application layer's network "presentation" layer. The application chooses which transport protocol to use depending on specification. Some examples are:

  • HTTP (Hypertext Transfer Protocol)
  • HTTPS (Secured Hypertext Transfer Protocol)
  • SSH (Secure Shell Protocol)
  • FTP (File Transfer Protocol)
  • SSHFTP (Secure Shell File Transfer Protocol)
  • MQTT (Message Queuing Telemetry Transport)
  • SMTP (Simple Mail Transfer Protocol)
  • RDP (Remote Desktop Protocol)
  • ... and a lot more ...

This is also not limited to inventing your own transport protocol.

Application Layer - Data

This is the application layer's data types. It is the conventional files and format we use in the operating systems like HTML, JSON, XML, PDF, etc.

That's all about the basics of networking in computer and software. Feel free to explore the sub-topics for in-depth study and learning.