Welcome to Window’s Web Transports Blog

This is a collaborative Weblog from the Web Transports Team in Windows Networking. As a team we work on the http stacks in Windows; http.sys the kernel part of the IIS 6.0 Web Server (part of Windows Server 2003) and its own developer API, wininet.dll which is the client side HTTP stack at the heart of Internet Explorer, and winhttp.dll which is the client side HTTP stack favored by server applications relying on performance and reliability.


At this point we aren’t sure exactly what sort of information we will put up here, but it probably will be related to whatever we get asked in the comments and whatever we are working on that week. Please don’t hesitate to post a comment with any questions or topics you wish us to talk about in the future. A lot of it will be developer focused, some content will be end user focused (especially on the wininet.dll/IE side).


If you don’t know what an HTTP stack is, it’s a protocol stack that talks the W3C’s HTTP protocol on behalf of applications. That’s the main protocol used on the web. It’s gone through a few versions, from 0.9 to 1.0 and now 1.1. We’ll probably write an entry or point to some good references on what has changed over time in the protocol’s evolution.


By the way, my name is Ari Pernick, and I’m a test development lead for web transports. As we post over time you will get an introduction to some of the Developers, Testers, Program Management, Product Support and others who contribute to our team.


UPDATE: In the comments below I claimed that pipelinning would be in Longhorn Version of Winhttp. It was early in the product cycle and since then, for a number of reasons, the code changes to support pipelinning support didn’t make it into the final release. Sorry for any confusion.

Comments (7)

  1. If you’re looking for something to post about, I’m curious about something:

    Do you guys plan to support HTTP pipelining eventually? In the server? In the client? I notice that the new Indigo messaging system has a nice pipelined architecture. Is the http Indigo transport implemented using http.sys/wininet.dll, and if so, does that mean Indigo will not be pipelined when using http?

  2. Ari Pernick says:

    Thanks for the question!

    IIS 6 via http.sys and previous versions of IIS support pipelining. Client side, wininet won’t support pipelining in the forseeable future and winhttp will support pipelining in the next major OS release (Longhorn). From what I understand Indigo uses whidbey version of the net classes. I understand that the net classes on the server side use http.sys and the client side has it’s own sockets based http stack that supports pipelining. I’ll try to get a bigger picture of what http stacks are available and what the plus and minuses of each them are in a future post.

  3. Ari Pernick says:

    Don Box, who is much more authoritative about Indigo then I, has a blog entry sorta on this topic: http://www.gotdotnet.com/team/dbox/default.aspx?month=2003-11

    in the entry title’d ‘Is Longhorn "Managed"?’

  4. Ricky Datta says:

    AcceptEx(), TransmitPackets(), Asynchronous socket calls – are these warpped in 2.0 version of the FX ?



  5. John says:

    Why can’t Microsoft continue to support Winhttp.dll on older releases of the OS? Why are new features always on the latest (and far future) versions of the OS? Can’t you decouple these features more from the core OS?

    P.S. I’m not a member of the Microsoft hater club, just a developer who can’t stand having to upgrade OS’s just to take advantage of the latest library advances.

  6. Anthony says:

    These APIs aren’t exposed directly from the Sockets class. If you call BeginAccept/EndAccept on v2.0 of the framework, then it will be using AcceptEx under the covers. I believe a new method for sending a file over a socket has been added in v2.0 as well (which underneath will use TransmitFile). I don’t believe there are plans for TransmitPackets though.

  7. Akien MacIain says:

    This might be more of a support question, but here goes… Running ZoneAlarm firewall, couldn’t get either IIS or Apache to work. Then used the apache directive which says basically Use Accept() instead of AcceptEx()… Is there a way to do that in IIS (I’m using IIS 5.0)

    Thanx. akienm@weirdness.org