HTTP通信的过程包含从客户端到服务端的请求和从服务端到客户端的响应
HTTP报文
HTTP报文是由多行数据构成字符串文本,大致可分为报文头和报文主体
报文的结构
报文的首部由以下部分组成
- 请求行:包含用于请求的方法,请求URI和HTTP版本
- 状态行:包含表明响应结果的状态码,原因和HTTP版本
- 首部字段:包含表示请求和响应的各种条件和属性的各类首部
- 其它:可能包含HTTP的RFC里未定义的首部(Cookie等)
状态码
状态码描述请求的结果
| 类别 | 原因 | |
|---|---|---|
| 1xx | Information(信息状态码) | 接收的请求正在处理 |
| 2xx | Success(成功状态码) | 请求正常处理完毕 |
| 3xx | Redirection(重定向状态码) | 需要进行附加操作才能完成请求 |
| 4xx | Client Err(客户端错误状态码) | 服务器无法处理请求 |
| 5xx | Server Err(服务器错误状态码) | 服务器处理请求错误 |
2xx
- 200:表示请求被正常处理
- 204:请求被正常处理,但是没有资源返回
- 206:该状态码表示客户端进行了范围请求,而服务器成功执行了这部分的GET请求。响应报文中包含由Content-Range指定范围的实体内容
3xx
- 301:永久性重定向。表示请求的资源已经被分配了新的URI,以后应使用资源现在的URI访问
- 302:临时性重定向。该状态码表示请求的资源已被分配了新的URI,希望用户(本次)能使用新的URI访问
- 303:该状态码表示由于请求对应的资源存在着另一个URI,应使用GET方法定向获取请求的资源
- 304:表示资源已经找到,但不符合条件请求
4xx
- 400:表示请求报文中存在错误
- 401:未授权。该状态码表示发送的请求需要有通过HTTP认证的认证信息
- 403:禁止访问
- 404:没有找到对应的资源
5xx
- 500:表明服务器端在执行请求时发生了错误
- 503:该状态码表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求
代理、网关、隧道
代理
代理是一种网络服务,可以代表客户端详向其它网络服务请求数据。代理服务器充当了客户端和目标服务器之间的中转站
功能
- 加速访问:代理服务器可以缓存已访问过的网页,以便下次访问可以更快
- 过滤内容:代理服务器可以对请求进行拦截,从而过滤内容
- 提高安全性:代理服务器可以隐藏用户的真实IP地址,从而提高安全性。
- 提高匿名性:代理服务器可以充当匿名代理,隐藏客户端的真实IP地址,保护用户的隐私
网关
网关是一种连接不同网络的设备或系统,它可以翻译不同网络之间的协议,使它们能够进行通信
功能
- 连接不同网络:网关可以将局域网连接到互联网,也可以连接其他不同类型的网络。
- 协议转换:网关可以将一个网络的协议格式转换为另一个网络可识别的协议格式。
- 路由选择:网关可以根据路由表将数据包转发到目标网络或主机。
- 数据包过滤:网关可以根据规则过滤数据包,从而保护网络的安全
隧道
隧道是一种将数据包封装在另一种协议中以便在不同网络之间传输的技术
功能
- 远程访问:通过建立隧道,用户可以从外部网络远程访问内部网络。
- 负载均衡:隧道可以将数据包转发到多个目标主机,从而实现负载均衡。
- 数据安全:隧道可以使用SSL等加密手段进行通信,保证客户端与服务器之间的数据安全