我们经常用浏览器上网,但是大家想过没有在浏览器和服务器之间是怎么交互的吗?接下给大家说说web页面请求的原理(高手直接跳过)。

首先我们不要把服务器想的太神圣了,其实他也就是一台 没有显示器的电脑,处理速度比普通电脑快罢了。

服务器端安装的IIS软件,在客户端是浏览器;

客户端: 

当我们在浏览器输入网址并回车后,如果你是第一次访问这个网址例如www.itcast.cn,你的浏览器并不知道这个网站的IP,所以第一次请求时发向DNS服务器,DNS服务器查询到该网址对应的IP后,再给你发回,然后浏览器根据IP地址向www.itcast.cn对应的web服务器发送请求。

服务器端:

首先在服务器端有一个监听请求的东东,那是什么呢?是Socket,负责监听请求的Sockets发现有请求到达,他会根据socket.Accept()立即创建一个socket负责与发送请求的 浏览器进行通信(浏览器本来就是用socket与服务器通信的,因此浏览也就是一个socket),因为监听请求的的socket占用一个线程,因此我们也创建另一个线程专门处理客户端浏览器的请求。

接下来分析请求的页面的路径和页面的类型:如果发现请求的是静态页面,我么直接读取静态页面页面,并生成响应报文头(text/html),通过socket发回给浏览器;如果请求的是图片的话,生成响应报文头(image/jpeg),和图片内容一起发回给客户端,想css,js之类的都是基本一样的处理方式;

如果发送来的请求是动态页面,那服务器该怎么处理请求呢(IIS没有直接处理动态页面的能力),其实IIS是通过可扩展插件来处理的,例如asp.net做的动态页面是通过 netframework来处理的 ,其他的暂时不理会(偶不会啊)!当页面处理完毕后,将处理完的结果交给socket,由socket 发回给浏览器。

如果客户端请求的页面在服务器端不存在,服务器给客户端发回的响应报文中提示有错误信息404,还有其他一些错误信息代码,在这里就不再多说了!

 

关于.netFramework内部是怎么处理动态页面的,接下来的文章我会讲解的,敬请关注! 

 

作者: 樊林冲 发表于 2011-08-24 11:31 原文链接

推荐.NET配套的通用数据层ORM框架:CYQ.Data 通用数据层框架
新浪微博粉丝精灵,刷粉丝、刷评论、刷转发、企业商家微博营销必备工具"