End to End Operation
Suppose we have the following scenario:
- Host H1 boots up
 - Fetches small file from H5
 - Goes idle
 - Fetches two small files from H2

 
Here’s what will happen:
- DHCP to get configuration
- UDP Discover => broadcast
 - UDP Offer from H4 <- H1
 - UDP Request => broadcast
 - UDP ack <- H1
 
 - ARP for DNS server
- ARP request for H3 => broadcast
 - H3 ARP response <- unicast to H1
 
 - Resolve H5
- UDP DNS request for H5.com => H3
 - UDP DNS response <- H1
 
 - ARP for R1
- ARP request for R1 => broadcast
 - ARP response from R1 <- H1
 
 - TCP connection to H5
- TCP SYN => H5
 - TCP SYNACK <- H1
 - TCP ACK => H5
 
 - HTTP request to H5
- TCP HTTP GET => H5
 - TCP ACK <- H1
 - HTTP response <- H1
 - ACK => H5
 - (after download completes and connection becomes idle for a while) FIN => H5
 
 - TCP disconnect from H5
- ACK <- H1
 - FIN <- H1
 - ACK => H5 The rest of the steps are extremely similar to the above.
 
 - Resolve H2
 - ARP for H2
 - TCP to H2
 - HTTP to H2
 - HTTP to H2 (2)
 - TCP disconnect from H\2