读《图解HTTP》

关于HTTP的知识,七七八八也了解过一些,总觉得很零散。

如果去翻看三卷本的TCP/IP的话,倒是大而全了,关键是,看得下去么?

某天看到有人推荐这么一本书《图解HTTP》,说浅显易懂而又不失风趣。翻了一下确实如此,于是来作个笔记。

1. 简介

目前主流的HTTP协议版本是1997年1月公布的1.1,最初的标准是RFC2068,之后发布了修订版RFC2616. 而新一代2.0正在制订中。

现在HTTP协议已经超出了web这个框架的局限,被运用到了各种场景里。

疑问:(是么?还有什么场景?)

2. 简单的HTTP协议

HTTP用于客户端和服务器端之间的通信,请求必定由客户端发出,服务器端回复响应。

请求报文包括:方法,uri,协议版本,请求首部字段,内容实体

响应报文包括:协议版本,状态码,用以解释状态码的原因短语,可选的响应首部字段以及实体主体

HTTP协议自身不具备保存之前发送过的请求或响应的功能,有了cookie再使用HTTP协议通信,就可以管理状态了。

请求URI的方式

  • URI为完整的请求URI

  • 在首部字段host中写明网络域名或IP地址

如果是对服务器本身发起请求,可以用一个*来代替请求URI,如:OPTIONS * HTTP/1.1

告知服务器意图的HTTP方法

  • get 获取资源

  • post 传输实体主体

  • put 传输文件

鉴于HTTP 1.1的put方法自身不带验证机制,因此一般web网站不使用该方法。若配合web应用程序的验证机制,或架构设计采用REST标准的同类网站,就可能会开放使用put方法。

  • head 获得报文首部

  • delete 删除文件

和put一样不带验证机制。当配合web应用程序的验证机制,或遵守REST标准时还是有可能会开放使用的。

  • options 询问支持的方法

  • trace 追踪路径

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

持久连接

HTTP协议的初始版本中,每进行一次HTTP通信就要断开一次TCP连接。

随着HTTP普及,文档中包含大量图片的情况变多,发送请求访问HTML页面资源的同时,也会请求该HTML页面里面包含的其他资源。这样,每次请求都会造成无谓的TCP连接建立和断开,增加通信量的开销。

持久连接(HTTP Persistent Connections, 也称为HTTP keep-alive 或 HTTP connection reuse),特点是,只要任意一端没有明确提出断开连接,则保持TCP连接状态。

在 HTTP 1.1 中,所有的链接默认都是持久连接。持久连接旨在建立1次TCP连接后进行多次请求和响应的交互。

管线化

持久连接使得多数请求以管线化 (pipellining) 方式发送成为可能。
管线化技术出现后,不用等待相应亦可直接发送下一个请求。这样就能做到同时并行发送多个请求,而不需要一个接一个地等待响应了。

使用cookie的状态管理

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

Cookie会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie的首部字段信息,通知客户端保存Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入 Cookie值后发送出去。

服务器端发现客户端发送过来的 Cookie后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。

HTTP状态码
类别 原因短语
1xx 信息性状态码
2xx
3xx
4xx
5xx

经常使用的状态码大概有14种

HTTP首部字段类型
通用
请求
响应
实体

具体的字段和详细内容,用到的时候再查文档,太细的东西也不用背下来,用的时候拿来就好。

确保安全的HTTPS

tcpip是可能被窃听的网络
加密处理方法
通信的加密
内容的加密

HTTP+加密+认证+完整性保护=HTTPS

HTTPS是身批ssl外壳的HTTP
通信接口部分用ssl和tls协议代替
ssl是独立与HTTP的协议,是当今世界上应用最为广泛的网络安全技术

https采用共享密钥加密和公开密钥加密两者并用的混合加密机制。
在交换密钥环节使用公开密钥加密方式,之后的建立通信交换报文阶段则使用共享密钥加密方式。
使用ca和其相关机关颁发的公开密钥证书。
要进行https通信,证书是必不可少的。

然后下面还介绍了几种证书,有需要的时候可以再翻书。

HTTPs的安全通信机制

web的攻击技术
这个可以稍微了解一下

(未完待续)

原文地址:https://www.cnblogs.com/cynthiaw/p/9391919.html