“One of the greatest features of the Linux operating system is its networking stack. It was initially a derivative of the BSD stack and is well organized with a clean set of interfaces. Its interfaces range from the protocol agnostics, such as the common sockets layer interface or the device layer, to the specific interfaces of the individual networking protocols. This article explores the structure of the Linux networking stack from the perspective of its layers and also examines some of its major structures.”
From http://tldp.org/HOWTO/NET3-4-HOWTO-4.html
“Developing a brand new kernel implementation of the tcp/ip protocol stack that would perform as well as existing implementations was not an easy task. The decision not to port one of the existing implementations was made at a time when there was some uncertainty as to whether the existing implementations may become encumbered by restrictive copyrights because of the court case put by U.S.L. and when there was a lot of fresh enthusiasm for doing it differently and perhaps even better than had already been done.”
The implementations are so different.
I checked out the link found the article to be a rather lightweight introduction to the tcp/ip protocol stack. It is appropriate for those new to networking.
If you are looking for something more “bare metal”, you’ll need a good book. Online articles just don’t have enough depth. I like Steven’s “Unix Network Programming”.
I think I didn’t make it clear. It’s a myth that Linux’s TCP/IP protocol stack is derived from BSD’s. But in fact it is written from scratch. The link briefly tells the story.
Steven’s “UNIX Network Programming” is absolutely good. But it’s about using the protocol stack. To learn the internals of protocol stack, I’d recommend “Understanding Linux Network Internals” (O’Reilly) for Linux’s protocol stack, and Stevens’ “TCP/IP Illustrated, Vol. 2” for BSD’s. Read them and you’ll know the two protocol stacks are entirely different.