[0] https://www.amazon.com/Understanding-Linux-Kernel-Third-Daniel/dp/0596005652 [1] https://www.amazon.com/Linux-Kernel-Development-Robert-Love/dp/0672329468 -ss
What really sets this book apart, in my opinion, is just how readable it is. I haven't run across anything with quite the same combination of style and depth for Linux.
You could read through something like The Linux Programming Interface [1] or Understanding the Linux Kernel [2] and with effort extract much of the same information, but without the pace/structure/commentary that I think this book does so well.
Thing is, conceptually much of what you'll read in this book will be applicable to Linux just fine and having read it will make it far easier to grok how/where the two differ.
1: http://www.amazon.com/dp/1593272200 2: http://www.amazon.com/dp/0596005652
I encountered many of these while reading through Understanding The Linux Kernel [0] and The Linux Programming Interface [1].
Both are great books which are primarily about the "how" of the kernel, but cover a lot of the "why" of the design and algorithms as well.
It's very hard and dense to read, but I don't think there's a better book out there about a networking stack implementation.
It might be too much implementation-focused for your taste though (it was for mine), in which case one of the other books more focused on protocols (already suggested in other comments) might be a better choice.