图解HTTP读书笔记
2018-12-08 本文已影响7人
云师兄
第一章 网络基础
通常使用的网络是在TCP/IP协议族基础上运作的,而HTTP属于它内部的一个子集。
TCP/IP
TCP/IP协议族分为:应用层,传输层,网络层和数据链路层。
- 应用层:HTTP协议,FTP协议,DNS协议都是属于应用层。
- 传输层:提供处于网络连接中的两台机器之间的数据传输,分为TCP和UDP协议;
- 网络层:用来处理在网络上流动的数据包和传输路线,IP网际协议通过IP地址和MAC地址来进行判断传输路线;
- 链路层:用来处理连接网络的硬件部分。
TCP协议
- TCP协议采用三次握手确保通信可靠。
- TCP协议提供可靠的字节流服务,将大块数据分割为以报文段为单位的数据包处理。
- 发送一个HTTP请求后,通过TCP将HTTP请求分割为多个报文段后再依次传输。
DNS服务
DNS提供域名到IP地址之间的解析服务。
第二章 HTTP协议
HTTP协议用于客户端和服务器之间的通信。
请求和相应
- 请求报文是由请求方法,请求URI,协议版本,可选的请求首部字段和内容实体构成。
- 响应报文是由协议版本,状态码,用以解释状态码的原因,可选的响应首部字段以及内容实体构成。
HTTP是不保存状态的协议
HTTP是一种不保存状态,即无状态协议,协议对发送过的请求和响应都不做持久化处理。HTTP1.1虽然也无状态,但是提供了Cookie技术进行状态管理。
HTTP方法
- GET:获取资源
- POST: 传输实体主体
- PUT:传输文件
- HEAD:获得报文首部,不返回报文主体内容。
- DELETE:删除文件,与PUT相反。
...
HTTP持久连接
HTTP初始版本下,进行一个HTTP通信,前后就包装一次建立TCP连接后取消连接的过程。由于三次握手非常麻烦,所以开销较大;为此,HTTP后来的版本提供了持久连接,建立一次TCP连接后,可以一直多次进行HTTP通信,直到最后断开TCP连接。
HTTP管线(pipeline)连接
HTTP持久连接的基础上,多个HTTP通信要求发送请求后需收到响应才能发送下一个请求。管线化后,可以并行多个HTTP同时通信,不用排队等待。
使用Cookie的状态管理
第一次客户端请求并且服务的响应后,服务端发送响应报文中有一个SetCookie首部字段信息,通知客户端保存Cookie,下次再发送请求时,自动在报文中加入Cookie后发送,服务端再通过已有的记录,得到之前的状态信息。
第三章 HTTP报文中的HTTP信息
HTTP报文大致分为报文首部和报文主体两块。两者由空行来划分。
编码提升传输速率
- 服务端将响应报文中的内容实体进行压缩编码后返回给客户端,客户端负责解码。
- 传输大容量数据时,通过将数据分割为多块进行传输称为分块传输编码。
发送多种数据的多部分对象集合
HTTP协议中,客户端发送的请求报文主体中可以包含多类型实体,如图片和文件进行上传。多部分对象集合包含的对象有:multipart/form-data,multipart/byteranges。在报文中使用多部分对象集合时,需要在首部字段里加上content-type。