HTTP协议的理解
一、http介绍
HTTP协议,也称为超文本传输协议,是从服务器传输超文本到客户端的一种协议。指的就是一种在不同网络设备之间传输信息的规定,有了它,不同设备之间可以以一种统一的规则进行数据传输
二、URI与URL
HTTP使用URI建立连接和传输数据
URI:统一资源标识符,用来指示这是什么资源,你可以理解为一个人的身份证号码。
URL:统一资源定位符,用来指示资源的具体位置,网络上的每一个资源都具有其单独的存储位置,可以理解为一个人的家庭住址。
三、特点
1、基于请求-响应的连接方式
协议规定,请求从客户端发出,服务端收到请求后给予响应。一定是客户端先发出的请求,服务端不会主动发送响应。
2、无状态
HTTP是无状态协议,协议不会对请求与响应的通信状态进行保存,每当有新的请求就会有新的响应发出。协议为了更快的处理事务,不会保留前面的请求响应报文。但是需求的变化,是的httpp需要保存之前的请求响应,比如在登录到一个网站后,跳转到第三方网站,还需要前面的网站保存着登录状态,于是在http1.1中,增加了cookie的技术以实现这种需求。
3、无连接
是指每次连接只处理一个请求,在收到请求-发送响应-收到客户端的应答后,服务器会断开与客户端的连接,这样在处理大量请求时,可以节约很多服务器资源,提高并发性能。
无连接有两种状态,早期版本中,在完成请求-响应后,立刻断开连接。在http/1.1中,完成请求-响应后,服务器等待一个固定的时间,发现客户端不再发送请求后,才断开连接,这样的好处是在客户端频繁发送请求时,可以节省很多建立连接花费的时间。等待时间一般为3秒钟,也可以根据自己网站用户行为进行一定的改变。
四、HTTP请求方法
GET
请求指定页面,返回实体主体
POST
发送请求,请求的内容包含在请求体中
HEAD
与GET类似,但是返回的内容是报头,没有具体内容。
PUT
想服务器中上传资源,取代指定位置的内容。
DELETE
删除服务器中指定页面
CONNECT
HTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
OPTIONS
允许客户端查看服务器性能
TRACE
回显服务器收到的请求,用于测试和诊断
PATCH
对put方法的补充,用来局部更新资源。
五、请求与响应报文格式
请求
(1)请求行:包括请求方式,要访问的资源,http协议版本
(2)请求头:包括首部字段,比如HOST地址,浏览器头,接受内容的格式等
(3)空行:请求头后必须是空行,即使后面的请求数据是空行,这个空行也要有
(4)请求数据:存储的资源信息
响应
(1)响应头:包括版本号,状态码(200),状态消息(OK)
(2)响应头:包括时间,内容长度等
(3)空行
(4)响应数据:服务器返回给客户端的信息
六、状态码
状态码有5种类别,分别以不同的数字开头,不同状态码有不同的含义
类别 | 功能 |
---|---|
1XX | 指示信息,表示请求已经接受,继续处理 |
2XX | 成功,表示请求已经被接受处理 |
3XX | 重定向,请求需要进行更进一步的操作 |
4XX | 客户端错误,请求有语法错误或者不被理解 |
5XX | 服务器内部错误,请求无法处理 |
常见的状态码:
200:OK 响应成功
301 - 资源(网页等)被永久转移到其它URL
302 - 临时跳转
400 Bad Request - 客户端请求有语法错误,不能被服务器所理解
401 Unauthorized - 请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
404 - 请求资源不存在,可能是输入了错误的URL
500 - 服务器内部发生了不可预期的错误
503 Server Unavailable - 服务器当前不能处理客户端的请求,一段时间后可能恢复正常。
七:HTTP工作原理
HTTP协议定义了客户端如何向服务器请求数据,以及服务器如何将数据发送给客户端。
1、客户端通过浏览器与服务器建立TCP套接字
2、客户端通过TCP套接字向服务器发送请求报文。
3、服务器接收到请求后,向客户端发送响应报文。
4、客户端接收到响应报文后,如果connection是close,可以立即断开连接;如果连接方式的keepalive,则可以保持连接一段时间,在这个时间里客户端与服务器之间可以继续传输数据。
5、客户端的浏览器解析响应报文,展示给用户。
TCP套接字:就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。