首页 > 代码库 > 第一章 深入web请求过程

第一章 深入web请求过程

B/S架构带来了以下两方面的好处:

(1) 客户端使用同一个的浏览器。浏览器有统一性,不需要特殊的配置。浏览器的交互性使得用户使用它非常简单。

(2) 服务端基于统一的HTTP。和传统的C/S架构使用自定义应用层协议不同,B/S架构使用HTTP。使用HTTP也为服务提供商

  简化了开发模式,使得服务器开发者可以采用相对规范的开发模式,节省开发成本。基于HTTP的服务器有很多,Apache, IIS, Nginx, Tomcat, 

  JBoss等。这些服务器可以直接拿来使用,不需要单独来开发。

 

1.1 B/S 网络架构概述

  B/S基于统一的应用层协议HTTP来交互数据,与传统的C/S互联网引用采用长连接不同,HTTP采用无状态的短连接的通信方式,通常,一次请求就完成一次数据交互。这种方式能同时服务多用户。

  当用户在浏览器输入URL回车后,将会发生很多操作。首先它会请求DNS把这个个域名解析成对应的IP地址,然后根据IP地址找到对应的服务器,向这个服务器发起一个get请求,服务返回数据资源给访问的用户。

  服务器可能有很多台,到底用哪一台来处理请求,这需要一个负载均衡设备来平均分配用户请求;

  请求的数据是存储在分布式缓存里还是一个静态文件中,或是在数据库中;

  当数据返回浏览器时,浏览器解析数据发现还有一些静态资源(如CSS,JS或者图片)时又会发起另外的HTTP请求,而这些请求的静态资源很可能在CDN上,那么CDN服务器又会处理这个用户的请求。

  技术分享

不管网络结构如何,始终有一些固定不变的原则:

(1) 互联网上所有的资源都要用一个URL来表示。

(2) 必须基于HTTP与服务器端交互。

(3) 数据展示在浏览器端。

1.2 如何发起一个请求

  如何发起一个HTTP请求和如何建立一个Socket连接区别不大,只不过outputStream.write写的二进制字节数据格式要符合HTTP。浏览器在建立Socket之前,必须根据地址栏里输入URL的域名DNS解析出IP地址,再根据这个IP地址和默认的80端口号与远程服务器建立Socket连接,然后浏览器根据这个URL组装成一个get类型的HTTP请求头,通过outputStream.write发送到目标服务器,服务器等待inputStream.read返回数据,最后断开这个连接。

 

  

第一章 深入web请求过程