第一章 深入web请求过程
B/S架构的的好处:
- 客户端使用统一的浏览器(browser)。由于浏览器的统一性,它不需要特殊的配置和网络连接,有效的屏蔽了不同服务提供商提供给用户使用服务的差异性。另外一点是浏览器的交互特性使得用户的使用非常简便,只要有互联网的使用经验,即可快速掌握使用方法。
- 服务端(server)基于统一的HTTP协议。和传统的C/S架构使用自定义的应用协议不同,B/S架构使用的都是统一的HTTP协议,使得开发商都是用比较规范的开发模式,这样可以大大减少开发成本。另外由于使用统一的协议,可使用的服务器就很多,直接使用无须开发如:tomcat、nginx、jboss等等。
B/S网络架构概述:
当我们在浏览器输入需要访问的URL时,将会发生很多操作。首先它会请求DNS把这个域名解析成对应的IP地址,然后根据这个IP地址在互联网上找到对应的服务器,向这个服务器发送一个get请求,由这个服务器决定返回默认的数据资源给访问的用户。
在服务器端则根据服务器的业务处理逻辑来决定请求的处理:服务器可能有很多台,到底指定哪一台来处理,这需要一个负载均衡的设备来处理分发用户的请求;还有我们需要的数据资源是在分布式缓存里还是在一个静态文件中,或者是数据库中;当数据返回浏览器时,浏览器处理数据时还会再次发送请求,而这些请求很可能会在CDN上,那么CDN服务器是否会处理用户的这个请求;这其中每个细节都将决定这个请求最终是否会成功。
HTTP协议需要遵守的原则:
- 互联网上所有的资源都要用一个URL来表示。URL就是一个统一资源定位符,如果你要发布一个服务或者资源到互联网上,让别人能够访问到,那么首先你就必须拥有一个独一无二的URL。
- 必须基于HTTP协议与服务端交互。
- 数据展示必须在浏览器中进行。
DNS域名解析:
1.浏览器会检查缓存中有没有这个域名对应的解析过的IP地址,如果缓存中有,这个解析过程就将结束。
2.如果用户的浏览器缓存中没有,浏览器会查找操作系统缓存中是否有这个域名对应的DNS解析结果。其实操作系统也会有一个域名解析的过程在windows中可通过C:\Windows\System32\drivers\etc\hosts文件来设置,你将可以将任何域名解析到任何能够访问的IP地址。
3.在我们的网络配置中都会有“DNS服务器地址”这一栏,操作系统会将这个域名发送给这里设置的LDNS,也就是本地区的域名服务器,即本地的网络营运商(电信或联通),就是常说的SPA,他们的服务器性能都比较好,一般都会缓存域名解析结果。
4.如果LDNS还是没有命中,就直接到ROOT SERVER域名服务器请求解析。
5.根据域名服务器返回给本地域名服务器一个所查询域的主域名服务器地址(gTLD Server)。
6.本地域名服务器再向上一步返回gTLD服务器发送请求。
7.接受请求的gTLD服务器查找并返回此域名对应的Name Server域名服务器地址,这个Name Server通常就是你注册的域名服务器。
8.Name Server域名服务器会查询存储的域名和IP映射关系表。
9.返回该域名对应的IP和TTL值,Local DNS Server会缓存这个域名和IP对应关系。
10.把解析的结果返回给用户,用户根据TTL值缓存在本地系统缓存中,域名解析过程结束。
第一章 深入web请求过程的更多相关文章
- 第一章 深入Web请求过程(待续)
B/S网络架构概述 如何发起一个请求 HTTP解析 DNS域名解析 CDN工作机制
- 《深入分析Java Web技术内幕》读书笔记 - 第1章 深入Web请求过程
第1章 深入Web请求过程 1 1.1 B/S网络架构概述 2 基于统一的应用层协议HTTP来交互数据. 1.2 如何发起一个请求 4 HTTP连接本质是建立Socket连接.请求实现方式:工具包如H ...
- 第一章 了解Web及网络基础
第一章 了解Web及网络基础 Web建立基础.HTTP如何诞生发展 1.使用HTTP协议访问Web 在浏览器地址栏中输入URL之后过程: 1)DNS 解析:浏览器查询 DNS,获取域名对应的 IP 地 ...
- 第一章 创建WEB项目
第一章 创建WEB项目 一.Eclipse创建WEB项目 方法/步骤1 首先,你要先打开Eclipse软件,打开后在工具栏依次点击[File]>>>[New]>>&g ...
- Http协议简单解析及web请求过程
HTTP协议: HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统. 基于HTTP协议的客户端/服务器请求响应机制的信息交换过程包含下面几个步骤: 1) ...
- Web请求过程总结
Web请求过程总结 1.CND架构图 图片来源:深入分析JavaWeb技术内幕(许令波著) 2.发起HTTP请求 发起一个HTTP请求就是浏览器建立socket通信的过程,HttpClient开源的通 ...
- 爬取百度页面代码写入到文件+web请求过程解析
一.爬取百度页面代码写入到文件 代码示例: from urllib.request import urlopen #导入urlopen包 url="http://www.baidu.com& ...
- web请求过程-学习使人快乐1
智齿离开我10个小时了,现在除了书啥都不能啃········呜呜呜~ ~~~~~~~~~~~~~~~~~~~想滑滑梯~~~~~~~~~~~~~~~~~~~ 网络请求过程 web请求大多使用B/ ...
- 1 深入Web请求过程
1.1 B/S网络架构概述 B/S 网络架构从前端到后端都得到了简化,都基于统一的应用层协议HTTP来交互数据,与大多数传统C/S互联网应用程 序采用的长连接的交互模式不同,HTTP采用无状态的短连接 ...
随机推荐
- 查找当前对象中的方法对象的属性叫做_event_name的方法
setattr( self, '_events', {e._event_name: e for _, e in getmembers(self, lambda x: ismethod(x) and h ...
- Java IO(文件操作工具类)
FileOperate实现的功能: 1. 返回文件夹中所有文件列表 2. 读取文本文件内容 3. 新建目录 4. 新建多级目录 5. 新建文件 6. 有编码方式的创建文件 7. 删除文件 8. 删除指 ...
- 【转】c++面试基础
1,关于动态申请内存 答:内存分配方式三种: (1)从静态存储区域分配:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在. 全局变量,static变量. (2)在栈上创建:在执行函 ...
- iOS- Apple零配置网络协议Bonjour的使用?
1.前言 这段时间为了解决公司App的网络离线需求,做了个Apple推出的零配置网络协议Bonjour的Test,主要是为了解决iOS设备的IP获取,之前是可以使用socket的广播来实现,但是使用A ...
- python模拟SQL语句操作文件
1.需求 在文本界面输入SQL语句,查询相应的数据,例如输入下面的语句 print(''' 支持大小写的SQL语句查询,大写或者小写都可以 1. select * from db1.emp 2. se ...
- 【转】log4j.properties文件的配置
一.前言 log4j使用的还是比较多的,但是对于其配置又很难描述清楚要怎么配置,说明我自己对于log4j的配置并不是非常熟悉,所以在网上找了一篇详尽的 博文转载,在此非常感谢原文作者的辛苦付出,如有需 ...
- idea超炫的自定义模板
idea超炫的自定义模板 idea 有些快捷键 sout -> System.out.println() ,输入sout,idea能自动补全代码, 这种约定的快捷方式大大提高了效率, 而id ...
- RT-thread组件初始化代码分析
RT-thread提供了组件化功能,具体实现是在components/init文件夹下components.c文件中实现的.应用组件化功能首先在rtconfig.h中添加宏定义#define RT_U ...
- Wannafly 挑战赛16 A 取石子
题目描述 给出四堆石子,石子数分别为a,b,c,d.规定每次只能从堆顶取走石子,问取走所有石子的方案数. 输入描述: 在一行内读入四个由空格分隔的整数a,b,c,d, 输入均为不超过500的正整数 输 ...
- BZOJ4755 JSOI2016扭动的回文串(二分答案+哈希)
显然答案应该是由单串以某位置为中心的极长回文串继续在另一个串里拓展得到的.枚举中间位置二分答案,哈希判断即可.注意考虑清楚怎么处理偶回文,比如像manacher一样加分隔符. #include< ...