210 likes | 273 Views
The complete picture. Linux Network Management. End to End Connection. Being able to describe the end to end connection sequence is a useful thing Very popular question on technical interviews Usually necessary in troubleshooting
E N D
The complete picture Linux Network Management
End to End Connection • Being able to describe the end to end connection sequence is a useful thing • Very popular question on technical interviews • Usually necessary in troubleshooting • If you don't know how it should work, you won't recognize problems when you see them
HTTP Connection How do we google??
What do we need? • We need IP addresses for both ends • We need MAC addresses for anything on the local subnet • End station if it's on local subnet • Gateway MAC if address is not local • We need port numbers for TCP/UDP
What do we have??? • A name for the destination - google.com • Our own source IP address • Our own MAC address • Our own gateway IP address • Our own DNS server IP address • Well-known port addresses (/etc/services) • Our own subnet mask
ARP EXCHANGE what's your MAC? 00:C3:04:22:17:0A
Step 1 - Get the router MAC We need to get the IP address of the name google.com We will get that from the DNS server (IP in resolv.conf) Since the IP address of the DNS server is probably not local we need to send the DNS request to the router For that we need the MAC address of the router Packet 1 Broadcast ARP request to router port IP
Step 2 - ARP response Assuming the router port is up we will get an ARP response with the MAC of the router port IF THERE IS A PROBLEM WE WILL SEE A TRACE WITH REPEATED ARP REQUESTS FOR THE ROUTER PORT AND NOTHING ELSE Packet 2 Unicast ARP response from router port
DNS LOOKUP who is google.com? 216.239.51.100 DNS SERVER
Step 3 - DNS Request for Google.com Our Source IP and Source MAC Randomly generated Source Port Destination MAC is router port Destination IP is the DNS server Well known UDP DNS Port 53 Packet 3 DNS Query to DNS Server (in resolv.conf) for google.com
Step 4 - DNS Response Destination IP and Destination MAC to us UDP Destination Port same as Source in request Source MAC is router port Source IP is the DNS server Source UDP DNS Port 53 Packet 4 DNS Response from DNS Server with IP of google.com
TCP SYN-SYN/ACK-ACK SYN SYN/ACK WEB SERVER ACK
Step 5 - TCP SYN Source MAC and IP from us Random TCP port Destination MAC is router port Destination IP is the HTTP Server Destination HTTP Port 80 Packet 5 TCP SYN to HTTP Server
Step 6 - TCP SYN/ACK Destination MAC and IP is to us Same TCP port we used in SYN Source MAC is router port Source IP is the HTTP Server Source HTTP Port 80 Packet 6 TCP SYN/ACK from HTTP Server
Step 7 - TCP ACK Source MAC and IP from us Same TCP port Destination MAC is router port Destination IP is the HTTP Server Destination HTTP Port 80 Packet 7 TCP ACK to HTTP Server
HTTP GET - TCP ACK HTTP GET TCP ACK WEB SERVER
Step 8 - HTTP GET Source MAC and IP from us Same TCP port Destination MAC is router port Destination IP is the HTTP Server Destination HTTP Port 80 Packet 8 HTTP GET to HTTP Server It's possible to have the GET with the ACK flag set (Piggy-back ACK)
Step 9 - TCP ACK Destination MAC and IP is to us Same TCP port we used in SYN Source MAC is router port Source IP is the HTTP Server Source HTTP Port 80 Packet 9 TCP ACK from HTTP Server
HTTP RESPONSE - TCP ACK HTTP RESPONSE TCP ACK WEB SERVER
Step 10 - HTTP RESPONSE Destination MAC and IP from us Same TCP port (remember - socket pair defines TCP connection) Source MAC is router port Source IP is the HTTP Server Destination HTTP Port 80 Packet 10 HTTP RESPONSE from HTTP Server
Step 11 - TCP ACK Source MAC and IP is from us Same TCP ports Destination MAC is router port Destination IP is the HTTP Server Source HTTP Port 80 Packet 11 TCP ACK to HTTP Server