Through The Ether And Back Again: What Happens To A Packet When You Send It

Audience level:
High Performance Computing
March 9th 5:20 p.m. – 6 p.m.


Many - perhaps even most - Python software involves a network, at least a little bit. You've probably written some yourself. But do you really know what happens - to your kernel, to your ethernet card, to Python - when you call socket.send()? Come to this talk and find out: if you dare.


Have you ever wondered what happens when you actually send some data over a TCP network connection? To a Python programmer, it looks like you just call one method with some bytes. But in reality, there's so much stuff that gets involved:

  • Python hands off the data to the C library.
  • The C library hands the data to your kernel.
  • The kernel pokes some data into your ethernet card.
  • Your ethernet card bounces some electrons off a switch.
  • The switch sends those electrons out, possibly all the way to the internet.
  • Later, they hit somebody else's ethernet card, which goes through the kernel, which reassembles the data stream, and wakes up a process, and gets read.

I will talk about each of these different steps, how they work, what technology is involved, and, most relevant to your Python programs: how they can fail.