看深入分析javaweb技术内幕,做个摘抄总结
B/S(Browser/Server)网络架构,基于统一的应用层协议HTTP来交互数据,HTTP采用无状态的短连接的通信方式,通常情况下,一次请求就完成了一次数据交互,也对应一个业务逻辑。然后连接就断开了。这种情况下,相比长链接,服务器能够同时服务更多的用户。
B/S架构大多要求满足海量用户的访问请求,同时保持用户请求的快速响应。
请求流程如下:
1,用户在浏览器输入URL,www.xx.com。
2,浏览器请求DNS把这个URL的域名部分(www.xx.com)解析成对应的IP。
3,浏览器通过ip去寻找对应的服务器地址,向服务器发起一个get请求。
4,这时的服务器地址,可能是一个负载均衡设备,负责平均分配所有用户的请求,指定真实处理请求的服务器,比如Tomcat/Jetty/JBoos服务器。
5,Tomcat/Jetty/JBoos服务器收到请求后,会对请求需要的数据类型进行判断,是存储在分布式缓存(比如redis)里,还是静态文件(文件系统)中,还是数据库中,去获取对应的数据后,把处理好的数据返回给浏览器。
6,浏览器接收到数据,并且解析,解析数据的时候可能会发现,还需要一些静态资源,(如CSS,JS或者图片),于是又再次发起HTTP请求,重复3-4的过程。
7,服务器这时候把请求通过反向代理,交由CDN去完成静态资源的请求。
8,浏览器接收并缓存静态资源。
HTTP解析
常见的HTTP请求头
请求头 | 说明 |
---|---|
Accept-Charset | 用于指定客户端接受的字符集 |
Accept-Encoding | 用于指定可接受的内容编码,如Accept-Encoding:gzip.deflate |
Accept-Language | 用于指定一种自然语言,如 Accept-Language:zh-cn |
Host | 用于指定被请求资源的Internet主机和端口号,如Host:www.taobao.com |
User-Agent | 客户端将它的操作系统,浏览器和其他属性告诉服务器 |
Connection | 当前连接是否保持,如Connection:Keep-Alive |