一、深入web的请求过程

1.1、B/S网络架构概述

· 从前端到后端,都基于应用层协议HTTP来交互数据。一个请求就对应了一个操作,完成操作之后就断开了连接。基于这样的特点可以用来满足海量的用户的操作。这样的连接叫做短链接。

· 在浏览器中输入了一个链接,会发生的响应的步骤:

1、请求DNS将域名解析成相应的IP地址

2、通过IP找到对应的服务器

3、向这个服务器发起get请求

4、这个服务器返回默认的资源给用户使用的浏览器

·互联网上所有的资源都有一个URL。发布一个服务或者是一个资源道互联网上,一个自己的URL可以使网络上的用户访问到自己的资源或者是服务。

·必须基于HTTP与服务端交互。

·数据展示在浏览器中进行。获取数据之后,在浏览器上才能恢复出它原来的样子。

1.2、发起HTTP请求

·在网页中输入了一个URL然后按下回车键,就是发起了一个HTTP请求。

·不借助浏览器建立一个HTTP连接和建立一个Socket连接,然后写入的二进制数据必须符合HTTP的要求。

1、根据URL解析出的IP地址,和默认的80端口和远方的服务器建立Socket连接。

2、浏览器根据这个URL组装成一个get类型的HTTP请求头

3、通过outputStream.write发送到目标服务器,等待inputStream.read返回数据。

·发起一个HTTP请求,本质上就是建立一个Socket连接。

·HttpClient就是Java中处理HTTP请求的一个工具包。

有一个使用HttpClient的方法结构,在书本的 page.5 。

1.3、HTTP解析

·HTTP Header 掌握着互联网上成千上万的用户的数据的传输、用户浏览器的渲染行为、服务器的执行逻辑。在书本的 page.7 。

  1.3.1使用浏览器自带的调试工具查看 HttpHeader

  1.3.2浏览器的缓存机制

·浏览器会缓存一些之前打开这个页面的信息,在下一次打开的时候,可能会使用一些缓存的文件信息。 ·在使用F5刷新这个页面的时候,会在请求头中,加入一些信息,向服务器申明,需要最新的文件信息,而不是使用缓存的文件。

·追加的请求头是:Cache-Control:no-cache。

关于缓存的一些请求头:

1、Cache-Control:缓存控制,用来设置是否被缓存,以及怎么缓存。

2、Expires:缓存失效的时间,使用的是格林威治时间(GMT)。

3、Last-Modified/Etag:服务器上的资源最后一次更改的时间(GMT)。

4、If-Medified-Since:缓存的资源是不是最新的,如果是最新的,那么服务器就会返回一个304状态码,就不会返回新的数据。

5、Etag:使用编号来确定资源是不是新的。

1.4、DNS域名解析

1.4.1解析DNS域名的过程

域名解析,将域名解析成相应的IP地址

1、输入一个域名,浏览器会检查缓存中是否有这个域名的缓存。如果有,解析结束。

# 这个方法存在的弊端是缓存的时间不好掌握,使用TTL属性可以控制域名缓存的时间。

# 如果时间过长,域名和IP的变动,就会将用户带到错误的位置,如果太短会占用大量的解析时间。

2、如果浏览器的缓存中没有,就会在操作系统的缓存中寻找关于这个域名的信息。如果找到了,解析结束。

# 在Windows中,在C:\Windows\System32\drivers\etc\hosts文件中修改一个域名对应的IP。

# 也就是说可以将任意一个域名,通过对这个文件的修改,牵引到任意的IP地址。

3、如果上面的不走无法解决就会在真正的域名解析服务器中解析了。

# 第一个DNS解析的是:本地区域名服务器(LocalDNS)。这个域名解析服务器承担了大部分的域名解析工作。

# 它会缓存域名解析结果。

4、如果LDNS没有解决,就会到Root Server域名服务器,它会返回一个所查询的主域名服务器地址。

5、根据主服务器地址,会到全球只有13台的猪域名解析服务器(gTLD Server)进行解析。它们是全球顶级域名解析服务器。

6、LDNS向gTLD发送请求。

7、接受请求的gTLD服务器查找并返回这个域名对应的Name Server服务器地址。

#(可以理解为Name Server从gTLD中接受信息,解析出IP地址)

8、Name Server查找这个域名的IP,返回给Local DNS。

9、Local DNS 根据TTL值,缓存这个域名和IP的对应关系。

10、返回这个IP和TTL值给用户,并根据TTL值缓存在本地。

1.4.2跟踪域名解析的过程 | 在书本的 page.15 。

1.4.3清除缓存的域名

在本地(浏览器、操作系统)和LDNS会缓存域名和IP对应关系。

在书本的 page.18 。

1.4.4几种域名的解析方式

主要分为A记录、MX记录、CNAME记录、NS记录、TXT记录。

A记录:能将多个域名解析到桶一个IP地址。

MX记录:将某个域名下的邮件服务器解析到自己的Mail Server。

CNAME记录:为一个域名设置一个或者多个别名。

1.5、CDN的工作机制

CDN就是分布式网络(Content Delivery Network)。

CDN以缓存网站中的静态数据为主,例如CSS、JS、图片和HTML等数据。用户从主站服务器请求到动态内容了之后,再到CND中获取静态数据。从而加速网站的加载速度。

CDN要达到以下的目标:可扩展性、安全性、可靠性。

1.5.1 CDN的架构

首先向Local DNS服务器发起请求,经过迭代解析,然后回到这个域名的注册服务器去解析,在注册服务器,通过CNAME得到一个另外的域名。这个域名指向CDN中的均衡负载服务器,然后访问最近的CDN节点。

1.5.2均衡负载

均衡负载就是对工作量进行平衡,分摊到多个单元上执行,共同完成一个任务。提高了服务器的响应速度和利用率,解决了网络拥塞问题。

均衡负载架构的种类有:链路负载均衡、集群负载均衡、操作系统负载均衡。

链路负载均衡:负载均衡是指使用DNS的解析来实现的,用户最终访问哪个Web Server服务器由DNS Server来控制。

集群负载均衡又分为硬件负载均衡和软件负载均衡,其中

  硬件负载均衡:使用使用设备,这样的设备很昂贵。

  软件负载均衡:节约成本,但是一次访问请求要经过多次代理服务器,增加了网络负担。

操作系统负载均衡:利用操作系统级别的中断来实现负载均衡。

1.6、CDN的动态加速

CDN的动态加速:在CDN解析的过程中,通过动态的链路探测,来寻找最好的回源路径,通过调度DNS在将所有的请求在这条路径上回源。从而加快用户的访问效率。

深入web的请求过程的更多相关文章

  1. Http协议简单解析及web请求过程

    HTTP协议: HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统. 基于HTTP协议的客户端/服务器请求响应机制的信息交换过程包含下面几个步骤: 1)    ...

  2. web应用程序servlet的映射名称的规则及请求过程

    首先用MyEclipse创建一个web Project(工程名起为TestServletProject),新建一个Servlet(这里servlet的名字起TestServlet),将请求的servl ...

  3. web请求过程-学习使人快乐1

    智齿离开我10个小时了,现在除了书啥都不能啃········呜呜呜~     ~~~~~~~~~~~~~~~~~~~想滑滑梯~~~~~~~~~~~~~~~~~~~ 网络请求过程 web请求大多使用B/ ...

  4. WEB请求过程(http解析,浏览器缓存机制,域名解析,cdn分发)

    概述 发起一个http请求的过程就是建立一个socket通信的过程. 我们可以模仿浏览器发起http请求,譬如用httpclient工具包,curl命令等方式. curl "http://w ...

  5. 《深入分析Java Web技术内幕》读书笔记 - 第1章 深入Web请求过程

    第1章 深入Web请求过程 1 1.1 B/S网络架构概述 2 基于统一的应用层协议HTTP来交互数据. 1.2 如何发起一个请求 4 HTTP连接本质是建立Socket连接.请求实现方式:工具包如H ...

  6. Web请求过程总结

    Web请求过程总结 1.CND架构图 图片来源:深入分析JavaWeb技术内幕(许令波著) 2.发起HTTP请求 发起一个HTTP请求就是浏览器建立socket通信的过程,HttpClient开源的通 ...

  7. 1 深入Web请求过程

    1.1 B/S网络架构概述 B/S 网络架构从前端到后端都得到了简化,都基于统一的应用层协议HTTP来交互数据,与大多数传统C/S互联网应用程 序采用的长连接的交互模式不同,HTTP采用无状态的短连接 ...

  8. 爬取百度页面代码写入到文件+web请求过程解析

    一.爬取百度页面代码写入到文件 代码示例: from urllib.request import urlopen #导入urlopen包 url="http://www.baidu.com& ...

  9. [Web] Web请求过程之一:HTTP

    请求过程: 1.用户在浏览器输入 www.sdjtu.edu.cn 这个URL. 2.浏览器请求 DNS 服务器将这个 URL 解析成对应的 IP 地址. 3.浏览器向 IP 地址对应的这个服务器发起 ...

随机推荐

  1. tmux resurrect 配置

    概述 tmux 用了很长时间了, 快捷键定制了不少, 唯一的遗憾是没法保存 session, 每次关机重开之后, 恢复不到之前的 tmux session. 虽然也能忍受, 但是每天都手动打开之前的 ...

  2. Python爬虫【实战篇】scrapy 框架爬取某招聘网存入mongodb

    创建项目 scrapy startproject zhaoping 创建爬虫 cd zhaoping scrapy genspider hr zhaopingwang.com 目录结构 items.p ...

  3. CentOS7.x安装cobbler无人值守安装系统

    CentOS7.x cobbler无人值守安装 cobbler介绍 自打若干年前 Red Hat,推出了 Kickstart,不再需要刻了光盘一台一台地安装 Linux,只要搞定 PXE.DHCP.T ...

  4. CSS弹性盒模型(flex box)

    本文介绍的是 CSS3 规范中引入的新布局模型:弹性盒模型(flex box).随着响应式用户界面的流行,Web 应用一般都要求适配不同的设备尺寸和浏览器分辨率. 浏览器支持: 弹性盒布局的容器(fl ...

  5. 云计算openstack介绍

    一.云计算的前世今生 所有的新事物都不是突然冒出来的,都有前世和今生.云计算也是IT技术不断发展的产物. 要理解云计算,需要对IT系统架构的发展过程有所认识. 请看下 IT系统架构的发展到目前为止大致 ...

  6. POJ 2411 Mondriaan's Dream -- 状压DP

    题目:Mondriaan's Dream 链接:http://poj.org/problem?id=2411 题意:用 1*2 的瓷砖去填 n*m 的地板,问有多少种填法. 思路: 很久很久以前便做过 ...

  7. MonkeyRunner 综合实践

    综合实践 测试场景 连接设备,自动安装并启动考研帮app 启动后登录账号(账号zxw1234 密码:zxw123456),然后截图并保存到指定文件位置. 思路分析 连接设备 安装app 启动app 输 ...

  8. Tomcat启动报错,报找不到gdk_custom.jar

    在 tomcat/conf/context.xml 中新增如下配置 <Context> ... <JarScanner scanManifest="false"/ ...

  9. 【UOJ448】【集训队作业2018】人类的本质 min_25筛

    题目大意 给你 \(n,m\),求 \[ \sum_{i=1}^n\sum_{x_1,x_2,\ldots,x_m=1}^i\operatorname{lcm}(\gcd(i,x_1),\gcd(i, ...

  10. placeholder中文字添加换行方法

    需求: 文本域内的提示文字两行显示 解决方案: 表示回车 表示换行 <textarea id="textarea" maxlength="22" plac ...