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!
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.