1、浏览器:浏览器本身是一个Socket客户端+渲染引擎。一方面,它将用户的请求封装成一个请求报文,通过Socket的方式将请求报文发送给IIS服务器。另一方面,它将IIS服务器发送来的响应报文做html解析。
2、IIS服务器:IIS服务器的操作系统分为内核模式和用户模式,内核模式中跑的是和系统相关的一些进程,其中有一个http.sys的模块,它主要负责监听浏览器发送过来的http请求。用户模式中跑的是一些应用程序,其中有一个IISAdmin主服务,它寄宿在Inetinfo.exe进程中,里面放的是IIS的主要配置信息(Metabase)。另外一个是w3svc管理服务,它寄宿在SvcHost.exe进程中。负责管理应用程序池和网站(网站的重启等),另外做一些初始化工作:初始化几个队列出来(根据主进程的配置信息),
3、当http.sys监听到一条来自客户端的请求时,把请求放到对应的工作队列里面去(工作队列有多个),再通知w3svc服务,w3svc服务看当前请求对应的网站处理程序有没有启动起来,如果已经启动起来,则直接让网站应用程序取对应的队列中取请求进行处理。如果没有启动起来,负责创建网站应用程序池。每个应用程序池中跑一个或多个网站,一个应用程序池可以启动多个进程,每个进程都称之为一个工作进程。工作进程到内核模块相应队列中取