Я пытаюсь получить более глубокое понимание того, как работает IIS.
http.sys я понимаю, это один из его основных компонентов. Однако у меня были проблемы с поиском легко усваиваемой информации об этом. Я не мог получить хорошую ментальную модель, пока я не услышал о WSK, тогда я думаю, что все это встало на свои места.
Из многих случайных поисковых запросов немного экспериментирования это мое текущее понимание высокого уровня, почему оно существует и как оно это делает.
Зачем:
Совместное использование портов и кэширование с более высокой производительностью.
Как:
Процессы пользовательского режима используют WinSock api, чтобы открыть сокет, прослушивающий порт, чтобы получить доступ к сетевой подсистеме, например tcp/ip. Программное обеспечение Kernal mode, такое как драйвер http.sys, использует Winsock Kernal Sockets (WSK) api для достижения той же цели, используя тот же пул номеров портов TCP, что и WinSock api.
IIS, веб-сервис или все, что хочет использовать http, регистрируется непосредственно с http.sys, используя уникальную комбинацию url/port. http.sys открывает сокет на этом порту с использованием WSK (если он еще не для другой комбинации url/port с тем же портом) и прослушивает.
Когда транспортный уровень (tcpip.sys) восстановил загрузку пакетов ip обратно в HTTP-запрос, который отправил клиент, он передает его http.sys через порт в запросе. Http.sys использует номер url/port, чтобы отправить ему соответствующий процесс, который анализирует его, однако он радует.
Я знаю, что кажется, что я отвечаю на свой вопрос, но я действительно не настолько уверен в этом и хотел бы закрыть его, чтобы я мог заняться более интересными вещами.
Я близко?