图解HTTP读书笔记

本文主要是看图解HTTP书的一些学习笔记。

第一章 Web与网路基础

URI:由某个协议方案表示的资源的定位标识符,协议方案即http ftp等。

URL表示资源的地点,URI表示某一互联网资源,URL是URI的子集。

URI格式:

http://user:pass@www.example.jp:80/dir/index.htm?uid=1#ch1

http://为协议方案名,如telnet,user:pass为登录信息,可选项,如用户名密码,www.example.jp为服务器地址,/dir/index.htm为带层次的文件路径,与UNIX文件系统类似,uid=1为查询字符串,ch1为片段表示符,表示已获取的资源中的子资源。

第二章 简单HTTP协议

HTTP请求报文第一行:方法 URI 版本号

响应报文第一行:版本号 状态码 原因短语 如200 OK

HTTP不保存状态,使用URI定位资源。

GET用于请求访问已经被URI识别的资源。

POST传输实体主体。

PUT传输文件,保存到URI指定的位置,一般网站不适用该方法。

HEAD与GET一样,但不反悔报文主体。

DELETE删除,PUT相反。

OPTION查看支持的方法。

TRACE让Web服务器之前的请求通信环回给客户端。

CONNECT要启用使用隧道实现TCP通信,主要使用SSL和TLS加密后传输。

HTTP1.1由持久连接,只要任意一端没有明确断开,则保持连接。减少重复连接的开销。

管线化:并行发送多个请求,接收多个响应。

HTTP是无状态协议,保存状态可以使用Cookie技术,服务端发送Set-Cookie字段来通知客户端保存Cookie。

第三章 HTTP报文里面的HTTP信息

空行CR+LF,用于区分首部和主体。

实体可以经过gzip等编码压缩再传送。

1.1有传输编码的机制,只定义作用于分块传输。

multipart/form-data 在Web表单文件上传时候使用。

multipart/byteranges 状态码206 响应报文包含多个范围的内容的时候使用。

多部分对象集合时候,需要在首部字段加上content-type

获取内容可以只请求一部分。

Accept Accept-Charset等用于协商返回最合适的内容,如英文中文页面。

内容协商有服务器驱动协商(服务器根据发送的信息判定协商),客户端驱动协商(JS自动选择),透明协商(各自进行协商)。

第四章 状态码

1XX:信息性状态码,表示正在处理。

2XX:成功状态码,表示正常处理完毕。

3XX:重定向状态码,表示需要进行腹甲草错来完成请求。

4XX:客户端错误状态码,服务器无法处理请求。

5XX:服务器错误状态码,服务器处理请求出错。

只要遵循定定义,自行创建也没有问题。

200 OK,表示正常处理。

204 No Content,表示处理成功,但没有资源可返回。

206 Partial Content,表示对资源某一部分的请求处理成功。

301 Moved Permently,永久重定向,URI已经更新。

302 Found,临时重定向,资源对应的URI将来可能该百年,书签不会变。

303 See Other,明确应当采用GET,301,302禁止将POST变成GET。

304 Not Modified,资源找到,但未找到符合条件的请求。

307 Temporary Redirect,和302相同。

400 Bad Request,表示请求报文有语法错误。

401 Unauthorized,表示需要有认证信息。

403 Forbidden,明确拒绝访问。

404 Not Found,表示无法找到请求的资源,也可以拒绝请求。

500 Internal Server Error,执行请求时候发生了错误。

503 Service Unavailable,超负载或停机维护。

第五章 与HTTP协作的Web服务器

单服务器可以用虚拟主机假想有多台服务器,发送HTTP请求时候必须在首部完整指定主机名或域名的URI。

代理:有转发功能的应用程序。

网关:转发其他服务器通信数据的服务器,就像自己拥有资源的服务器一样处理。

隧道:客户端和服务器之间中转。

代理服务器不改变请求UR,会写入Via信息。

代理服务器分是否使用缓存和是否修改报文,缓存代理保存缓存,透明代理不做加工。

网关可以将HTTP请求转化为其他通信协议,提高安全。

隧道不会解析HTTP请求,保持原样。

缓存服务器有缓存有效期,到期会请求新资源。

缓存可以存在浏览器,称为临时网络文件。

第六章 HTTP首部

Content-Type表示对象类型,比如text/html

首部字段分为通用,请求,响应,实体首部字段。最后针对报文实体部分使用的首部。

Cache-Control,控制缓存行为,有public所有人都能cache,private只给那个人cache。

no-cache防止从缓存中返回过期资源。可以指定位置,那个位置不要cache。

no-store表示请求响应包含机密信息,不进行缓存。

第七章 HTTPS

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

SSL层位于http层与tcp层中间,独立于HTTP,SMTP,Telnet都能用。

通信过程:

  1. 客户端发送client hello开始ssl,包含ssl版本,加密组件(加密算法密钥长度)列表。
  2. 服务端发送server hello,包含ssl版本与加密组件列表。
  3. 服务端发送certificate报文,有公钥整数。
  4. 服务端发送server hello done,握手协商结束。
  5. 客户端用client key exchange回应,包含随机密码串,用公开密钥加密。
  6. 客户端发送change cipher spec报文,提示服务器,之后通信会用之前的随机串加密
  7. 客户端发送finished,包含全部报文整体校验值,正确解密即成功。
  8. 服务端发送change cipher spec。
  9. 服务端发送finished。
  10. 交换完毕后,开始http。

应用层发送数据会带上报文摘要,保证完整性。

敏感数据才使用https通信,需要节省开销,证书费用。

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

session管理与cookie应用

  1. 将用户id,密码发给服务器。
  2. 服务器发放sessionID,记录状态。
  3. 客户发送带sessionID的cookie请求。
  4. 验证SessionID判定对方是否为真实用户。

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

Ajax使用脚本进行通信,只更新局部页面。

Comet会挂起响应,直到服务器更新。

Author

王钦砚

Posted on

2021-04-23

Licensed under

CC BY-NC-SA 4.0

Your browser is out-of-date!

Update your browser to view this website correctly.&npsb;Update my browser now

×