A Packet's Journey (Pt. 1: NAT)

Sid Shanker - 06/07/2018

Goals

Impress upon you that:

  • Networks are cool and worth learning about
  • Networks are very inelegant (but still worth learning about)!

Information gets from your computer to the internet...somehow

Sid's Macbook

Google Server

RC Router

The internet

Google Router

Lots of different protocols in play here!

  • Uses Ethernet to get data to the router
  • Uses IP to move packets across the internet
  • Uses TCP to implement that actual web application  

IP Addresses

  • You've seen 'em: 172.16.254.1
  • Used to designated different devices on a computer network
  • Two protocols, ipv4 and ipv6, we're running out of ipv4 addresses!
  • There are both private IPs and public IPs

An IP Header

Source and destination address are both IP Addresses

TCP Very Quickly 

  • Higher Level network protocol that ensures reliability of packet delivery
  • TCP data is inside the IP packets
  • IP can be used to transmit other protocols too

A typical TCP packet

Private Network

Public Internet

Google Router

RC Router

Private Network

has public ip

computer

computer

computer

computer

computer

computer

computer

computer

My question: if all Google knows is the public IP address of my router, how do packets make it back to me?

Introducing: the NAT

Answer: A Disappointing Hack

Router

Original IP Packet:

private ip: 10.0.0.1

original port: 65419

 

Modified IP Packet:

source ip: 207.251.103.46

new "port": 72192

 

NAT Table:

out-ip:out-port             | local-ip:local-port     

207.251.103.46:72192 |10.0.0.1:65419

                                   ....

Exercise for the reader: How could this work with a transport-protocol that doesn't use ports?

Moral of the story: sometimes you have to make compromises for things to work in the real world.

A Packet's Journey Pt. 1

By Sid Shanker

A Packet's Journey Pt. 1

  • 1,392