基础技能之HTTP协议
Posted 白桦林
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基础技能之HTTP协议相关的知识,希望对你有一定的参考价值。
前言
协议:
HTTP是确立一种计算机之间通信规范,包括相关的各种控制和错误处理方式。
传输协议:
HTTP是一种专用于计算机两点之间传输数据的约定和规范。
超文本传输协议:
HTTP是一种专用于计算机两点之间传输文字、图片、音频、视频等超文本数据的约定和规范。
HTTP相关协议
TCP/IP协议栈有四层,最上层是“应用层”,最下层是“链接层”,TCP和IP则在中间:TCP属于“传输层”,IP属于“网际层”。IP协议(Internet Protocol),主要目的是解决寻址和路由问题,以及如何在两点间传送数据包。TCP协议(Transmission Control Protocol),位于IP协议之上,基于IP协议提供可靠的、字节流形式的通信。HTTP利用TCP/IP协议栈逐层打包再拆包,实现了数据传输,因此HTTP协议被称为“HTTP over TCP/IP”。
图1:OSI网络分层模型和TCP/IP协议栈
URI(统一资源标识符:Uniform Resource Identifier)是用来标记互联网上资源的一个名字,由“协议名+主机名+路径”构成。其中包括URL(统一资源定位符:Uniform Resource Locator)和URN(统一资源名称:Uniform Resource Name)。
图2:URI包括URL和URN
协议名:即访问该资源应当使用的协议,在这里是“http”;
路径:即资源在主机上的位置,使用“/”分隔多级目录,在这里是“/webstore”。
HTTP消息结构
起始行(start line):描述请求或响应的基本信息;
头部字段集合(header):使用key-value形式更详细地说明报文;
空行(CRLF):在header之后必须要有一个空行,十六进制的“0D0A”;
消息正文(entity):实际传输的数据,它不一定是纯文本,可以是图片、视频等二进制数据。
图3:HTTP报文结构
Request Headers和Response Headers分别是本次HTTP的请求和响应。结构基本一样,唯一的区别是起始行,请求它的起始行(请求行)说明了请求方法(图4为GET),资源标示符指明了请求访问的资源对象(图4为/x/web-interface/index/icon),HTTP版本号(图4为HTTP/1.1),表示客户端使用的HTTP版本协议,响应的起始行(状态行)表明了HTTP版本号(图4为HTTP/1.1),状态码(图4为200),原因(图4为OK,表示一切正常)。请求行或状态行加上头部字段集合就构成了HTTP报文里完整的请求头或响应头,头部字段是key-value的形式。数据类型表示实体数据的内容是什么,Accept为客户端接受哪些Mine类型,Content-Type为服务器的,“,”顺序列出多个可能的选项,还可以用“;q=”参数来精确指定权重;数据编码表示实体数据的压缩方式,Accept-Encoding和Content-Encoding支持的编码类型;语言类型表示实体数据的自然语言,Accept-Language和Content-Language为可接受的语言;User-Agent为一个标识客户端的字符串。
图4:一次完整的HTTP请求响应
HTTP状态码
1××:提示信息,表示目前是协议处理的中间状态,还需要后续的操作;
2××:成功,报文已经收到并被正确处理,常用的有200、204、206;
3××:重定向,资源位置发生变动,需要客户端重新发送请求,常用的有301、302、304;
4××:客户端错误,请求报文有误,服务器无法处理,常用的有400、403、404;
5××:服务器错误,服务器在处理请求时内部发生了错误,常用的有500、501、502、503。
HTTP/1.1中的请求方法
GET:获取资源,可以理解为读取或者下载数据;
HEAD:获取资源的元信息;
POST:向资源提交数据,相当于写入或上传数据;
PUT:更新资源数据,类似POST;
DELETE:删除资源;危险性大,很少用;
CONNECT:建立特殊的连接隧道;
OPTIONS:列出可对资源实行的方法;
TRACE:追踪请求-响应的传输路径。
安全与幂等
cookie
总结
以上是关于基础技能之HTTP协议的主要内容,如果未能解决你的问题,请参考以下文章