HTTP
一、基本概念
URI 统一资源标识符
Web上可用的每种资源 -HTML文档、图像、视频片段、程序等 - 由一个通用资源标识符(Uniform Resource Identifier, 简称"URI")进行定位。
包含URL (统一资源定位符) 和URN (统一资源命名)
URL是一种具体的URI,它是URI的一个子集,它不仅唯一标识资源,而且还提供了定位该资源的信息。
请求和响应报文
1.请求报文
HTTP协议使用TCP协议进行传输,在应用层协议发起交互之前,首先是TCP的三次握手。完成了TCP三次握手后,客户端会向服务器发出一个请求报文。请求报文的格式如下图抓包所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bWBtTff8-1585216255133)(C:\Users\wangqun\AppData\Roaming\Typora\typora-user-images\image-20200120005210938.png)]
前三行为请求行,其余部分称为request-header。请求行中的method表示这次请求使用的是get方法。请求方法的种类比较多,如option,get,post,head,put,delete,trace等,常用的主要是get,post。Get表示请求页面信息,返回页面实体;post是请求服务器将指定文档作为请求的url中的从属实体,简单说,我们常用的在网页中填写表单然后申请等动作就是使用了post方法,填写用户名密码登录站点就使用了get方法
2.响应报文
当收到get或post等方法发来的请求后,服务器就要对报文进行响应。同样,响应报文也分为两部分。
前两行称为状态行,状态行给出了服务器的http版本,以及一个响应代码。响应代码是服务器根据请求进行查找后得到的结果的一种反馈,共有5大类。分别以1、2、3、4、5开头。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J5seSJ5j-1585216255136)(C:\Users\wangqun\AppData\Roaming\Typora\typora-user-images\image-20200120005454437.png)]
二、HTTP 方法
GET
是向服务器发索取数据的一种请求
当前网络请求中,绝大部分使用的是 GET 方法。
POST
是向服务器提交数据的一种请求
和 GET 方法类似,但是不返回报文实体主体部分。
主要用于确认 URL 的有效性以及资源更新的日期时间等。
HEAD
与 GET 相同,但只返回 HTTP 报头,不返回文档主体
和 GET 方法类似,但是不返回报文实体主体部分。
主要用于确认 URL 的有效性以及资源更新的日期时间等。
PUT(不推荐使用)
上传指定的 URI 表示
PATCH
对资源部分修改
DELETE
删除指定资源
CONNECT
把请求连接转换到透明的 TCP/IP 通道
TRACE
追踪路径
三、HTTP 状态码
状态码 | 类别 | 含义 |
---|---|---|
1XX | Informational(信息性状态码) | 接收的请求正在处理 |
2XX | Success(成功状态码) | 请求正常处理完毕 |
3XX | Redirection(重定向状态码) | 需要进行附加操作以完成请求 |
4XX | Client Error(客户端错误状态码) | 服务器无法处理请求 |
5XX | Server Error(服务器错误状态码) | 服务器处理请求出错 |
四、HTTP 首部
五、具体应用
1. 短连接与长连接
当浏览器访问一个包含多张图片的 HTML 页面时,除了请求访问的 HTML 页面资源,还会请求图片资源。如果每进行一次 HTTP 通信就要新建一个 TCP 连接,那么开销会很大。
长连接只需要建立一次 TCP 连接就能进行多次 HTTP 通信。