The guys over at 3 Leaf posted something up that really struck a cord with me. There are certainly developers out there that understand computer networks, but as a general rule most don’t really understand it any more than your average user.

Before I got into software development professionally I was actually a network administrator and general computer support guy. One of the things that spending time gave me was an appreciation for how things actually talk to each other – what is TCP/IP, what is HTTP, what is FTP, what is POP3 and SMTP. These questions that any network administrator should be able to answer – and I don’t just mean expanding out the acronyms. How does it actually work?

Well the way you find out is heading over to the Internet Engineering Task Force (IETF) web-site and reading Request for Comments (RFC) documents and Standards (STD). If you aren’t sure were to start – here are some entry level ones.

  • TCP/IP — A TCP/IP Tutorial (RFC1180)
  • Hypertext Transfer Protocol — HTTP/1.1 (RFC2616)
  • File Transfer Protocol (RFC959)
  • Post Office Protocol – Version 3 (RFC1939)
  • Simple Mail Transfer Protocol (RFC821)

Once you are armed with knowledge you will know how to read and send e-mail with nothing more than a TCP connection (thats telnet.exe folks), and you’ll know how to sniff a basic authentication username/password token out of a HTTP request. Ever wanted to send yourself an e-mail from Bill Gates – check this out!

BillGatesMail

Other commands that you should know about as a developer:

  • IPCONFIG
  • NBTSTAT
  • NETSTAT
  • NETSH
  • PING
  • TRACERT
  • ARP
  • FINGER
  • FTP
  • REXEC
  • RSH
  • ROUTE

Thats not even a complete list! Learn what they are and what they do, take the red pill.