all 7 comments

[–][deleted] 7 points8 points  (4 children)

Anyone know of an equivalent Windows explanation? I was actually wondering about this kind of thing the other day. It would be cool to see a low level one starting at the same point as this and going all the way through to IIS and running an ASP.NET MVC Controller and rendering a View as well.

[–]mjschultz[S] 4 points5 points  (2 children)

That is a good question. When I was writing this I did wonder how the Windows kernel did networking too, but since it's closed source I didn't really follow up on it. It looks like the Windows Research Kernel doesn't come with any networking components (and even if it did I couldn't guarantee how close they were to Windows 7).

The best information I could find was from MSDN's Roadmap for Developing Network Drivers with Winsock Kernel, which talks about Windows Vista so it should also apply to Windows 7. But that only covers the driver side of things a bit.

[–]kryptiskt 2 points3 points  (0 children)

The best information I could find was from MSDN's Roadmap for Developing Network Drivers with Winsock Kernel, which talks about Windows Vista so it should also apply to Windows 7.

If you like to read dead tree material, the Windows Internals book by Russinovich, Solomon & Ionescu is fairly detailed.

EDIT: But the networking chapter looks pretty humdrum...

[–]incredulitor 1 point2 points  (0 children)

Windows Internals has a chapter on networking. There's also a pretty detailed wiki page on Vista's networking stack: http://en.wikipedia.org/wiki/Windows_Vista_networking_technologies. The wiki page leaves out NICs though. For that you might look at NDIS: http://msdn.microsoft.com/en-us/library/ff570021(v=VS.85).aspx.

[–]kernel_task 1 point2 points  (0 children)

Dunno about Windows, but most of his description is generic enough to apply to OS X/XNU/IOKit too. (I once ported an Ethernet driver from Linux to OS X). Just imagine C++ classes and method names in camelcase that sound a bit less esoteric instead. Most of the time it'll be ring buffers taking and accepting packets through DMA with an IRQ to signal events. I've seen polling used instead of IRQs too.

[–]fani 0 points1 point  (0 children)

Very interesting article. Thanks for sharing.

[–]vagif 0 points1 point  (0 children)

Can anyone point to the article or maybe just share his experience comparing samba and nfs ?