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).
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.
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.
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.
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 |