初学者,总结一下读书笔记,望海涵。

1.1 B/S网络架构概述

相比于C/S架构,B/S网络架构(Browser/Server)从前端到后端都得到了简化,都基于统一的应用层协议HTTP来交互数据,采用无状态的短连接来交互数据。

当一个用户在浏览器里输入网址时,会发生很多操作:

1.请求DNS把域名解析成对应的Ip地址

2.根据ip地址在互联网上找到对应的服务器

3.向服务器发起get请求,服务器返回数据资源给访问的用户。

4.数据返回浏览器时,若解析资源发现还有一些静态资源(css,js或图片),会再次发起HTTP请求。

5.发起的HTTP请求很可能会在CDN上,CDN服务器又会开始处理请求。

网络架构遵循的原则:

1.URL,统一资源定位符。互联网上所有资源都要用一个URL表示。

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

3.数据展示必须在浏览器中进行。

1.2 如何发起一个请求

发起一个HTTP请求的过程就是建立一个Socket通信的过程。(可以通过HttpClient来模拟)。

1.3 HTTP解析

B/S网络架构的核心就是HTTP。

HTTP Header控制着用户浏览器的渲染行为和服务器的执行逻辑。

可以通过F12查看HTTP请求的请求头和响应头。

查看HTTP信息的工具:Firebug HttpFox

当我们刷新一个页面时,在HTTP请求头中会增加一些请求头,它告诉服务端我们要获取最新数据而不是缓存。

  在请求头增加了两个请求项:Pragma:no-cache  和   Cache-Control:no-cache

  Expires 后面跟着一个日期和时间,超过这个时间值后,缓存的内容将失效。

  Last-Modefied/Etag 表示一个服务器上资源的最后修改时间。Etag 给每个页面分配唯一的编号,通过编号区分当前页面是否是最新的。

1.4 DNS域名解析

1.浏览器检查缓存中有无这个域名对应的解析过的ip地址。有则结束,无则进行下一步。

2.浏览器查找操作系统缓存中是否有这个域名对应的DNS解析结果。有则结束,无则进行下一步。

3.操作系统会把这个域名发送给这里设置的local DNS Server(本地域名服务器),例:学校,电信,联通。有则结束,无则进行下一步。

4.直接到Root Server域名服务器(根域名服务器)请求解析。

5.根域名服务器会返回给本地域名服务器一个所查询域的主域名服务器(gTLD Server,国际顶级服务器,全球13台)。

6.本地域名服务器向gTLD server发起请求

7.gTLD server查找并返回此域名对应的Name Server域名服务器地址(通常为所注册的域名服务器)

8.Name Server查询存储的域名和ip的映射关系表

9.Name Server将ip和TTL一起返回给本地域名服务器。

10.本地域名服务器将解析的结果返回给用户。用户根据TTL值缓存在本地系统缓存中。

可以用nslookup查询域名的解析结果。

ipconfig /flushdns 刷新缓存。

JVM也会缓存DNS的解析结果,在InetAddress类中完成。若要用InetAddress类解析域名,必须采用单例模式。

域名解析记录主要分为:A记录,MX记录,CNAME记录,NS记录,TXT记录

1.5 CDN工作机制

CDN,内容分布网络,构筑在现有internet上的一种先进的流量分配网络,其目的是通过现有的Internet中增加一层新的网络架构。使用户可以就近取得所需内容,提高用户访问网站的速度。

目前CDN以缓存网站中的静态数据为主。用户在从主站服务器请求到动态内容后,再从CDN上下载这些静态数据。从而加速网页数据内容的下载速度。

CDN:可扩展;安全性;可靠性、相应和执行。

CDN架构:

用户访问某静态css文件

1.2在用户本机上完成。

3.向本地域名服务器发起请求。

......迭代解析

7.在Name Server中,重新cname了另一个域名,查询到对应的Ip后,返回给本地域名服务器。

8.本地域名服务器向CDN中的DNS解析发起请求

9.CDN的DNS解析向GTM发起请求。

10.GTM来最终分配是哪个地方的访问用户。

11.GTM返回给本地域名服务器离这个 访问用户最近的CDN结点。

12.本地域名服务器将ip返回给用户。

13.拿到了返回的ip,用户就可以直接去CDN节点访问静态文件了。(访问CDN会经过许多CDN节点,去源站拿到数据后会返回)

负载均衡架构:链路负载均衡,集群负载均衡,操作系统负载均衡。

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

由于CDN节点是遍布全国的,所以用户接入一条CDN节点后,可以选择一条离用户最近的CDN节点到源站链路最好的路径让用户走。

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

  1. 第一章 深入web请求过程

    B/S架构的的好处: 客户端使用统一的浏览器(browser).由于浏览器的统一性,它不需要特殊的配置和网络连接,有效的屏蔽了不同服务提供商提供给用户使用服务的差异性.另外一点是浏览器的交互特性使得用 ...

  2. 第一章 深入Web请求过程(待续)

    B/S网络架构概述 如何发起一个请求 HTTP解析 DNS域名解析 CDN工作机制

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

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

  4. 第一章 了解Web及网络基础

    第一章 了解Web及网络基础 Web建立基础.HTTP如何诞生发展 1.使用HTTP协议访问Web 在浏览器地址栏中输入URL之后过程: 1)DNS 解析:浏览器查询 DNS,获取域名对应的 IP 地 ...

  5. 第一章 创建WEB项目

    第一章   创建WEB项目 一.Eclipse创建WEB项目 方法/步骤1 首先,你要先打开Eclipse软件,打开后在工具栏依次点击[File]>>>[New]>>&g ...

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

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

  7. Web请求过程总结

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

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

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

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

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

  10. 1 深入Web请求过程

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

随机推荐

  1. vue项目初始化时npm run dev报错webpack-dev-server解决方法

    vue项目初始化时npm run dev报错webpack-dev-server解决方法 原因:这是新版webpack存在的BUG,卸载现有的新版本webpack,装老版本就好webpack-dev- ...

  2. vue用npm安装删除模块element-ui mint-ui

    vue用npm安装删除模块element-ui mint-ui 在vue项目中先引入了element-ui,后来发现移动版的需要用mint-ui,所以需要先卸载了再安装.卸载element-ui:np ...

  3. centos crash debug

    https://www.dedoimedo.com/computers/crash.html#mozTocId484074 http://people.redhat.com/anderson/cras ...

  4. 常用分布随机数生成及JS类函数开发和运用

    (2017-02-15 银河统计) 随机数生成是运用蒙特卡洛或统计随机模拟仿真方法的前提.本文在银河统计Web Service接口基础上,编制JS类函数生成常用分布随机数,为在网页中实现模拟仿真项目提 ...

  5. GoldenGate抽取Informix数据库安装及配置

    GoldenGate抽取Informix数据库安装及配置 本次测试架构 l  在中间机上安装informix csdk4.10版本,并编译配置unixODBC; l  在中间机上安装ogg for I ...

  6. 王之泰201771010131《面向对象程序设计(java)》第七周学习总结

    王之泰201771010131<面向对象程序设计(java)>第七周学习总结 第一部分:理论知识学习部分 第五章 第五章内容深度学习: 继承:如果两个类存在继承关系,则子类会自动继承父类的 ...

  7. easyUI使用dailog实现弹出框带表单功能

    本文为博主原创,未经允许不得转载: 示例如下: 需要注意的地方在id为win的div中需要有:closed="true"这个属性,这个属性为控制dailogn对话框显示与隐藏的属性 ...

  8. 性能测试的过程(jmeter)

    一.web性能测试的准备工作 1.项目背景 访问地址 访问环境:windows 2.需求 并发登陆的性能(要求多少个用户登录) 3.场景 60秒内运行100个线程 线程在20.50.100并发下的表现 ...

  9. Android View 阴影的总结

    关于 Android 阴影,大家肯定不陌生的.但是Android 中到底有多少种方式可以实现阴影效果以及各种方式之间有什么区别和优缺点,这就是我想总结的.下面我们一个一个来说: 一.各种实现阴影的方式 ...

  10. itsdangerous

    将字典进行加密.解密 通过私钥保证安全性 serializer=TimedJSONWebSignatureSerializer(私钥,过期时间) dumps(字典)=====>返回加密字符串 l ...