Hall Chapter 01: Intro to TCP/IP
Metadata
Title: An Introduction to TCP/IP
Number: 1
Book: Hall, Eric: Internet Core Protocols
Core Ideas
TCP/IP presented a radical departure from earlier networking approaches. In the early days of networking large proprietary systems were used, with dumb terminals and smart controllers. Cross-platform connectivity wasn’t a thing.
The US DOD developed ARPAnet to assist different institutions to co-operate with a platform-independent networking protocol. It was packet-switching, rather than circuit-switching.
TCP/IP followed as a way of connecting devices regardless of network topology. In TCP/IP each device was treated as a fully functional end point, capable of communicating directly with any other. No longer big central mainframes that brokered communications.
TCP/IP Architecture
TCP/IP is a family of protocols, not a monolith.
The IP itself works as the network layer in the OSI reference model. Responsible for tracking addresses of devices in the network, how IP datagrams will be delivered, sending IP packets from noe host to another across a specific segment. It’s like a national delivery service.
The Transport protocols (TCP/UDP) work at the transport layer of the OSI reference. They also provide session layer services, managing connections between hosts. EG when an application protocol like HTTP exchanges data between client and server, it’s TCP that is brokering the session management for the exchange.
Various application protocols are considered part of the family, like HTTP, SMTP, FTP etc.
IP itself is very unreliable, its only job is to get IP datagrams from one host to another, one network at a time. Datagrams can get lost, or broken up without warning. It relies on higher level protocols for reliability.
IP uses the Internet Control Message Protocol (ICMP) for error reporting. Not when packets are lost, but when there’s a detectable problem.
Application protocols don’t talk directly to IP, they talk to a transport protocol like TCP or UDP. It is these that use port numbers to provide multiplexing - handing out messages to the correct process running on a host.
Every instance of every application protocol has a unique port number that is used to identify it to the transport protocols on the local system. For reserved port numbers see IANA’s list.
A server will use a standard port number so that it doesn’t have to tell every user the port to use. So a web server will use 80 and 443 for example for http and https.
A client will only open a connection when it needs to, the transport protocol will open a random port number over 1024 and use that number for the incoming and outgoing data associated with the connection. When the exchange is complete it will close the connection and release the port.
The usual distinctions are discussed between TCP and UDP.