Introduction To Networking - Parkland    

Last Modified:
Thursday, 16-Sep-2004 21:42:49 CDT

Establishing a TCP Connection


Packet 1 SYN

As you can see from the screenshot of an Ethereal capture, the first packet sent by a host to establish a TCP connection is a SYN packet. This packet was generated by my going to a web browser on my local machine. As you can see my machine's IP address is x.y.2.75 . Also note that in the Ethernet packet headers, the source and destination MAC addresses are in the Ethernet portion of the header. Note that my local machine opened up port 4836, which will only accept connections coming back from the host that it is trying to SYN with (IP 216.125.253.135).

Packet 2 SYN-ACK

My local host has now accepted an SYN-ACK packet back from the server located at 216.125.253.135 to my local port 4836 which was created just for this TCP connection.

Packet 3 ACK-ACK

Notice how as soon as my client recieves the ACK-ACK packet it immediatley begins the transmission, before -in fact- it sends the ACK for the ACK-ACK packet it, sends the HTTP GET (Method 200) request to get the file from the web server. The common name for this packet is ACK-ACK but Ethereal shows it just like any other ACK packet.

Packet 4 The beginning of the transmission

Note that packet 4 is requested before packet 3 is ACKed, since the TCP connection is now considered to be established and the TCP sliding window has been negotiated on both sides in this process.

Packet 5 ACK for the ACK-ACK packet finally arrives

Look at the SEQ number on packet 5 and the ACK number on packet 3. Note how once a connection is established, the client sends it's ACK's back to the originating server by the servers ACK number field. This sequence of ACKs is what maintains the TCP Sliding Window.


| Top | Valid HTML 4.01! Valid CSS!