什么是http协议?
对服务器 传输超文本 到 本地浏览器 的规范,简称 超文本传输协议。
特点
简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有 GET、POST、HEAD、PUT等等。每种方法规定了客户与服务器联系的类型不同。由于 HTTP 协议简单,使得 HTTP 服务器的程序规模小,因而通信速度很快。
灵活:HTTP 允许传输任意类型的数据对象。正在传输的类型由 Content-Type 加以标记。
无连接: 客户端请求一次 服务端就连接一次,客户端得到响应后 断开。
无状态:在http协议中,客户端的每次请求 对于服务端都是新的请求。
多种模式:支持 B/S 及 C/S 模式。
如何标志网络中的资源
首先了解 一个服务器对应多个端口,每个端口又有对应的多个资源。
URI地址 统一资源标志符 用来唯一的标识一个资源,浏览器上的 图片视频 文字,都是通过URI标志 可以理解为一个绝对路径。
比如这个完整的路径
http//192.168.0.11:3000/1.jpg
包括(协议 IP地址 端口号 资源路径)
URL 统一资源定位符 指在这个服务下的资源的路径,可以理解为一个相对路径。
一般在工作中 为了方便 我们把URI 也会去叫做 URL 。
URN 统一资源命名符,是通过名字来标识资源。
有的时候URI名字太长,就给它命名。
请求和响应
请求
第 1 行为 请求行,用来说明请求类型 ( GET ),要访问的资源( /index.html?a=1&b=2 )以及所使用的 HTTP版本( HTTP/1.1 )。
从第 2 行开始,也就是紧接着请求行(即第一行)之后的部分,是 请求头,用来说明服务器要使用的附加信
息。
HOST :服务器的域名。
User-Agent :浏览器的浏览器身份标识字符串。
Accept:能够接受的回应内容类型( Content-Types )。参见内容协商。
Accept-Encoding:能够接受的编码方式列表。参考HTTP压缩。
Accept-Language:能够接受的回应内容的自然语言列表。参考 内容协商 。
Cookie:之前由服务器通过 Set- Cookie 发送的一个 超文本传输协议 Cookie。
Connection:该浏览器想要优先使用的连接类型。
第 10 行为空行,实际上有回车符和换行符。
第 11 行为请求体,因为这次请求为 GET,请求的参数保存在请求行的 URL 中。即使是没有数据也必须有空行。
注意:GET 请求类型比较特殊 ,参数在URL里。
响应
一般情况下,服务器接收并处理客户端发过来的请求之后会返回一个 HTTP 的响应消息。它也是由 4 个部分组成:
第 1 行为 响应行,HTTP/1.1 是协议版本,状态码为 200,标志请求成功,状态消息为(OK)。
从第 2 行开始,是 响应头
X-Powered-By:表明用于支持当前网页应用程序的技术(例如:PHP)。
Accept-Ranges :这个服务器支持哪些种类的部分内容范围。
Cache-Control:向从服务器直到客户端在内的所有缓存机制告知,它们是否可以缓存这个对象。其单位为
秒。
Last-Modified:所请求的对象的最后修改日期(按照 RFC 7231 中定义的“超文本传输协议日期”格式来表
示)。
ETag:对于某个资源的某个特定版本的一个标识符,通常是一个 消息散列。
Content-Type:当前内容的 MIME类型。
Content-Length:回应消息体的长度,以 字节 (8位为一字节)为单位。
Date:此条消息被发送时的日期和时间(按照 RFC 7231 中定义的“超文本传输协议日期”格式来表示)。
Proxy-Connection:针对该连接所预期的选项。
第 11 行为空行,实际上有回车符和换行符。
第 12 行为响应体。
状态码
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求
HTTP事务
HTTP 事务用来描述一次完整的从请求到响应的过程
1.到用户发起请求时,首先进行域名解析
2.拿到域名所对应的 IP 地址之后,通过 TCP 协议建立与服务端的通信连接。
( 三次握手,建立连接 )
3.服务接收到用户请求之后,进行业务处理,随后将请求之后的结果返回给浏览器
4.浏览器接收到后台的数据