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. 【java】:生成excel

    //生成报表公用方法 //excelName: 生成的文件名 //list:时间/日期/描述 //listSelectFiled:  标题 //showContent :  文件内容bean //生成 ...

  2. 【使用git】初识git

    0. 版本控制 版本控制是一种记录若干文件内容变化,以便将来查阅特定版本修改情况的系统(vcs). svn等是集中式版本控制,即服务器在单一机器上,每次checkout变化的文件,若机器故障,则有可能 ...

  3. 浅谈.Net WebService开发

    一.什么是WebService: 简单通俗来说,就是企业之间.网站之间通过Internet来访问并使用在线服务,一些数据,由于安全性问题,不能提供数据库给其他单位使用,这时候可以使   用WebSer ...

  4. Java方法的封装

    类的封装性即不能让外面的类随意修改一个类的成员变量: 在定义一个类的成员(包括变量和方法),使用private关键字说明这个成员的访问权限,只能被这个类的其他成员方法调用,而不能被其他的类中的方法所调 ...

  5. 【转贴】-- 基于QT的跨平台应用开发

    原帖地址:http://www.cnblogs.com/R0b1n/p/4106613.html 1 Qt简介 Qt是1991年奇趣科技开发的一个跨平台的C++图形用户界面应用程序框架.它提供给应用程 ...

  6. 我的WebService入门

    ERP: 1. Data Layer: (ProductInfoDBHelper.cs) /// <summary> /// 获取门店图片信息 /// </summary> p ...

  7. 在CS代码页获取input输入框内肉----.net学习点滴

    想在后台cs页面得到前台页面aspx中html控件input输入的值.通过访问input输入框的name属性值获取. 解决方法如下: 1.用Request["user"].toSt ...

  8. Orchard 精简版

    Orchard Express v1.7.2 精简版 保留Orchard.Framework和Orchard.Core全部源码(一字未改),去除非必要模块(仅剩Orchard.jQuery, Orch ...

  9. django rest_framework--入门教程

    题设.如果官网DEMO能够正常跑起来请继续,如果不能请参考上一篇 1.新建MODEL 在数据库里添加相应的数据,可以使用命令 manage.py syncdb 这时候会建立对应的表 2.新建序列化方法 ...

  10. Wix 安装部署教程(四) 添加安装文件及快捷方式

    通过之前三篇的介绍,大家对wix的xml部署方式也应该有一些认识,今天天气不错,再来一发.主要介绍桌面,开始菜单,卸载等功能的如何添加.希望园友们支持! 一.如何添加文件 Demo打包程序很简单,就一 ...