BS网络模型的基本过程:

当我们在浏览器中输入"www.google.com"的时候,首先会请求DNS服务器对域名进行解析成都应的IP地址,然后根据这个IP地址在互联网上找到谷歌的服务器,向这个服务器发送一个"get"请求,有这个服务器决定返回数据资源给请求的用户(在服务器端可能还会存在其他复杂的业务逻辑,服务器端有很多机器的话,需要考虑负载均衡,由哪一台服务器对资源进行回复,请求的文件是存储在静态文件中还是存储在分布式缓存中或者是数据库中,当数据返回服务器时,会发现该请求包含有一些静态资源(CSS文件、JS文件、图片文件)等又会发起HTTP请求,而这些请求又很可能是在CDN上,那么CDN又会处理这些请求。

所有的请求都是通过URL(统一资源定位符)来进行定位的。

如何发起一个请求

通常我们的请求是借助浏览器发送的,实际上我们可以自己模拟HTTP的请求。建立HTTP请求的过程实际上就是建立socket链接的过程,

(1) connect ->  根据域名地址和HTTP默认的80端口建立socket链接;

(2) send     ->  客户端发送符合HTTP协议格式的数据(outputStream.write);

(3) receive   ->  服务器等待inputStream.read返回数据

(4) close     ->  客户端和服务器断开连接

知道了以上的过程,我们就可以很轻松的模拟浏览器发出一个HTTP协议,这方面的工具包有很多,例如HttpClient就是一个封装好的工具包,下面是利用该包进行调用的一个实例

当然,我们还可以利用Linux下的curl + url 来模拟一个请求

HTTP协议解析

HTTP协议的重要性不再重述,下面是HTTP协议的各个部分:

浏览器缓存机制

浏览器缓存机制是一个比较重要的机制,当我们访问一些静态文件,比如JS文件,CSS文件,图片文件时通过缓存,可以减少和服务器连接的次数,提高浏览的速度。

在浏览器端,按 ctrl +F5的组合键会要求浏览器直接向目标服务器发送请求,而不会使用浏览器缓存中的数据,其次,即使请求到服务器,我们获得的也有可能是服务器缓存的数据,为了获得最新的数据,必须通过HTTP协议来进行控制,方法就是在浏览器请求头中添加  Pragme:no-cacheCache-Control:no-cache

HTTP head中有一些字段,可以控制浏览器请求的数据是否缓存的或者是最新的。

DNS域名解析

DNS域名解析的过程大致可以分为10个步骤:

当我们在浏览器输入"www.google.com”并按下 enter时,大致过程为:

(1)浏览器检查缓存中有没有www.google.com解析过的IP地址,如果缓存中有这个数据,解析过程就会停止。需要注意的是浏览器缓存的大小和时间都是有限制的,通常为几分钟到几小时。浏览器被缓存的时间可以通过TTL属性来设置。如果被设置的时间太长,一旦浏览器解析的域名的IP地址有变,就会访问不到,如果太短,则每次都需要访问域名服务器。

(2)一旦本地的浏览器缓存中没有数据,则浏览器会到操作系统下的hosts文件中检查是否有该域名的解析。

(3)如果本地没有的话,就需要请求本地域名服务器了,怎样才能知道域名服务器的地址呢(网络配置),

(4)如果本地仍没有的话,就需要请求根域名服务器,全球只有13台左右。

..........

通过nslookup指令可以查看域名的解析过程,通过ipconfig/flushdns可以将缓存在本地的DNS清除


CDN 工作机制

CDN成为内容分布网络(Content-delivery-Network),它是构建在Internent上的先进的流量分配网络。其目的是通过在现有的Internet上增加一层新的网络架构,将网站的内容发布到最接近用户的网络边缘,使得用户可以就近获得多需要的资源,可以说,CDN = 镜像(mirror) + 缓存(cache) + 负载均衡(GSLB)。目前,CDN都是以缓存网站中的静态数据为主;用户从主站服务器上下载动态内容后再到CDN上下载静态文件

一、CDN架构:

CDN 的实现要考虑负载均衡,而负载均衡的又包括DNS解析负载均衡,集群的负载均衡以及操作系统的负载均衡,内容比较多......

关键字:  CDN、负载均衡、浏览器缓存

参考:  《深入分析Java web技术内幕》

深入分析Java Web技术(1)的更多相关文章

  1. 深入分析Java Web技术内幕(修订版)

    阿里巴巴集团技术丛书 深入分析Java Web技术内幕(修订版)(阿里巴巴集团技术丛书.技术大牛范禹.玉伯.毕玄联合力荐!大型互联网公司开发应用实践!) 许令波 著   ISBN 978-7-121- ...

  2. Servlet工作原理解析 《深入分析java web 技术内幕》第九章

    参考关于servblet的相关文章 侧重概况:https://blog.csdn.net/levycc/article/details/50728921 ibm的相关:https://www.ibm. ...

  3. developerWorks 图书频道: 深入分析 Java Web 技术内幕,第 10 章

    developerWorks 图书频道: 深入分析 Java Web 技术内幕,第 10 章 深入理解 Session 与 Cookie Session 与 Cookie 不管是对 Java Web ...

  4. JAVA Coder 的《深入分析Java Web 技术内幕》读书笔记

    本文基于<深入分析Java Web 技术内幕> <深入分析Java Web 技术内幕>,作者是 许令波,电子工业出版社.本文只是记录书本当中的精彩部分,作个人回顾和技术分享,请 ...

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

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

  6. 深入分析Java Web技术内幕

    深入web请求过程 发起一个http请求的过程就是建立一个socket通信的过程 HTTPClient是一个开源的实现了http请求的工具包 深入分析java I/O的工作机制 深入分析java We ...

  7. 深入分析Java Web技术(2) IO

    IO是当今Web面临的主要问题之一,可以说,大部分web应用的瓶颈都是IO的瓶颈. Java的IO类是java.io.它包含有80多个类,分为4大部分: 基于字节操作: InputStream,Out ...

  8. 读书笔记之深入分析Java Web技术内幕

    章节: 1 B/SB/S的优点: 客户端使用统一的浏览器(Browser) ,浏览器的统一带来了操作的统一,无论使用什么服务,因为浏览器是相同的,所以操作类似.客户使用简单了.服务端开发简化; 使用统 ...

  9. JVM内存管理 《深入分析java web 技术内幕》第八章

    8.1 物理内存与虚拟内存 物理内存RAM(随机存储器),寄存单元为寄存器,用于存储计算单元执行指令的中间结果. 连接处理器和RAM或者处理器和寄存器的是地址总线,这个地址的宽度影响了物理地址的索引范 ...

随机推荐

  1. css3之边框新属性

    border属性 属性 描述 border-image 图片边框 border-radius 圆角 box-shadow 矩形阴影

  2. jsp_属性范围_application

    如果希望设置一个属性,可以让所有用户看得见,则可以将属性范围设置成application,这样属性即可以保存在服务器上. 下面写一个小例子来验证一下: (1)application_demo.jsp ...

  3. linux下如何查找需要的文件后并删除

    1.首先查找指定目录下的文件,默认为当前目录 使用命令:find . -name 'a.txt' 会得到当前目录下所有包括子孙目录下的所有后缀为txt的文件 2.查找后删除 使用命令:find . - ...

  4. link,unlink,remove, rename函数

    link函数:创建一个指向现有文件的链接的方法是使用 个人理解为cp命令 #include <unistd.h> int link( const char *existingpath, c ...

  5. 表单验证代码实例:jquery.validate.js表单验证插件

    jquery.validate.js是JQuery旗下的一个验证插件,借助JQuery的优势,我们可以迅速验证一些常见的输入,并且可以自己扩充自己的验证方法.使用前请先下载必要的JQuery插件:jq ...

  6. 《理解 ES6》阅读整理:函数(Functions)(一)Default Parameter Values

    对于任何语言来说,函数都是一个重要的组成部分.在ES6以前,从JavaScript被创建以来,函数一直没有大的改动,留下了一堆的问题和很微妙的行为,导致在JavaScript中使用函数时很容易出现错误 ...

  7. ORGANIZATION

    Leader:  Ming Xiang Ph.D students:  Bo Yang Yupei Zhang M.Eng. students: Cheng Feng Jinquan Du Youli ...

  8. 中国大学MOOC-陈越、何钦铭-数据结构-2016秋期中考试

    判断题: 1-1 算法分析的两个主要方面是时间复杂度和空间复杂度的分析. (2分) 1-2 将N个数据按照从小到大顺序组织存放在一个单向链表中.如果采用二分查找,那么查找的平均时间复杂度是O(logN ...

  9. PHP日期时间处理

    <?php //时区设置,可在php.ini文件中进行全局设置,默认使用的UTC时间 #date_default_timezone_set("Asia/Chongqing") ...

  10. console.log 被重写覆盖以后如何恢复

    有时候一些项目中会使用类似如下的方式覆盖掉console对象: var console = {}; console.log = function(){}; console.info = functio ...