– DaLANTech –
This article was originally published on and is posted with permission of DaLanTech.com
Data Transfer Over A Network
It’s time to explain how data flows across a network – any network, including the Internet. Also time to explain certain key TCP/IP terminology in more detail. So sit back, prop your feet up, and get comfortable – this might be a long one …
Normally, the different layers in the TCP/IP stack don’t care about each other. For the most part each layer dumps data to the layer below it, or passes data to the layer above. There are special situations when the layers do interact – establishing a connection is one of them.
When you type www.dalantech.com into your browser’s Universal Resource Locator (URL) window and hit Return, the browser signals the Transport Layer (TL) that it wants to establish a connection and passes the URL down. The first packet to go down the stack is a User Datagram Protocol (UDP) packet with a destination port of 53 to the Internet Protocol (IP) address of your Domain Name Service (DNS) server to request the IP address of www.dalantech.com
Connection Oriented Transfer (TCP)
As soon as the IP address for the web site is returned, the transport layer initiates a Transfer Control Protocol (TCP) connection to the server that stores the web site by sending a Synchronization (SYN) packet. In that SYN packet the following values are proposed:
Maximum Transmittable Unit (MTU): The maximum size of all the future packets that will be sent while the connection being negotiated is active. The MTU equals the combined data generated by the Application, Transport, and Internet Layers.
Maximum Segment Size (MSS): The maximum segment size that will be transmitted from sender to receiver. The segment is the data portion of a TCP/IP packet (MSS = MTU minus the 40 bytes that make up the TCP and IP headers).
Receive Window (RWIN): The number of segments transmitted before an acknowledgement is sent by the receiver to the sender. The RWIN value is always a whole number multiple of the MSS (no fractions).
The server that provides the web page will either accept or reject your PCs SYN packet by transmitting a Synchronization Acknowledgement (SYN-ACK). If accepted, your PC will send one more SYN packet and the web page will start loading into your browser window. If rejected, the SYN-ACK your PC receives will have the corrected values listed. If your PC accepts the changes it will send another SYN packet and the transfer will start. If your PC cannot accept the new values another SYN packet will be transmitted by your PC to the web server with more changes – and the process continues until both sides agree, or the connection times out or is cancelled. This system of SYN and SYN-ACK is why the transport protocol is referred to as connection oriented – a connection has to be established before the transfer of data can begin. The process of establishing a connection is also sometimes called “hand shaking.”
Now you have a connection to the web site and data is flowing. Packets are being sent from the web server to your web browser and the page is loading on your PC. Sounds simple … well, let’s talk about what’s really going on …
Data from the web page is being “packaged” by the different layers of the TCP/IP stack (Note: all TCP/IP data is packaged). Think of it as a box inside a box like this: