
Computer Networking: Principles, Protocols and Practice - lainon
http://cnp3book.info.ucl.ac.be/
======
warp_factor
I took the course at UCL that uses that textbook and started to work
afterwards at one of the big networking vendors. This course (and textbook)
was so helpful and covered everything I needed to know to get started. Highly
recommended, and it is free.

------
aklemm
Which is the preferred version? There's a newer 2nd edition available there,
but not many updates and lots of warnings about it being a draft.

------
pm90
This looks really nice!

As an aside, is there a course where its not just details in text but some
actual hands on mini-implementation work too? I like reading books but for
programming I've found I internalize the material better by working through an
actual project, even if its a toy project

~~~
apstls
A good way to internalize how everything works is to mess around with pcaps
and Wireshark. Try using libpcap (or even just scapy) to decode protocols and
see if you can match the Wireshark output, then move up to reconstructing
streams and dealing with quirks like fragmentation, etc.

If you're looking for something more structured and/or in-depth, try
implementing a basic userspace tcp/ip stack. We had a few projects related to
this back in college that I unfortunately can't seem to find right now, but
there are undoubtedly some solid resources out there (I recall seeing
[http://www.saminiir.com/lets-code-tcp-ip-stack-1-ethernet-
ar...](http://www.saminiir.com/lets-code-tcp-ip-stack-1-ethernet-arp/) on HN a
while ago.)

If you wanted to get more experience on the enterprise networking side of
things, instead of the software side, search around for training labs for
Cisco certs like the CCNA exam. I remember seeing some virtual lab exercises
that looked pretty interesting, though I never did any more than look them up
so I can't vouch for any myself.

------
lmy86263
it can be as a reference

