HTTP 协议
-
超文本传输协议
-
客户端 – 服务器端 协议
-
浏览器这样的客户端发出的消息叫请求(requests)
-
被服务端回应的消息叫响应(responses)
基于HTTP 的组件
- 浏览器给服务器发送一个请求,都会被服务器处理并返回一个消息,响应
客户端 —- 代理 —- 代理 —— 服务端
客户端代理(浏览器 ) 服务端也有代理
user-agent 任何能够为用户发起行为的工具(一般是浏览器/node.js 服务器)
web 服务器:
用来接收客户的请求
一个机器可以装载多个wed 服务
代理
客户端代理:浏览器
作用: 缓存 过滤 负载均衡(让多个服务器服务不同的请求) 认证 日志记录
HTTP 的基本特性
- 简单
- 可扩展
- 无状态(没有关联,上一次的请求/响应下一次不知道),有会话(客户端和服务器端交互)
HTTP 能控制什么
- 缓存
- 开放同源限制(离开a访问b如果没有同源 b可以访问a)
- 认证(认证身份)
- 代理和隧道 (对外隐藏真实Ip)
- 会话
HTTP 流
-
打开一给TCP连接: TCP 连接被用来发送一条或多条请求
-
发送一个HTTP报文:HTTP 报文是语义可读
GET/HTTP/1.1 Host:developer.,ozilla.org ACCept-language:fr
-
读取服务端返回的报文信息
HTTP/1.1 200 ok
last-Modified: Tue,01 Dec 2009 20:18:22 GMT
Content_length: 29769
content-TYpe:text/html
- 关闭连接或者为后续请求重用连接
MIME 类型
-
一种标准化的方式来表示当前文档的性质和格式
-
1.1HTTP缺点:
-
消息头不能被压缩
-
两个报文之间的heaser通常非常相似,但它们仍然在连接中重复传输
-
无法复用
请求头
- 请求头允许客户端向服务器端传递附加信息
请求头 分为:
- 通用头:同时适用于请求和响应消息,但与最终消息主体中传输的数据无关
- 请求头:包含更多有关要获得的资料或客户端本身信息的消息头
- 实体头:包含有关实体主体的更多信息如主主体长度或MiME 类型
请求主体
- 单文件的 文本
- 多文件的 表单
HTTP 报文
- HTTP 消息 请求消息 响应消息
- 请求消息:
HTTP 的 method /获取的资源路径 / http 协议版本号 /请求头部信息headers
- 响应消息
版本号 / 状态码 / 状态信息 / http headers以及包含获取的资源body
http 消息结构
-
start line :起始行(状态行) 描述要执行的请求或者是对应的状态
协议版本:通常为HTTp/1.1
状态码: 表明请求是成功或失败 长见 200(成功),404(失败) ,或 302(重定向)
状态文本:一个简短的,纯粹的信息,通过状态码的文本描述
HTTP/1.1 200 ok
-
HTTP headers :HTTP 头集合 指明请求或描述消息的正文
-
empty line : 一个空行指示所有关于请求的元数据已经发送完毕
-
body :请求相关数据的正文 或者响应相关的文档
请求消息与响应消息
http 请求消息: 由客户端发送用来触发一个服务器上的动作
http 响应消息: 来自服务器的应答