HTTP 笔记
基本的浏览器连接处理
- 浏览器从URL中解析出服务器主机名
- 浏览器将服务器主机名转换为对应的IP地址
- 浏览器从URL中解析出端口号
- 浏览器建立一条与web服务器的TCP(传输控制协议)连接
- 浏览器向服务器发送一条HTTP请求报文
- 服务器向浏览器回送一条HTTP响应报文
- 关闭连接,浏览器像是文档
HTTP网络协议栈
TCP
传输控制协议,规定了数据是如何从一个地方发送到另一个地方的。
TCP主要提供了
- 无差错的数据传输
- 按序传输(数据总是会按照发送时的顺序到达)
- 未分段的数据流(可以在任意时刻以任意尺寸将数据发送出去)
只要建立了TCP连接,客户端和服务器端就之间的数据交换就不会丢失,不会错序。
web的结构组件
代理:位于客户端和服务器端之间的中间实体。接收客户端的所有HTTP请求,将这些请求转发给服务器(可能会修改请求)。
可以对请求或响应进行过滤(对下载的程序进行病毒检测,屏蔽一些黄暴的内容等)。
缓存
网关:通常用于将HTTP数据转换为其他其他的协议。
三次握手
为了准确无误的将数据送达,TCP协议采用了三次握手策略
HTTP状态码
HTTP状态码负责表示客户端HTTP请求的返回结果、标记服务器端的处理是否正常、通知出现的错误等。
类别 | 原因短语 | |
1xx | 信息性状态码 | 接收的请求正在处理 |
2xx | 成功状态码 | 请求正常处理完毕 |
3xx | 重定向状态码 | 需要进行附加操作以完成请求 |
4xx | 客户端错误状态码 | 服务器无法处理请求 |
5xx | 服务器错误状态码 | 服务器处理请求出错 |
- 200,OK,请求已正常处理
- 204,请求已处理但没有资源可返回
- 301,请求的资源已经被分配了新的URI
- 302,临时重定向(请求的资源临时被分配了新的URI)
- 401,发送的请求未经过认证(需要通过HTTP认证)
- 403,不允许访问该资源
- 404,没有请求的资源
- 500,服务器端发生错误
- 503,服务器处于超负载状态或正在停机维修,现在无法处理该请求
HTTP的不足(缺点)
- 通信使用明文(不加密)可能被窃听或篡改
- 不验证通信双发的身份,有可能遭遇伪装
HTTPS
HTTP协议中没有加密机制,但是可以通过和SSL(secure socket layer,安全套接层)或者TLS(安全传输层协议,transport layer security)的组合使用,加密HTTP的通信内容
使用SSL建立安全通信路线之后,就可以在这条线路上进行HTTP通信了。
与SSL组合使用的HTTP被称为HTTPS