Home
Misc
Linux
TCP/IP
Windows
Random Daodejing
Photos

TCP/IP Notes

Intro  /  Network Addressing  /  Network Addressing IPv6  /  Packet Headers  /  Networking and Data Link Layers  /  Transport Layer Protocols  /  Application Layer Protocols  /  IP Routing  /  ICMP  /  DHCP  /  Name Resolution and DNS  /  Security 







INTRODUCTION

TCP/IP design goals encompass long distance communication, allowing different kinds of systems to communicate using the same protocols, and fault-tolerance (redundancy).  In 1982, TCP/IP became standardized on ARPANET as the networking protocol suite.

Between 1986 and roughly 1992 "the internet" (e.g. web pages) did not quite exist (pre-Hypertext Transport Protocol), however the underlying protocols available at the time allowed hosts to share data and form virtual communities; the history of BBS (Bulliten Board System) provides a cursory example of some of the ideas leading to the World Wide Web as would be recognizable today.

Behind the scenes a loose consensus approach is taken among various organizations (IAB, IETF, ICANN) in how the protocols function. 

IAB is the Internet Architecture Board focused on technical issues related to future development of the internet.

IETF is the Internet Engineering Task Force which is the standards organization for protocols.

ICANN is the Internet Corporation for Assigned Names and Numbers, which handles namespaces, top level domains and notably DNS (Domain Name System, or name to IP address conversion).

Request For Comments (RFCs) is an IETF document describing the technical information behind a particular protocol or new technical areas of development.  When ratified these become standardized (documents progress through stages of review).

For example, RFC 5321 is for Simple Mail Transfer Protocol or SMTP, a protocol underlying e-mail.

Within the context of the TCP/IP networking stack, hardware firmware must be able to talk to higher-layer protocols and application layer programming must be able to represent the data transmitted.  The modular nature of TCP/IP demonstrates the *independent but connected* philosophy behind its design.
 
Each layer is concerned with accepting the data below itself and sending that data to the layer above itself, so that changes in one layer may not bear functional disadvantages to other layers.
 
As communication is a two-way street (sender and receiver), a data communication across a network flows equally in both directions (up the protocol stack from one host and down the protocol stack of another host).

OSI Model TCP/IP Model
(DoD Model)
TCP/IP – Internet
Protocol Suite



Application
Telnet, SMTP, POP3,
Presentation Application FTP, NNTP, HTTP,
Session
SNMP, DNS, SSH,…
Transport Transport TCP, UDP
Network Internet IP, ICMP, ARP, DHCP
Data Link Network Access Ethernet, PPP, ADSL
Physical

The TCP/IP model was around for about a decade and a half before the OSI model (Open Systems Interconnection) was finalized by the International Organization for Standardization (ISO).  While the TCP/IP model separates the layers into four, the OSI model uses seven distinctive layers.
 
The Physical Layer represents hardware, interfaces, cables and connections (the physical infrastructure of networking).
 
The Data Link Layer enables transmission of data via point-to-point communication and the recognition of devices on a network based on each network-connected device address (Media Access Control or MAC).  The data link layer also handles media flow control, acting as a traffic director in allocating bandwidth. At this level, packets (frames or data frames) are fit into specific patterns based on format, structure and size.
 
The Network Layer is concerned with sending and receiving data in terms of logical addresses and domain names, sorting between network connections based on process or computer application.  It also serves as traffic congestion control; it is here where packet-switching occurs.  In the network access layer, IEEE 802 standards are applied, including ethernet standards (CSMA/CD), MAC, token ring, and WiFi. Protocols for this layer include PPP, SLIP (outdated), and related protocols (though not part of TCP/IP) including HDLC, frame relay and ATM (digital voice and data protocol).  PPP (Point-to-Point Protocol) is protocol-neutral and is able to transfer other communication protocols such as TCP/IP, NetBIOS, VPN, etc.
 
The Transport Layer ensures reliable end-to-end transmission between hosts, and includes error detection based on checksums within a packet.  The transport layer protocols split between TCP (Transmission Control Protocol, which is connection-oriented), and UDP (User Datagram Protocol, which is connection-less). While UDP is faster, TCP is more reliable.  As transport layer level data streams are sent out (multiplexing) they need to be reassembled and separated at the receiving end (demultiplexing) in order for several network-based applications to function simultaneously, which is where ports come in to specify application layer level services. Protocol numbers are contained within IP datagram headers, indicating which transport layer protocol can accept it on the receiving end. Generally, ports below 1024 represent 'well known ports', and port numbers above 1024 can be used for temporary assignment and other services. 

The Session Layer represents an actual "session" similar to a telephone call, handling start/stop functionality and also keeping the connection alive via checkpoints (the point up to which data was last successfully transferred).
 
The Presentation Layer transforms data from network-oriented to platform-oriented, which allows different types of computers to communicate. This can vary based on protocol type, but allows for various types of services to correlate.
 
The Application Layer (which can be mistaken for an actual application such as a web browser) represents an underlying interface for actual applications to function. This determines what services an application can request.  Thus, the application layer is also known as the 'process layer' (interacts with applications/processes). In the example of FTP (File Transfer Protocol) this can define both the service and actual application (e.g., front-end GUI or graphic user interface). In order for TCP/IP services to run, there needs to be present processes (daemons in Unix-like operating systems and INETINFO.EXE in Windows) and defined port addresses.
 
The TCP/IP Internet Layer handles the routing and managing of network names and addresses and manages MTU (Maximum Transmission Unit) fragmentation (not all networks are identical in MTU size). Protocols include IP (Internet Protocol, which is a principal networking protocol defining the encapsulation of data into datagrams including the process of fragmentation and reassembly, host addressing, and routing across networks), ICMP (Internet Control Message Protocol, which is concerned with routing information in the context of errors and traffic conditions), PING (Packet Internetwork Groper, which checks for accessibility and round-trip time between hosts), ARP (Address Resolution Protocol, which converts between MAC and IP addresses), reverse ARP, Bootstrap protocol (precursor to DHCP or Dynamic Host Configuration Protocol, which manages allocation of IP addresses and configuration data), RIP (Routing Information Protocol, which defines the number of hops in a communication), OSPF (Open Shortest Path First, which is a routing protocol), and BGP (Border Gateway Protocol, which deals with internet backbone traffic management between multiple networks).
 
Further Reading
---------------------

World's first Ethernet cable
https://boingboing.net/2009/06/30/worlds-first-etherne.html

The Evolution of Ethernet
https://www.oreilly.com/library/view/ethernet-the-definitive/1565926609/ch01.html

Packet Switching
https://www.livinginternet.com/i/iw_packet.htm

Catenet
https://en.wikipedia.org/wiki/Catenet

ARPANET
https://en.wikipedia.org/wiki/ARPANET

Bulliten Board System
https://en.wikipedia.org/wiki/Bulletin_board_system

List of RFCs
https://en.wikipedia.org/wiki/List_of_RFCs