计算机网络笔记再战——理解几个经典的协议HTTP章3

理解几个经典协议------HTTP章3

返回结果的HTTP状态码

​ 我们知道,ICMP可以传递IP通信时候的状态如何。HTTP虽然没有辅助的解析,但是它可以使用状态码来表达我们的HTTP请求的结果,标记服务器端的处理是否正常、通知出现的错误等工作。这就是状态码的职责。

​ 比如说,当我们的状态码是2xx的时候,就说明我们的请求不光到达了服务器,而且还得到了正确的处理。如果出现了4XX,则是说明我们的服务器无法请求处理(这个请求是你的请求出现的问题),如果出现了5XX,说明是服务器内部的错误,这是服务器的问题。所以,我们对状态码的第一位做一个分类,可以得到:

种类 类别 原因短语
1XX 信息性状态码 接收的请求正在处理
2XX 成功状态码 请求正常处理完毕
3XX 重定向状态码 需要进行附加操作以完成请求
4XX 客户端错误码 服务器无法处理请求,这是客户端的请求非法导致的
5XX 服务端错误码 服务端请求处理出错了,这是服务器内部的错误

​ 具体每一个号码的请求请参考附录。

与 HTTP 协作的 Web 服务器

​ 我们的HTTP/1.1 规范允许一台 HTTP 服务器搭建多个 Web 站点。这就是使用物理单台主机的虚拟多主机(也就是说,我们虚拟化了我们的主机,看起来有很多台主机在运作,但是实际上只有一台)

​ 客户端使用 HTTP 协议访问服务器时,会经常采用类似这样的主机名和域名。在互联网上,域名通过 DNS 服务映射到 IP 地址(域名解析)之后访问目标网站。可见,当请求发送到服务器时,已经是以 IP 地址形式访问了。

通信数据转发程序 :代理、网关、隧道

​ HTTP通信除了围绕我们的客户端和服务器之外,还会有一部分用来进行通信数据转发。比如说,我们的代理,网关和隧道,他们配合我们的服务器进行工作。

代理

​ 代理是一种有转发功能的应用程序,它扮演了位于服务器和客户端"中间人"的角色,接收由客户端发送的请求并转发给服务器,同时也接收服务器返回的响应并转发给客户端。这个时候,我们授权让我们的代理跟我们的服务器进行通话,而不是我们本人

网关

​ 网关是转发其他服务器通信数据的服务器,接收从客户端发送来的请求时,它就像自己拥有资源的源服务器一样对请求进行处理。有时客户端可能都不会察觉,自己的通信目标是一个网关。

隧道

​ 隧道是在相隔甚远的客户端和服务器两者之间进行中转,并保持双方通信连接的应用程序。我们一般会用来进行安全加密,保证一个安全的HTTP通信

资源的缓存

​ 缓存是指代理服务器或客户端本地磁盘内保存的资源副本。利用缓存可减少对源服务器的访问,因此也就节省了通信流量和通信时间。

​ 缓存服务器是代理服务器的一种,并归类在缓存代理类型中。换句话说,当代理转发从服务器返回的响应时,代理服务器将会保存一份资源的副本。

​ 这个场景,是我们用在请求一部分资源的时候,我们的缓存服务器会咨询我们的源服务器对应的资源是否有效,如果有效,缓存服务器直接将缓存的副本传递回来,而不是再请求一次资源。毕竟,传递"这个资源有效,就用你原来的"的消耗远比直接不管不顾再发送资源来的快。

​ 当然,资源本身也是有期限的,不管是不是过期了,失能的资源需要再向服务器发起请求刷新。

附录

状态码大全

状态码 含义 出现状态码的原因
100 Continue 客户端应继续其请求,服务器已接收到请求的初始部分
101 Switching Protocols 服务器已理解请求,并将切换协议
102 Processing 服务器已收到并正在处理请求,但尚未完成
200 OK 请求成功
201 Created 请求成功并创建了新资源
202 Accepted 请求已被接受,但尚未处理
203 Non-Authoritative Info 返回的信息来自第三方而非原始服务器
204 No Content 请求成功,但无返回内容
205 Reset Content 请求成功,请重置文档视图
206 Partial Content 服务器成功处理了部分请求
207 Multi-Status 响应包含多个独立操作结果(WebDAV)
300 Multiple Choices 请求有多种可用响应
301 Moved Permanently 请求的资源已永久移动到新位置
302 Found 请求的资源临时从不同 URI 响应
303 See Other 请求应通过另一个 URI 获取资源
304 Not Modified 资源未修改,可使用缓存
305 Use Proxy 请求应使用代理访问
307 Temporary Redirect 请求的资源临时从不同 URI 响应(方法不变)
308 Permanent Redirect 请求的资源永久从不同 URI 响应(方法不变)
400 Bad Request 请求格式错误,服务器无法理解
401 Unauthorized 请求未经授权,需身份验证
402 Payment Required 保留状态码,预留用于将来支付机制
403 Forbidden 服务器理解请求但拒绝执行
404 Not Found 请求的资源不存在
405 Method Not Allowed 请求方法被禁止
406 Not Acceptable 请求的资源不满足客户端的 Accept 头要求
407 Proxy Authentication Req 需要代理身份验证
408 Request Timeout 请求超时
409 Conflict 请求冲突(例如资源状态冲突)
410 Gone 请求的资源已被永久删除
411 Length Required 请求未定义 Content-Length 头
412 Precondition Failed 请求头中指定的前提条件失败
413 Payload Too Large 请求实体过大
414 URI Too Long 请求的 URI 过长
415 Unsupported Media Type 请求格式不受支持
416 Range Not Satisfiable 请求的范围无效
417 Expectation Failed 请求头中的 Expect 无法满足
418 I'm a teapot 玩笑用的状态码,不支持冲泡咖啡
421 Misdirected Request 请求被发送到不能生产响应的服务器
422 Unprocessable Entity 请求格式正确但语义错误(WebDAV)
423 Locked 资源被锁定(WebDAV)
424 Failed Dependency 由于之前的请求失败,当前请求失败(WebDAV)
425 Too Early 服务器不愿意处理过早的请求
426 Upgrade Required 客户端需升级协议
428 Precondition Required 需指定请求条件以防止冲突
429 Too Many Requests 客户端发送请求过多,已被限流
431 Request Header Fields Too Large 请求头字段过大
451 Unavailable For Legal Reasons 请求内容因法律原因不可用
500 Internal Server Error 服务器内部错误
501 Not Implemented 服务器不支持请求方法
502 Bad Gateway 网关服务器收到无效响应
503 Service Unavailable 服务器暂时超载或维护中
504 Gateway Timeout 网关服务器请求超时
505 HTTP Version Not Supported 不支持的 HTTP 版本
506 Variant Also Negotiates 内容协商出现循环引用
507 Insufficient Storage 服务器无法存储请求所需内容(WebDAV)
508 Loop Detected 服务器检测到无限循环(WebDAV)
510 Not Extended 请求需进一步扩展
511 Network Authentication Required 需要进行网络认证
相关推荐
vortex511 分钟前
学习使用 Git 和 GitHub 开发项目的教程推荐
git·学习·github
XH华13 分钟前
C语言刷题第六章(下)
c语言·学习
光路科技20 分钟前
从以太网 II 到 VLAN 和 Jumbo Frame:数据帧格式解读
网络
TayTay的学习笔记1 小时前
LinkedList底层结构和源码分析(JDK1.8)
java·笔记·学习
没明白白2 小时前
了解一下HTTP的短连接和长连接
网络·网络协议·http
wjpwjpwjp08312 小时前
【3D视觉学习笔记2】摄像机的标定、畸变的建模、2D/3D变换
人工智能·笔记·深度学习·学习·计算机视觉·3d
cainiaojunshi3 小时前
学习笔记 ASP.NET Core Web API 8.0部署到iis
笔记·学习·asp.net
云上艺旅3 小时前
K8S学习之前站五:清理docker的overlay2 目录
学习·docker·云原生·kubernetes
敲键盘的Q4 小时前
【eNSP实战】基本ACL实现网络安全
网络
李卓璐4 小时前
Python3.10报错 No module named ‘_ssl‘
网络·网络协议·ssl