HTTP概述
- HTTP使用的是可靠地数据传输协议。
- HTTP属于应用层协议
Web客户端和服务器
- web服务器:又称http服务器,用于存储web内容,并向web客户端提供web内容
- web客户端:用于请求web服务器的应用软件,常见为浏览器
资源
媒体类型
MIME类型是一种文本标记,表示一种主要对象类型和一个特定的子类型,用/分隔;
URI(统一资源标识符)
URI的两种形式为:URL与URN
URL(统一资源定位符)
- 描述一台特定服务器上某资源的特定位置
- 目前几乎所有URI都是URL
- 解析URL组成:例如:https://www.baidu.com/img/a.png;
- 方案,说明访问资源说使用的协议类型。通常为http或https协议,上方为例即:https//
- 服务器因特网地址(域名):上方为例即:www.baidu.com
- 指定资源路径:上方为例即:/img/a.png
URN(统一资源名)
作为特定内容的唯一名称使用,与目前资源的所在地无关。目前处于实验阶段,并不推广使用
事务
方法
常见http方法如下:
- GET:从服务器向客户端发送命名资源
- PUT:将来自客户端的数据存储到一个命名的服务器资源中去
- DELETE:从服务器中删除命名资源
- POST:将客户端数据发送到一个服务器网管应用程序
- HEAD:仅发送命名资源响应中的HTTP首部
状态码
- 每条HTTP响应报文返回时都会携带一个状态码
- 状态码都为三位数值的代码,代表着额定意义
- 状态码后都会有一条解释性的原因短语
常见状态码: - 200:OK。文档正确返回
- 302:Redirect(重定向)。到其他地方取资源
- 404:Not Found(未找到)。无法找到该资源
报文
- HTTP报文是由一行一行的简单字符串组成的。HTTP报文都是纯文本,不是二进制代码
- 请求报文(request message):web客户端向web服务器发送的报文
- 响应报文(response message):web服务器向web客户端发送的报文
http报文的三部分
- 起始行:请求报文包含请求路径,请求方法,http协议版本;响应报文包含http协议版本,http状态码,状态码解释短语
- 首部字段(header头):每个首部字段都包含一个名字和一个值,使用:分隔,多个字段使用新行分隔,并以空行结束
- 主体:请求报文包含发送给web服务器的数据;响应报文包含发送给客户端的数据
链接
TCP/IP
TCP特点
- 无差错的数据传输
- 按序传输(数据按照发送的顺序到达)
- 未分段的数据流(可以在任意时刻以任意尺寸将数据发送出去)
HTTP协议栈
连接、IP和端口号
http链接无端口号时,默认端口号为80
协议版本
按照时间顺序如下:
- HTTP0.9:只支持GET方法,不支持多媒体的MIME内容,各种HTTP首部与版本号,只应该用于与老的客户端进行连接
- HTTP1.0:添加了版本号,各种HTTP首部,一些额外的方法,以及多媒体对象的处理
- HTTP1.1:重点关注的是校正HTTP设计中的结构性缺陷,明确语义,引入重要的性能优化措施,并删除一些不好的特性
- HTTP2.0(HTTP-NG):目前仍在实验中。重点关注性能的大幅优化,以及更强大的服务逻辑远程执行框架
web的结构组件
代理
位于客户端和服务端之间的HTTP中间实体
缓存
HTTP的仓库,使常用页面的副本可以保存在离客户端更近的地方
网关
连接其他应用程序的特殊web服务器
隧道
对HTTP通信报文进行盲转发的特殊代理
Agent代理
发起自动http请求的半智能web客户端