图解Http读书笔记

1、TCP/IP协议族

  • 互联网相关联的协议集合起来总称为 TCP/IP 。
  • Http协议 是 TCP/IP 的子集
  • TCP/IP按层次分为:应用层(http协议)、传输层(TCP协议)、网络层(IP协议)、数据链路层
  • TCP/IP通讯传输流
~ 客户端 服务器
应用层 Http客户端 Http服务端
传输层 TCP TCP
网络层 IP IP
链路层 网络 网络

1.1确保可靠性的TCP协议

按层次分,TCP位于传输层,提供可靠的字节流服务
确保数据能到达目标 TCP协议采用了三次握手策略(three-way handshaking)

1.2 各种协议与Http协议的关系

  • DNS负责解析URI
  • HTTP协议生成针对目标Web服务器的HTTP请求报文
  • TCP协议 将Http请求报文分割成报文段按序号分为多个报文段把每个报文可靠地传给对方
  • IP协议:搜索对方的地址,一边中转一边传送
  • TCP:从对方那里接收到报文段重组到达的报文段按序号以原来的顺序重组请求报文
  • HTTP协议:对web服务器请求的内容的处理

1.3 URL是URI的子集

2、HTTP协议用于客户端和服务端之间的通信

2.1 请求必定由客户端发出,而服务器端回复响应

2.2 HTTP是不保存状态的协议

Http是一种不保存状态,即无状态(stateless)协议。

情景:用户登录到一家购物网站,即使他跳转到该站的其他页面后,也需要能继续保持登录状态。针对这个实例,网站为了能够掌握是谁送出的请求,需要保存用户的状态。

引入Cookie技术

2.3 告知服务器意图的HTTP方法

  • GET
  • POST
  • PUT
  • HEAD(和Get方法一样,只是不返回报文主体部分。用于确认URI的有效性及资源更新的日期时间等)
  • DELETE

若配合Web应用程序的验证机制,或架构设计采用REST(REpresentational State Transfer 表征状态转移)标准的同类Web网站,就可能会开放使用PUT方法。

2.4 持久连接

只要任意一端没有明确提出断开连接,则保持TCP接连状态(keep-alive)。
持久连接的好处在于减少了TCP连接的重复建立和断开所造成的额外开销,减轻了服务端的负载。
Http/1.1连接默认都是持久连接

2.5 管线化

持久连接使得多数请求以管线化(pipelinging)方式发送成为可能。从前发送请求后需等待并收到响应,才能发送下一个请求。管线化技术出现后,不用等待响应亦可直接发送下一个请求。

2.6 使用Cookie状态管理

Cookie用于记住客户端信息
Cookie技术在请求和响应报文中写入Cookie信息来控制客户端的状态。
Cookie会根据从服务端发送的响应报文内一个叫做:Set-Cookie的首部字段信息,通知客户端保存Cookie。

3、HTTP报文内的HTTP信息

请求行 状态行
请求首部字段 响应首部字段
通用首部字段 通用首部字段
实体首部字段 实体首部字段
其他 其他
图解Http读书笔记_第1张图片
请求报文和响应报文.jpg

3.1 HTTP报文的主体用于传输请求或响应的实体主体

通常,报文主体等于实体主体。只有当传输中进行编码操作时,实体主体的内容发生变化,才导致它和报文主体产生差异。

3.2 压缩传输的内容编码

常用的内容编码:

  • gzip(GNU zip)
  • compress(UNIX 系统的标准压缩)
  • deflate (zlib)
  • identity(不进行编码)

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

采用 MIME (Multipurpose Internet Mail Extensions) 多用途因特网邮件扩展 机制。

  • multipart/form-data 在Web表单文件上传时使用
  • multipart/byteranges 状态码206(Partial Content,部分内容)

3.4 获取部分内容的范围请求

请求

GET /tip.jpg HTTP/1.1
Host:www.usagidesign.jp
Range:bytes = 5001 - 10000

响应

HTTP/1.1 206 Partial Content
Date:Fri,13 Jul 2012 04:39:17 GMT
Content-Range:bytes 5001 - 10000 / 10000
Content-Length : 5000
Content-Type : image/jpeg

4、返回结果的Http状态码

  • 204 No Content 不含实体的主体部分
  • 304 Not Modified 可直接使用客户端未过期的缓存,不包含任何响应的主体部分

6、HTTP首部字段

6.1 HTTP/1.1首部字段

图解Http读书笔记_第2张图片
首部字段1.jpg
图解Http读书笔记_第3张图片
首部字段2.jpg

图解Http读书笔记_第4张图片
首部字段3.jpg
图解Http读书笔记_第5张图片
首部字段4.jpg

你可能感兴趣的:(图解Http读书笔记)