TCP/IP 协议族 是按层次去划分的

应用层    决定了向用户提供应用服务时通信的活动。

FTP 协议(文件传输协议)
DNS(域名协议)
HTTP(超文本传输协议)

传输层    提供处于网络连接中两台计算机之间的数据传输

TCP(传输控制协议)
UDP(用户数据报协议)

网络层    用来处理在网络上流动的数据包

IP 协议

数据链路层    用来处理连接网络的硬件设备

Http 协议

HTTP/0.9
HTTP/1.0
HTTP/1.1(主流)
HTTP/2.0

用于 客户端 和 服务端 之间的通信

HTTP 协议是在 TCP/IP 协议族 的基础上运作起来的

其属于 TCP/IP 协议族内的 应用层

HTTP 协议是无状态、无连接的协议


 一次完整的请求,我们需要注意什么?

  • DNS 是否可以通过缓存来减少查询 IP 地址的时间?

DNS 的查找是有开销的,通常浏览器查找一个给定的主机名的 IP 地址需要花费 20 到 120 毫秒

在 DNS 查找完成之前,浏览器不能从主机那下载任何东西

DNS 是可以被缓存起来提高性能的

由于 服务器的 IP 地址是可变的,缓存也会消耗内存,因此不管是哪个级别的缓存都应该周期性的清除一下。

  • 网络的请求过程是否走的是最近的网络?

CDN 内容分发网络(Content  Delivery Networks)

分布在多个不同地理位置的web服务器,用于更加有效的向用户发布内容

  • 最简单的 CDN 网络  = 一个DNS服务器 + 几台缓存服务器

1. 当用户点击网站页面上的内容 URL,经过本地 DNS 系统解析,

DNS 系统会最终将域名的解析权交给 CNAME 指向的 CDN 专用 DNS 服务器。

2. CDN 的 DNS 服务器将 CDN 的全局负载均衡设备 IP 地址返回用户。

3. 用户向 CDN 的全局负载均衡设备发起内容 URL 访问请求。

4. CDN 全局负载均衡设备根据用户 IP 地址,以及用户请求的内容 URL,

选择一台用户所属区域的区域负载均衡设备,告诉用户向这台设备发起请求。

5. 区域负载均衡设备会为用户选择一台合适的缓存服务器提供服务,

选择的依据包括:根据用户 IP 地址,判断哪一台服务器距用户最近;
根据用户所请求的 URL 中携带的内容名称,判断哪一台服务器上有用户所需内容;
查询各个服务器当前的负载情况,判断哪一台服务器尚有服务能力。
基于以上这些条件的综合分析之后,
区域负载均衡设备会向全局负载均衡设备返回一台缓存服务器的 IP 地址。

6. 全局负载均衡设备把服务器的 IP 地址返回给用户。

7. 用户向缓存服务器发起请求,缓存服务器响应用户请求,将用户所需内容传送到用户终端。

如果这台缓存服务器上并没有用户想要的内容,而区域均衡设备依然将它分配给了用户,
那么这台服务器就要向它的上一级缓存服务器请求内容,直至追溯到网站的源服务器将内容拉到本地。

CDN 不仅做内容分发加速,还做安全防护问题。

不会一台服务器的当机,整个请求的瘫痪。

缓存机制

客户端 与 服务器 协商的缓存策略

  • 是否可以少发几次请求?

资源合并

  • 请求体是否可以尽量的小?

资源压缩

  • 减少 DNS 查询?

一个多资源的站点最好使用 2 到 4 个不一样的主机来存放服务端资源(在减少DNS查询和允许高度并行下载之间作出的最好权衡)

使用 Keep-alive 进行持久连接


DNS 域名解析服务 

DNS 协议 提供通过域名查找IP,或逆向从 IP 地址反查域名的服务

DNS服务是 和 HTTP协议一样,位于应用层的协议,它提供域名到 IP 地址之间的解析服务。

chrome://dns/ 或 chrome://net-internals/#dns       查看浏览器上的DNS缓存

ipconfig/displaydns        查看操作系统中的DNS缓存

在哪里?

查找浏览器缓存

查找 PC 本机系统缓存

查找 路由器 缓存

查找ISP DNS 缓存。(网络运营商,如 电信/联通 服务器 )

递归搜索 DNS 根服务器(全球只有 13 台)


HTML5 浏览器本地存储技术 Application (有这三种技术:cookie, sessionStorage, localStorage____都是字符串类型的键值对)

(另外还有一种存储模式叫:session;    这种级别的存储属于服务端会话级别的存储)

面试题: 如何实现页签之间的通信?

  • cookie ----> http 无状态解决方案

会话 cookie

人为 cookie

cookie 是纯文本格式,静态资源是不会携带 cookie 的

不包含任何可执行的代码信息,伴随着用户请求在 Web 服务器和浏览器之间传递

本质上属于 http 的范畴,因为 http 协议本身是无状态的,服务端是没有办法区分请求来自于哪个客户端

即便是来自于同一个客户端的多次请求 我们的服务端也是没有能力来区分的,所以才需要 cookie 去维持客户端的状态

cookie 一般都是后台用的,很少让前端来直接写

cookie 分 :  持久级别、session 级别(cookie 一般用于和 session 通信)

缺点:

安全性低,易被截获:由于 cookie 在HTTP中是明文传递的,其中包含的数据都可以被他人访问,可能会被篡改、盗用

大小限制: cookie 的大小限制在4KB左右,一个网页最好至多 20 个左右的 cookie。

增加流量,无形中占用带宽: cookie 每次请求都会被自动添加到 Request Header 中,无形中增加了流量

cookie 信息越大,对服务器请求的时间也越长。因此要慎用cookie,不要在cookie中存储重要和敏感的数据

  • 客户端生成:

在 JavaScript 中通过 document.cookie 属性,你可以创建、维护和删除 cookie

设置 document.cookie 属性的值并不会删除存储在页面中的所有 cookie____它只简单的创建或修改字符串中指定的 cookie

要使用 JavaScript 提取 cookie 的值,只需要从 document.cookie 中读取即可

  • 服务端生成:

Web 服务器通过发送一个称为 Set-Cookie 的 HTTP 消息头来创建一个 cookie

HttpOnly

为避免跨域脚本 (XSS) 攻击,通过 JavaScript的 Document.cookie API 无法访问有 HttpOnly 标记的Cookie

WebStorage ----> 浏览器本地存储,且存储的必须是 字符串(一般是 JSON.stringify(xxx))____一般允许 5M 甚至更大

浏览器端通过 window.sessionStorage 和 window.localStorage 属性来实现本地存储机制

例如:KEY='person'; person={"name":"WuKong"};

  • sessionStorage 会话存储(浏览器打开 到 关闭)

当浏览器退出时,会自动删除 sessionStorage 中的数据

保存数据 sessionStorage.setItem(KEY, JSON.stringify(person));

读取数据 sessionStorage.getItem(KEY);

删除数据 sessionStorage.removeItem(KEY);

  • localStorage 永久存储(永久,除非人为删除) 

----> 对应 'storage' 事件 e.newValue 进行页签间的数据通信/同步 e.oldValue____HTML5 提供的新功能

e.key        修改或删除的 key 值,如果调用 clear(),为 null

e.newValue        新设置的值,如果调用 clear(),为 null

e.oldValue        调用改变前的 value 值,如果调用 clear(),为 null

e.url        触发该脚本变化的文档的 url

e.storageArea        当前的 storage 对象

保存数据 localStorage.setItem(KEY, JSON.stringify(person));

读取数据 localStorage.getItem(KEY);

删除数据 localStorage.removeItem(KEY);

清空数据 localStorage.clear();

http 协议_DNS_域名解析 DNS 服务器_内容分发网络 CDN_缓存机制_HTML5 浏览器存储技术_cookie_sessionStorage_localStorage的更多相关文章

  1. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器解决方案之CDN内容分发网络

    背景分析 EasyDSS流媒体解决方案提供一站式的转码.点播.直播.录像.检索.时移回放服务,极大地简化了开发和集成的工作,并且EasyDSS支持多种特性,完全能够满足企业视频信息化建设方面的需求.其 ...

  2. CDN加速-内容分发网络

    内容分发网络 (互联网技术) 编辑 CDN的全称是Content Delivery Network,即内容分发网络.其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输 ...

  3. Web前端性能优化教程02:使用内容分发网络

    基础知识 服务器离用户越近,HTTP请求的响应时间将更短. CNAME:别名记录,当多个域名需要指向同一服务器IP,可以使用一个域名做A记录指向该服务器IP,然后让多个域名指向该A记录. ICP:In ...

  4. CDN(内容分发网络)技术原理

    1. 前言 Internet的高速发展,给人们的工作和生活带来了极大的便利,对Internet的服务品质和访问速度要求越来越高,虽然带宽不断增加, 用户数量也在不断增加,受Web服务器的负荷和传输距离 ...

  5. CDN 内容分发网络技术

    1.前言 Internet的高速发展,给人们的工作和生活带来了极大的便利,对Internet的服务品质和访问速度要求越来越高,虽然带宽不断增加,用户数量也在不断增加,受Web服务器的负荷和传输距离等因 ...

  6. 深度剖析:CDN内容分发网络技术原理--转载

    1.前言 Internet的高速发展,给人们的工作和生活带来了极大的便利,对Internet的服务品质和访问速度要求越来越高,虽然带宽不断增加,用户数量也在不断增加,受Web服务器的负荷和传输距离等因 ...

  7. [转]CDN(内容分发网络)技术原理

    1. 前言 Internet的高速发展,给人们的工作和生活带来了极大的便利,对Internet的服务品质和访问速度要求越来越高,虽然带宽不断增加, 用户数量也在不断增加,受Web服务器的负荷和传输距离 ...

  8. 史上最全的CDN内容分发网络实战技巧(网络优化)

    今天来给大家分享下关于 CDN 的东西,以及我自己的一些发现.一些个人的拙见.总共分为 3 个部分:原理.详解.各种坑. 首先说一下 CDN 的基本原理部分,主要分 4 块来描述:CDN 的由来.调度 ...

  9. CDN内容分发网络

    CDN的全称是Content Delivery Network,即内容分发网络,其设计思想是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快.更稳定. CDN系统是在网络 ...

随机推荐

  1. RMQ(ST表)

    #include<iostream> #include<cstdio> #include<cmath> using namespace std; int N, M, ...

  2. 更改Jenkins的workspace目录

    系统管理→系统设置→主目录(的右边问号下面)→高级(是不是忽略了啊\(^o^)/~)→工作空间根目录 点开后面的问号可以看见3个参数(配置路径需要的): ${JENKINS_HOME} — Jenki ...

  3. Educational Codeforces Round 32 E. Maximum Subsequence

    题目链接 题意:给你两个数n,m,和一个大小为n的数组. 让你在数组找一些数使得这些数的和模m最大. 解法:考虑 dfs但是,数据范围不允许纯暴力,那考虑一下折半搜索,一个从头开始往中间搜,一个从后往 ...

  4. Xml序列化 详解

    http://www.cnblogs.com/kissdodog/archive/2013/12/10/3468385.html

  5. ES7 and ES8 特性

    ES7 特性:1.Array.prototype.includes let arr = ['react', 'angular', 'vue'] // Correct if (arr.includes( ...

  6. 机器学习爱好者 -- 翻译吴恩达老师的机器学习课程字幕 http://www.ai-start.com/

    机器学习爱好者 -- 翻译吴恩达老师的机器学习课程字幕 GNU Octave    开源  MatLab http://www.ai-start.com/ https://zhuanlan.zhihu ...

  7. PGCD2 - Primes in GCD Table (Hard)

    这题肝了三四天,其他啥也没做... 传送门 然后...双倍经验 简单版 不知道为什么会脑抽去帮 LZ_101 大佬验题... 题目和被 A 穿的 PGCD 一样,数据范围变成大概 2e11 ... 于 ...

  8. 023_supervisorctl管理服务注意事项

    一. (1)问题 我在线上使用supervisorctl管理服务时遇到程序文件更新了,但是下次supervisorctl执行的时候并没有更新, 原因是supervisor更新后必须重新读取加载文件才行 ...

  9. 【原创】Linux基础之curl

    http请求过程如下: # curl -v http://www.baidu.com % Total % Received % Xferd Average Speed Time Time Time C ...

  10. JDK 8 函数式编程入门

    目录 1. 概述 1.1 函数式编程简介 1.2 Lambda 表达式简介 2. Lambda 表达式 2.1 Lambda 表达式的形式 2.2 闭包 2.3 函数接口 3. 集合处理 3.1 St ...