[图解http]

项目整体需要优化
这部分的东西有些忘记了
看到人家推荐这本
就翻了翻,就当回顾下以前的知识了吧,


看似简单的一个网址,在整个网站(前后加起来)有着画龙点睛之笔
以前写过后台还是有好处的
经过这一次,对整个流程有了新的理解和认识
输入网址之后是都经历了些什么到达服务器的
服务器又起了怎样的服务来接收请求,经过怎样的处理返回到前端
前端又是如何接收到返回的数据进行展示的

尽管使用的技术各不相同,但是总用相同的地方的
比如 https (-。- 哈哈 开个玩笑)这是一个协议,下面笔记有说明

但是优化的套路还是万变不离其宗,或者说就我目前知道的就这么多(欢迎补充)

当输入网址之后发生了什么。。。(这种问题。。。但是。。。需要真正的理解才)

1、输入网址
2、到dns去解析这个网址,找到对应的ip地址(dns 域名解析)
3、开始连接这个服务器(三次握手、四次挥手)
4、开始传输数据(代理服务器、资源服务器)
5、服务器接收到请求,执行对应的业务逻辑,返回结果
6、浏览器接受数据
7、进行页面展示(构建dom,进行渲染等)

就这几个简单的步骤,但是可以优化的地方又很多
前后端结合优化,效果更佳

优化的设想:

页面的渲染:dom操作,css样式、减少重绘、重排等
传输:代码压缩、gzip、缓存等
缓存服务器:图片服务器、代理服务器等
返回的数据优化:减少不需要展示的数据
代码的逻辑优化:。。。

不同的前端框架优化的点、技术、插件有所不同,需要自己悟。。。


第一章 了解web及网络基础

http HyperText Transfer Protocol 超文本传输协议 80端口

无状态协议,自身对请求和响应之间的通信状态不进行保存,不做持久化处理

数据在应用层、传输层、网络层、数据链路层传输的时候都会封装上该层的头部信息

Hypertext Transfer Protocol Secure 使用SSL secure socket layer 安全套接层和TLS transport layer security 传输层安全 协议把通信内容加密 443端口

IP协议

位于网络层

标记计算机在网络中的位置,与mac物理地址对应

使用arp解析地址协议,根据ip地址可以查出对应的mac地址

tcp协议位于传输层,提供可靠的字节流服务

确保数据能够到达,采用了三次握手策略

使用SYN synchronize 和ACK acknowledgement

dns域名解析服务位于应用层,提供域名到ip地址之间的解析服务

RFC request for comments 征求修正意见书

REST representational state transfer 表征状态转移

第二章 简单的http协议

请求报文结构:方法、 URI 、协议版本、 实体内容

  • 方法:get、post
  • 请求URI定位资源

options:询问支持的方法,用来查询针对请求URI指定的资源支持方法

trace:追踪路径,让web服务端将之前的请求通信环回给客户端的方法,

​ 客户端可以通过该方法查询发送出去的请求是怎样被加工修改和怎样进行路由传 输的,容易引发xst cross site tracing 跨站追踪攻击

connect:要求用隧道协议连接代理

connect方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行tcp通信

​ 主要使用SSL secure socket layer 安全套接层和TLS transport layer security 传输层安全 协议把通信内容加密后经网络隧道传输

响应报文结构:协议版本、状态码、日期、资源实体

持久连接 :http keep-alive :只要任意一端没有明确提出断开链接,则保持tcp连接状态,

管线化:不用等待响应亦可直接发送下一个请求

使用cookie的状态管理

cookie技术通过在请求和响应报文中写入cookie信息来控制客户端的状态

​ 根据服务端发送的响应报文中set-cookie的首部字段信息,通知客户端保存cookie,下次发送请求时,会自动在请求报文中加入cookie

第三章 http报文内的http信息

http报文

用于http协议交互的信息称为http报文

报文结构

  • 请求行:包含用于请求的方法
  • 状态行:表明响应结果的状态码、短语、http版本
  • 首部字段:包含表示请求和响应的各种条件和属性的各类首部,通用首部、请求首部、响应首部、实体首部
  • cookie等

编码提升传输速率

报文message

​ 是http通信中的基本单位,8位组字节流

实体entity

​ 作为请求或响应的有效载荷数据被传输

压缩传输的内容编码

  • gzip
  • compress
  • deflate zlib
  • identify 不进行编码

分割发送的分块传输编码

​ 把实体主体分块的功能称为分块传输编码chunked transfer coding

发送多种数据的多部分对象集合

MIME multipurpose internet mail extensions 多用途因特网邮件扩展机制

  • multipart/form-data : web表单文件上传时使用
  • multipart/byteranges :响应报文中包含了多个范围的内容时使用

内容协商返回最合适的内容

内容协商 content negotiation

指客户端和服务端就响应的资源内容进行交涉,然后提供给客户端最为适合的资源

  • 服务器驱动协商 server-driver negotiation :有服务端进行内容协商
  • 客户端驱动协商 agent-driven negotiation
  • 透明协商 Transparent negotiation

第四章 返回结果的http状态码

1xx informational 信息性状态码 : 接受的请求正在处理

2xx success 成功状态码:请求政策处理完毕

3xx redirection 重定向:

304 请求已经发送,文件没有改变

4xx client Error 客户端错误状态码 服务器无法处理请求

5xx server Error 服务器错误状态码 服务器处理请求出错

第五章 与http协作的web服务器

代理:缓存代理、透明代理

服务器缓存、客户端缓存、缓存有效期

Cache-Control: must-revalidate 告诉浏览器、缓存服务器,本地副本过期前,可以使用本地副本;本地副本一旦过期,必须去源服务器进行有效性校验。

第六章 HTTP首部

![image-20181202101148693](/Users/liuhuajian/Library/Application Support/typora-user-images/image-20181202101148693.png)

cache control 控制缓存的行为

via 代理服务器的相关信息

accept 用户代理可处理的媒体类型

accept-charset 优先的字符集

accept-encoding 编码

authorization web认证信息

expect 期待服务器的特定行为

if-modified-since 比较资源的更新时间

响应首部字段

accept-ranges 是否接受字节范围请求

age 推算资源创建经过时间

etag 资源的匹配信息

server http服务器的安装信息

vary 代理服务器缓存的管理信息

实体首部字段

allow 资源可支持的http方法

expires实体主体过期的日期时间

其他首部字段

  • x-frame-options

    控制网站内容在其他web网站的frame标签内的显示问题,主要目的是为了防止点击劫持clickjacking攻击

    deny:拒绝

    sameorigin:仅同源域名下的页面匹配时许可

  • x-xss-protection

    针对跨站脚本攻击的一种对策

    0: 将xss过滤设置成无效状态

    1: 将xss过滤设置成有效状态

  • DNT

    do not track 拒绝个人信息被收集

    0:同意被追踪

    1:拒绝被追踪

  • P3P

    the platform for privacy preferences 在线隐私偏好平台,可以让web网站上的个人隐私变成一种仅供程序可理解的形式,以达到保护用户隐私的目的

第七章 确保web安全的https

http使用明文传输可能被窃听

tcp/ip是可能被窃听的网络

通信的加密

​ 使用ssl secure socket layer 安全套接层 或tls transport layer security安全层传输协议的组合使用

不验证通信方的身份就可能遭遇伪装

查明对手的证书

无法证明报文完整性,可能已遭篡改,遭受中间人攻击

防止篡改

使用md5和sha-1等散列值校验的方法,用来确认数字的签名方法

PGP pretty good privacy 完美隐私

https = http + 加密 + 认证 + 完整性保护

ssl

采用一种叫做公开密钥加密 public key cryptography 的加密处理方式

加密和解密同用一个密钥的方式称为共享密钥加密 common key crypto system 叫做对称密钥加密

https采用混合加密

在交换密钥环节使用公开密钥加密方式,建立通信交换报文阶段则使用共享密钥加密方式

公开密钥加密处理起来比共享密钥加密复杂,传输效率低

![image-20181201104322384](/Users/liuhuajian/Library/Application Support/typora-user-images/image-20181201104322384.png)

https 通信过程

1、客户端向服务端发送ssl通信,包含支持的ssl版本和加密组件等信息

2、服务端响应返回共同支持的ssl版本等

3、服务端发送包含公开密钥证书的certificate 报文

4、服务端发送报文通知客户端,ssl握手协商部分结束

5、客户端向服务端发送使用公开密钥进行加密的pre-master secret的随机密码串

6、客户端发送 change cipher spec 报文 提示服务器采用 per-master sectet 密钥加密

7、客户端发送finished 报文,包含连接至今全部报文的整体校验值,握手的协商成功,要以服务器是否能够解密该报文作为判定标准

8、服务器发送change cipher spec 报文

9、服务器发送finished 报文

10、 finished 报文交换完毕,ssl连接建立成功,通信受到ssl的保护,开始使用http发送请求

11、发送http响应

12、最后由客户端断开链接,发送close_notify报文

![image-20181201120427961](/Users/liuhuajian/Library/Application Support/typora-user-images/image-20181201120427961.png)

第八章 确认访问用户身份的认证

核对的信息:密码、动态令牌、数字证书、生物认证、ic卡

第九章 基于http的功能追加协议

sns social networking service 社交网络服务

spdy soeedy 解决http的性能瓶颈,缩短web页面的加载时间

使用ajax解决方法

没有完全改写http协议,是在tcp/ip的应用层与传输层之间通过加入会话层的形式运作。

使用http的upgrade首部字段,告知通信协议发生改变,达到握手的目的

返回状态码101 switching protocols 的响应

第十章构建web内容的技术

第11 章 web的攻击技术

会话劫持 session hiJack

​ 攻击者通过某种手段拿到用户的会话id

跨站点请求伪造

​ csrf cross-site request forgeries 攻击时指攻击者通过设置好的陷阱

点击劫持

​ clickjacking利用透明的按钮或者链接做成陷阱覆盖再web页面上

穷举攻击

​ 彩虹表

dos攻击 denial of service attack

​ 是一种让运行中的服务停止状态的攻击,集中利用访问造成资源过载、通过安全漏洞是服务停止

后门程序 backdoor是指开发设置的隐藏入口

  • 开发阶段作为debug调用的后门程序
  • 植入的后门
  • 攻击设置的后门

猜你喜欢

转载自blog.csdn.net/java_sparrow/article/details/84747383