HTTP 的原理和工作机制学习笔记整理
最近在学习 HenCoder Plus 的二期课程,想巩固一下基础的同时,也在这里记录一下,结合讲义做一下笔记。
HTTP 的定义(Hypertext Transfer Protocol)
一种网络协议传输协议,位于 TCP/IP 协议族的最顶层–(应用层);
超文本传输协议,和 HTML(Hypertext Markup Language) 超文本标记一起诞生,用于在网络上请求和传输 HTML 内容。
超⽂文本,即「扩展型⽂文本」,指的是 HTML 中可以有链向别的⽂文本的链接(hyperlink)。
1 | <!DOCTYPE html> |
HTTP 的工作方式
浏览器:
用户输入地址后回车或点击链接 -> 浏览器拼装 HTTP 报⽂并发送请求给服务器 -> 服务器处理理请求后 发送响应报文给浏览器 -> 浏览器解析响应报⽂并使⽤渲染引擎显示到界⾯
手机 App:
⽤户点击或界⾯自动触发联网需求 -> Android 代码调⽤拼装 HTTP 报⽂并发送请求到服务器器 -> 服务器处理理请求后发送响应报文给手机 -> Android 代码处理响应报文并作出相应处理理(如储存数据、加⼯数据、显示数据到界面)
URL 和 HTTP 报文
URL 格式
三部分:协议类型、服务器地址(和端口号)、路径(path)
协议类型: //服务器地址[:端口号]路径
报文格式
请求报文
请求行:
1 | GET(method) + /users (path)+ HTTP/1.1 (HTTP version) |
Headers:
1 | Host:api.github.com |
Body:
1 | balabalabala.... |
响应报文结构
状态行:
1 | HTTP/1.1(HTTP version) + 200(state code) + OK (state msg) |
Headers:
1 | content-type: application/json; charset=utf-8 |
Body:
1 | [{"login":"mojombo","id":1,"node_id":"MDQ6VXNlcjE |
Request Method 请求方法
GET 特点
- 用户获取资源
- 对服务器数据不进行修改
- 不发送 Body
POST 特点
- 用于增加或修改资源
- 发送给服务器的内容写在 Body 里面
1 | POST /users HTTP/1.1 |
PUT 特点
- 用于修改资源
- 发送给服务器的内容写在 Body 里面
DELETE 特点
- 用于删除资源
- 不发送 Body
HEAD 特点
- 和 GET 使用方法完全相同
- 和 GET 唯一区别在于,返回的响应中没有 Body
State Code 状态码
三位数字,⽤于对响应结果做出类型化描述(如 获取成功、内容未找到)
- 1xx:临时性消息。如:100 (继续发送)、101(正在切换协议)
- 2xx:成功。最典型的是 200(OK)、201(创建成功)
- 3xx:重定向。如 301(永久移动)、302(暂时移动)、304(内容未改变)
- 4xx:客户端错误。如 400(客户端请求错误)、401(认证失败)、403(被禁⽌止)、404(找 不不到内容)
- 5xx:服务器器错误。如 500(服务器器内部错误)。
Cache 和 Buffer 的区别
Cache 是缓存,为了提升效率速度。
Buffer 是缓冲,上游多生产一些,给下游使用。