《图解http》是http入门级别的书,图文并茂,对初学者十分友好。强烈推荐~最近又看了一遍,简单地写一下读书笔记吧。【第一至五章】
第一章 网络基础
输出一串url,点击回车就可以看到web页面,web页面是怎么显示出来的呢?web浏览器向web服务器发送请求,获取资源,web页面显示。web是基于http协议进行通信的。http通信又是基于TCP建立连接的,图为通信过程。
应用层:决定了向用户提供服务时通信的活动。应用层的协议: HTTP、FTP、DNS。
传输层: 提供网络连接中两台计算机之间的数据传输。传输层的协议:TCP、UDP。
网络层: 处理在网络上流动的数据包。网路层的协议:IP
链路层:处理连接网络的硬件部分。
Tcp提供可靠的字节流服务:三次握手建立连接,数据传送过程中,发送端发包,接收端收包之后会发送一个确认包,否则发送端会再发包。
第二章 简单的HTTP协议
- http协议用于客户端和服务器端的通信
- http协议是不保存状态的协议
什么是客户端? 主动发请求的就是客户端。像通过请求获取服务器资源的web浏览器等,都可称为客户端。
HTTP的方法 | 作用 |
GET | 获取资源 |
POST | 传输实体主体 (增加资源) |
PUT | 修改资源 |
DELETE | 删除资源 |
HEAD | 和GET 方法一样,只是不返回报文主体部分,用于确认URI的有效性和资源更新的日期时间等。 |
OPTIONS | 询问支持的方法,用于查询针对请求URI指定的资源支持的方法 |
TRACE | 追踪路径(不常用,容易引发XST攻击) |
CONNECT | 要求应隧道协议连接代理 |
HTTP 协议是无状态协议,引入Cookie来管理客户端的状态。
首次通信时,客户端没有Cookie,登录成功后,服务器端会生成Cookie并返回响应,响应字段里面包含一个Set-Cookie,客户端收到响应,保存cookie,下次发请求时会带上cookie。 Cookie里面的sessionid用于唯一标识一个用户。
第三章 HTTP报文内的HTTP信息
用于http协议交互的信息称为http报文。http报文本身是由多行数据构成的字符串文本,报文分为报文首部和报文主体两块。
报文:http报文是http通信的基本单位,由8位组字节流组成,通过http通信传输
实体:请求或响应的有效载荷数据。实体包含在报文里面,通常,报文主体等于实体主体。只有当传输中进行编码操作时,实体主体的内容发生变化,实体主体和报文主体才会产生差异。
http的内容编码可以实现实体的压缩。
常用的内容编码:
- gzip
- compress
- deflate
- identity (不进行压缩)
第四章 HTTP状态码
http状态码用来描述服务器端返回请求的结果。
1xx | 请求正在处理 |
2xx | 请求被成功处理 |
3xx | 重定向 |
4xx | 客户端出错 |
5xx | 服务器端出错 |
常用的http状态码:
200 OK | 请求被正常处理 |
204 No Content | 请求已成功处理,但返回的响应不包含(也不允许包含)实体的主体部分 |
206 Partial Content | 范围请求被成功处理 |
301 Moved Permanently | 永久重定向 |
302 Found | 临时重定向 |
303 See Other | 与302有着相同的功能,但是303明确表示客户端应使用GET方法获取资源 |
304 Not Modified | 请求的资源未过期,响应不包含主体部分 |
307 Temporary Redirect | 临时重定向,但是会遵守浏览器标准,禁止POST 变成GET |
400 Bad Request | 请求报文中存在语法错误 |
401 Unauthorized | 请求需要认证,如果已经认证过,则表示用户认证失败 |
403 Forbidden | 禁止访问,用户没有权限访问 |
404 Not Found | 没有找到请求的资源 |
500 Internal Server Error | 服务器端在执行请求时发生了错误 |
503 Service Unavailable | 服务器无法处理请求 |
当返回301、302、 303时,几乎所有的浏览器都会把POST 改成GET,并删除请求报文内的主体,之后请求自动重发。
301、302标准禁止将POST 改成GET,但是实际使用时大家都会这么做。
第五章 web服务器
一台web服务器可搭建多个独立域名的web网站,也可作为通信路径上的中转服务器提升传输效率。
利用虚拟主机的功能,一台web服务器可搭建多个web站点,若www.tricode.jp与www.hackr.jp 搭建在同一台服务器上面,则通过DNS解析出的ip地址是相同的,因此,http请求,必须指定完整的主机名或域名的URI。
通信数据转发程序:代理、网关、隧道
代理服务器:接受请求(或响应)并转发。
好处: 利用缓存技术减少网络带宽的流量,组织内部针对特定网站的访问控制,以获取日志为主要目的等等。
网关: 可以是http请求转化为其他协议通信;提高通信的安全性
隧道:远距离;安全通信
缓存是指代理服务器或客户端本地磁盘保存的资源副本。利用缓存可以减少对源服务器的访问,也就节省了通信流量的通信时间。
代理服务器转发服务器响应时,会保存一份资源副本。客户端缓存是保存在本地磁盘内的临时网络文件。如果浏览器缓存有效,就不必再向服务器请求相同的资源了。