了解 Web 及网络基础
发送端在层与层间传输数据时,没经过一层都会被加上首部信息,接收端每经过一层都会删除一条首部
多种协议作用
客户端像服务器发起请求时会生成一段请求报文,请求报文是由请求方法,URL,协议版本,可选的请求首部字段和内容实体构成。
请求报文
接收到请求的服务器,会将请求内容的处理结构以响应的形式返回。响应报文基本上由协议版本,状态码,用以解释状态的原因短语,可选的响应首部字段以及实体主体构成。
响应报文
HTTP 是不保存状态的协议和 cookie 的简单介绍
cookie 会根据响应报文中的 Set-cookie 字段来通知客户端自动保存 cookie。下次请求时会自动发送 cookie,服务器会比对数据得到状态结果。
先引入副作用和幂等的概念。
幂等指发送 M 和 N 次请求(两者不相同且都大于1),服务器上资源的状态一致。注册10个和11个帐号是不幂等的,对文章进行更改10次和11次是幂等的。
在技术上说:
- Get 请求能缓存,Post 不能
- Post 相对 Get 安全一点点,因为Get 请求都包含在 URL 里,且会被浏览器保存历史纪录,Post 不会,但是在抓包的情况下都是一样的。
- Post 可以通过 request body来传输比 Get 更多的数据,Get 没有这个技术
- URL有长度限制,会影响 Get 请求,但是这个长度限制是浏览器规定的,不是 RFC 规定的
- Post 支持更多的编码类型且不对数据类型限制
常见状态码
常见状态码
指请求报文和响应报文都可以使用的字段
- Cache-Control no-cache 指客户端不缓存过期资源 no-store 指不进行缓存 max-age 指缓存资源的缓存时间比指定的值小,那么客户端就接受缓存资源,且缓存服务器不对资源有效性进行再次确认
- Connection 指控制不再转发给代理的首部字段(Hop-by-hop),管理持久连接 close 指服务器像明确断开连接 Keep-Alive 指保存持久连接,HTTP/1.1前默认连接是非持久性的,如需要保存持久连接,需要增加此字段
- Upgrade 可以用来指定一个完全不同的通信协议,对于这个字段,服务器可以返回101状态码
请求首部字段
- Accept 指用户代理能够处理的媒体类型及媒体类型的相对优先级
- Accept-Encoding 指用来告知服务器用户代理支持的内容编码及内容编码的优先级顺序
- Authorization 指用来告知服务器,用户代理的认证信息
- Host 当一个 IP 下存在多个域名时,帮助服务器知道要请求的具体主机
- User-Agent 会讲创建请求的浏览器和用户代理名称等信息传达给服务器
HTTPS
在 iOS 中,客户端本地会存放着 CA 证书,在HTTPS 请求时,会首先像服务器索要公钥,获得公钥后会使用本地 CA 证书验证公钥的正确性,然后通过正确的公钥加密信息发送给服务器,服务器会使用私钥解密信息。
HTTPS 相对于 HTTP 性能上差点,因为多了 SSL/TLS 的几次握手和加密解密的运算处理,但是加密解密的运算处理已经可以通过特有的硬件来加速处理。
