极客时间 透析http 基础篇 笔记 02

极力支持极客时间  https://time.geekbang.org/column/article/102483

08 | 键入网址再按下回车,后面究竟发生了什么?

HTTP 协议基于底层的 TCP/IP 协议,所以必须要用 IP 地址建立连接;

如果不知道 IP 地址,就要用 DNS 协议去解析得到 IP 地址,否则就会连接失败;

建立 TCP 连接后会顺序收发数据,请求方和应答方都必须依据 HTTP 规范构建和解析报文;

为了减少响应时间,整个过程中的每一个环节都会有缓存,能够实现“短路”操作;

虽然现实中的 HTTP 传输过程非常复杂,但理论上仍然可以简化成实验里的“两点”模型。

09 | HTTP报文是什么样子的?

HTTP 报文结构就像是“大头儿子”,由“起始行 + 头部 + 空行 + 实体”组成,简单地说就是“header+body”;

HTTP 报文可以没有 body,但必须要有 header,而且 header 后也必须要有空行,形象地说就是“大头”必须要带着“脖子”;

请求头由“请求行 + 头部字段”构成,响应头由“状态行 + 头部字段”构成;

请求行有三部分:请求方法,请求目标和版本号;

状态行也有三部分:版本号,状态码和原因字符串;

头部字段是 key-value 的形式,用“:”分隔,不区分大小写,顺序任意,除了规定的标准头,也可以任意添加自定义字段,实现功能扩展;

HTTP/1.1 里唯一要求必须提供的头字段是 Host,它必须出现在请求头里,标记虚拟主机名。

10 | 应该如何理解请求方法?

请求方法是客户端发出的、要求服务器执行的、对资源的一种操作;

请求方法是对服务器的“指示”,真正应如何处理由服务器来决定;

最常用的请求方法是 GET 和 POST,分别是获取数据和发送数据;

HEAD 方法是轻量级的 GET,用来获取资源的元信息;

PUT 基本上是 POST 的同义词,多用于更新数据;

“安全”与“幂等”是描述请求方法的两个重要属性,具有理论指导意义,可以帮助我们设计系统。

11 | 你能写出正确的网址吗?

URI 是用来唯一标记服务器上资源的一个字符串,通常也称为 URL;

URI 通常由 scheme、host:port、path 和 query 四个部分组成,有的可以省略;

scheme 叫“方案名”或者“协议名”,表示资源应该使用哪种协议来访问;“host:port”表示资源所在的主机名和端口号;

path 标记资源所在的位置;query 表示对资源附加的额外要求;

在 URI 里对“@&/”等特殊字符和汉字必须要做编码,否则服务器收到 HTTP 报文后会无法正确处理。

12 | 响应状态码该怎么用?

状态码在响应报文里表示了服务器对请求的处理结果;

状态码后的原因短语是简单的文字描述,可以自定义;

状态码是十进制的三位数,分为五类,从 100 到 599;

2××类状态码表示成功,常用的有 200、204、206;

3××类状态码表示重定向,常用的有 301、302、304;

4××类状态码表示客户端错误,常用的有 400、403、404;

5××类状态码表示服务器错误,常用的有 500、501、502、503。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值