If you want to learn about IP, TCP, UDP and some of the protocols below this I would highly recommend reading Richard Stevens book TCP/IP Illustrated, Volume 1: The Protocols.
For two reasons: It's probably one of the best introductions to the subject that has ever been written, and it's a model example of how a technical book should be written.
I'd be hard pressed to find a reason not to go this route at least once in your life. I know the material pretty well but I still re-read Stevens books every few years just because it is so good.
"I'd be hard pressed to find a reason not to go this route at least once in your life. I know the material pretty well but I still re-read Stevens books every few years just because it is so good."
Then again, that's a lot of effort to spend on something that the vast majority of us don't need to know in much detail. The main reasons for knowing all the details are
- to write a new networking stack, or working on an existing one;
- to write or maintain server software or routers or caches or other software directly involved in networking;
- to break or exploit existing software.
(obviously 'because it's interesting' is a valid, but not practical reason to know)
If you write anything that communicates over a network (e.g. anything using HTTP), you need to know at least some of this stuff, otherwise you're not going to be able to explain why (for example) your service call latencies have a big spike around 200ms.
TCP/IP Illustrated books are super detailed. If you don't want to dive quite that deep I recommend "Computer Networking: A Top-Down Approach Featuring the Internet".
For two reasons: It's probably one of the best introductions to the subject that has ever been written, and it's a model example of how a technical book should be written.
I'd be hard pressed to find a reason not to go this route at least once in your life. I know the material pretty well but I still re-read Stevens books every few years just because it is so good.