第一章 深入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采用无状态的短连接 ...
随机推荐
- 【python 3.6】从网站抓图并存放到本地路径
#!/usr/bin/python # -*- coding: UTF-8 -*- _author_ = 'BH8ANK' import urllib.request import re import ...
- 总结python 元组和列表的区别
python的基本类型中有元组和列表这么俩个,但是这哥俩却比较难于区分,今天就来用简单的实例说明两者的不同. 列表:1.使用中括号([ ])包裹,元素值和个数可变 实例: aaa = ['sitena ...
- UVALive - 6856 Circle of digits 后缀数组+二分
题目链接: http://acm.hust.edu.cn/vjudge/problem/82135 Circle of digits Time Limit: 3000MS 题意 把循环串分割成k块,让 ...
- 【Linux】- vi/vim
所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在. 但是目前我们使用比较多的是 vim 编辑器. vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正 ...
- Java中的日志——Java.util.logging、log4j、commons-logging
Java中给项目程序添加log主要有三种方式,一使用JDK中的java.util.logging包,一种是log4j,一种是commons-logging.其中log4j和commons-loggin ...
- [剑指Offer] 44.翻转单词顺序列
题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,“student ...
- Foundation框架—时间处理对象NSDate
NSDate类用于保存时间值,同时提供了一些方法来处理一些基于秒级别时差(Time Interval)运算和日期之间的早晚比较等. 1. NSDate的构造方法和构造获取实例的属性 用于创建NSDat ...
- 【zoj2314】Reactor Cooling 有上下界可行流
题目描述 The terrorist group leaded by a well known international terrorist Ben Bladen is buliding a nuc ...
- python中深copy,浅copy
版权声明:本文为博主原创文章,未经博主允许不得转载. >>> mylist1 = [1, 2, 3, 4] >>> myl = mylist1 >>&g ...
- BZOJ1566:[NOI2009]管道取珠——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=1566 https://www.luogu.org/problemnew/show/P1758 题目 ...