流量分析原理
网络流量分析系统主要由网络探针、统一管理分析 平台和分析软件三部分共同组成。
1、探针
- 通过分光、镜像等方式获取数据的设备:
- 数据包捕获;
- 数据初始处理;
- 提供数据(全包数据)给PM服务器或客户端程序;
- 数据包截断(如只获取数据包部分长度时)
2、统一管理分析平台
统一管理分析平台是系统的集中管理控制平台和核心监控平台,需安装在服务器上,配置探针的分析策略,收集探针采集到的信息,并进行汇总、分析。实现统一的、相互关联的网络性能监控和分析。主要功能如下:
- 对网络探针进行全局的配置。
- 用于流量的监控、分析和故障诊断。
- 记录所有数据。
- 内置数据库。
- 同时实现实时性监控与自动化历史数据分析。
3、分析软件
- 通过探针获取的数据的包头信息或原始数据包并进行分析主要功能:
- 数据包分析能力;
- 协议解码分析;
- 支持多种条件的过滤器;
- 专家系统分析;
- 应用智能分析;
TCP协议相关概念
TCP协议
TCP是建立在IP协议之上,封装在IP数据区中,但它是在基于无连接的IP协议之上提供面向连接的高可靠性数据传输和与进程通信的能力。它利用确认与超时重传、滑动窗口机制进行流控和拥塞控制来保证高可靠性的,同时,为了保证可靠性,它以牺牲效率为代价,在高适时要求场合不合适。
连接数据传输 多路复用 可靠传输 流量控制
TCP包格式
TCP三次握手
TCP的连接
连接性表示要传输数据的双方,必须事先沟通,在建立好连接之后,才能正式开始传输数据。两台主机之间要想完成一次数据传输,必须经历连接建立、数据传输、以及连接拆除三个阶段。
一条TCP连接是一条虚电路,它通过主机IP地址和端口号来标识一条连接。如(192.168.2.37,21; 192.168.2.30,21)就标识了一条TCP连接。所以两个程序可以共享主机上的同一端口,因为连接不同。连接的建立和拆除需要得到对方的认可 连接能保持状态并实现可靠性,而无连接不能保持状态。
TCP流量控制
TCP采用可变发送窗口的方式进行流量控制发送窗口在连接建立时由双方协定 在通信过程中,接收端根据自己的资源情况,随时动态地调整自己的接收窗口,然后告诉对方,使其发送窗口和自己的接收窗口一致。
处理过程如下:
(1)TCP连接阶段,双方协商窗口尺寸;
(2)发送方根据协商的结果,发送符合窗口尺寸的数据字节流,并等待对方的确认;
(3)发送方根据确认信息,改变窗口的尺寸,增加或者减少发送未得到确认的字节 流中的字节数。调整过程包括:如果出现发送拥塞,发送窗口缩小为原来的一半,同时将超时重传的时间间隔扩大一倍。
TCP四次挥手
释放连接时,发出FIN位置1的TCP段并启动定时器,在收到确认后关闭连接。若无确认并且超时,也关闭连接。当两个方向的连接均关闭时,该连接就完全释放。
TCP异常释放
TCP正常释放连接是通过四次挥手来完成,但是有些情况下,TCP在交互的过程中会出现一些意想不到的情况,导致TCP无法按照正常的四次挥手来释放连接,如果此时不通过其他的方式来释放TCP连接的话,这个TCP连接将会一直存在,占用系统的部分资源。在这种情况下,我们就需要有一种能够释放TCP连接的机制,这种机制就是TCP的reset报文。reset报文是指TCP报头的标志字段中的reset位置一的报文。
RST释放连接的常见情况:
- 客户端和服务器的某一方在交互的过程中发生异常(如程序崩溃等)
- 服务器未对外提供服务的端口
- 接收端收到TCP报文,但是发现该TCP的报文,并不在其已建立的TCP连接列表内
- 在交互的双方中的某一方长期未收到来自对方的确认报文,则其在超出一定的重传次数或时间后,会主动向对端发送reset报文
- 应用层为提高效率,主动通过reset报文快速释放连接
最大报文长度
MSS表示TCP报文段的数据长度当一个连接建立时,连接的双方都要通告各自的MSS。 当建立一个连接时,每一方都有用于通告它期望接收的M S S选项(M S S选项只能出现在S Y N报文段中)。 如果一方不接收来自另一方的M S S值,则M S S就定为默认值5 3 6字节. 如果没有分段发生, MSS越大越好。 当T C P发送一个S Y N时,或者是因为一个本地应用进程想发起一个连接,或者是因为收到了另一端主机的一个连接请求,它能将M S S值设置为外出接口上的M T U长度减去固定的I P首部和T C P首部长度。
拥塞控制
TCP处理“快网络小缓存”产生拥塞的措施
- 在连接建立时声明最大可接受段长度。
- 利用可变滑动窗口协议防止出现拥塞。
CP处理“慢网络大缓存”产生拥塞的措施
- 发送方维护两个窗口:可变发送窗口和拥塞窗口,按两个窗口的最小值发送。
- 拥塞窗口依照慢启动(slow start)算法变化。
慢启动”是指每出现一次超时,拥塞窗口都降低到1,使报文段慢慢注人到网络中。“加速递减”是指每出现一次超时,就将门限窗口值减半。若超时频繁出现,则门限窗口减小的速率是很快的。 “拥塞避免”是指当拥塞窗口增大到门限窗口值时,就将拥塞窗口指数增长速度降低为线性增长,避免网络再次出现拥塞。
拥塞窗口
当 TCP 连接进行初始化时,将拥塞窗口置为 1。图中的窗口单位不使用字节而使用报文段。
慢开始门限的初始值设置为 16 个报文段,即 ssthresh = 16。
拥塞窗口的控制
1. 当一个连接初始化时,拥塞窗口置为1个MSS,并设置慢启动的门限窗口值。
2.发送端若收到了对所有发出的报文段的确认,就在下一次发送时将拥塞窗口加倍;若出现超时,则将当时的拥塞窗口值减半,作为新的门限窗口值,同时将拥塞窗口置为1个MSS。
3. 拥塞窗口重新从1个MSS开始按指数规律增长,但增长到新的门限窗口值时,就每次只将拥塞窗口加1个MSS ,使拥塞窗口按线性规律增长。当网络又出现超时时,仍重复上述过程。
Nagle算法
TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同时,对方接收到数据,也需要发送ACK表示确认。为了尽可能的利用网络带宽,TCP总是希望尽可能的发送足够大的数据
Nagle算法就是为了尽可能发送大块数据,避免网络中充斥着许多小数据块。Nagle算法的基本定义是任意时刻,最多只能有一个未被确认的小段。 所谓“小段”,指的是小于MSS尺寸的数据块,所谓“未被确认”,是指一个数据块发送出去后,没有收到对方发送的ACK确认该数据已收到。
(1)如果包长度达到MSS,则允许发送
(2)如果之前发出的数据包收到确认,则立即发送
(3)如果之前发出的数据包未收到确认,则一直缓存数据,直到数据累计到MSS或者确认到达。
延迟确认
通常TCP在接收到数据时并不立即发送ACK,相反,它推迟发送,以便将ACK与需要沿该方向发送的数据一起发送(有时称这种现象为数据捎带ACK),这样做的目的是尽量减少发往网络的报文,以提高传输的效率,节省网络资源。
简单网络分析
Wireshark常见标识
1.【Packet size limited during capture】
在捕获数据包大小有限,即包没有抓全
2.【TCP previous segment not captured】
TCP前一段未捕获,即缺失的那段数据在整个网络都找不到(即排除了乱序)
3.【TCP ACKed unseen segment】
ACK包没有被抓到
4.【TCP Out-of-Order】 TCP乱序
5.【TCP Dup ACK】 重复ACK
6.【TCP Fast Retransmission】 快速重传
数据包分析方法
1、打开数据包后,首先观察TCP会话的数量和解码软件给出的一些提示信息。
2、尝试找出有问题的TCP会话:
- TCP连接建立失败的会话 (一定有问题)
- 数据传输过程中出现丢包、重传的会话(TCP重传也是正常的现象,但具体情况具体分析,如果因此而导致延时较大,或传输失败等那就不正常了)
- TCP会话持续时间明显过长的会话;比如绝大部分会话持续时间都在1秒左右,个别会话达到了几十秒且数据包还较少,这些会话就需要重点关注了。
- 如果是长连接应用,那就查看一下是否有异常中断现象(RST Fin),包的延时相对正常时是否有变化。
3. 过滤出认为可能异常的会话,解码分析一下初步判断哪一端的问题,如TCP 连接建立失败,是哪端无回应。重传是哪个方向的,长连接会话中异常断开的RST是谁发的等等这些线索。
4.通过1-3阶段的分析所得到的线索,再结合故障的现象,会大致判断出问题可能的方向,如A B主机通讯,是A的问题还是B的问题。
5.对比分析定位问题。与谁比,比什么?
- 与正常时段数据对比:(一样的数据流、一样的时长);比会话的数量、延时情况、TCP 建链失败、TCP会话异常中断的数量等。
- 不同抓包节点比:例如FW前后:比TCP会话数是否一致、每个会话的包数是否一致。
常见问题的分析原因 — TCP连接建立异常
抓包分析结果 | 可能原因 | 故障现象 | |
TCP连接建立三次握手过程异常 | 连接建立失败 1、请求端发出SYN建链,对端无SYN_ACK应答,连接建立失败。通常情况下请求端在3秒,6秒,12秒会再次重新发起SYN请求 2、请求端发出SYN包建链,对端无SYN_ACK应答,请求端无ACK应答 建立连接超时 请求端发出SYN包建联,对端SYN_ACK应答超时,连接建立超时 | 1、服务器没有开启服务 2、服务器端TCP堆栈满无法接受连接 3、TCP源端口快速复用 4、防火墙阻拦 5、请求端系统问题 6、网络丢包导致请求端没有收到SYN_ACK包 7、攻击 | TCP连接可用性属性的指标,一旦建立连接失败,传输通道无法建立,应用层必然无法工作。 |
1、服务端系统TCP堆栈满响应延迟 2、网络产生的延迟 | |||
数据包传输异常 | 交互数据包时延大 重传 TCP窗口冻结 TCP/IP 检验错误 | 1、服务器性能导致响应过慢 2、客户端性能导致发送请求慢 3、服务器问题导致TCP窗口冻结 4、网络导致延迟丢包 | 传输过程中TCP监控指标。发生异常时会导致在运行应用发生问题 |
HTTP返回码
1xx - 信息提示
这些状态代码表示临时的响应。客户端在收到常规响应之前,应准备接收一个或多个 1xx 响应。
100 - Continue 继续; 初始的请求已经接受,客户应当继续发送请求的其余部分。(HTTP 1.1新)
101 - Switching Protocols 切换协议; 服务器将遵从客户的请求转换到另外一种协议(HTTP 1.1新)
2xx - 成功
这类状态代码表明服务器成功地接受了客户端请求。
200 - OK 正常; 对GET和POST请求的应答文档跟在后面。
201 - Created 已创建; 服务器已经创建了文档,Location头给出了它的URL。
202 - Accepted 接受; 已经接受请求,但处理尚未完成。
203 - Non-Authoritative Information 非权威的信息; 文档已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝,非权威性信息(HTTP 1.1新)。
204 - No Content 没有内容; 浏览器应该继续显示原来的文档。如果用户定期地刷新页面,而Servlet可以确定用户文档足够新,这个状态代码是很有用的。
205 - Reset Content 重置内容; 但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容(HTTP 1.1新)。
206 - Partial Content 部分内容; 客户发送了一个带有Range头的GET请求,服务器完成了它(HTTP 1.1新)。
207 - 多状态
紧跟消息体后面的是xml消息并且包含了多个单独的响应状态码,响应的数量取决于子请求的个数。
208 - 已经报告
一个DAV的绑定成员被前一个请求枚举,并且没有被再一次包括。
226 - IM Used
服务器已经满足了请求所要的资源,并且响应是一个或者多个实例操作应用于当前实例的结果
3xx - 重定向
客户端浏览器必须采取更多操作来实现请求。 例如,浏览器可能不得不请求服务器上的不同的页面,或通过代理服务器重复该请求。
300 - Multiple Choices 多重选择;
客户请求的文档可以在多个位置找到,这些位置已经在返回的文档内列出。如果服务器要提出优先选择,则应该在Location应答头指明。
301 - Moved Permanently 永久移动;
客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL。
302 - Found 发现;
但新的URL应该被视为临时性的替代,而不是永久性的。注意,在HTTP1.0中对应的状态信息是“Moved Temporatily”。出现该状态代码时,浏览器能够自动访问新的URL,因此它是一个很有用的状态代码。注意这个状态代码有时候可以和301替换使用。例如,如果浏览器错误地请求 http://host/~user (缺少了后面的斜杠),有的服务器返回301,有的则返回302。严格地说,我们只能假定只有当原来的请求是GET时浏览器才会自动重定向。请参见 307。
303 - See Other 查看其它;
类似于301/302,不同之处在于,如果原来的请求是POST,Location头指定的重定向目标文档应该通过GET提取(HTTP类似于301/302,不同之处在于,如果原来的请求是POST,Location头指定的重定向目标文档应该通过GET提取(HTTP 1.1新)。
304 - Not Modified 未修改;
客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。
305 - Use Proxy 使用代理;
客户请求的文档应该通过Location头所指明的代理服务器提取(HTTP 1.1新)。
306 - 切换代理;
不再使用。原意是随后的请求应该使用指定的代理。
307 - Temporary Redirect 临时跳转;
许多浏览器会错误地响应302应答进行重定向,即使原来的请求是POST,即使它实际上只能在POST请求的应答是303时才能重定向。由于这个原因,HTTP许多浏览器会错误地响应302应答进行重定向,即使原来的请求是POST,即使它实际上只能在POST请求的应答是303时才能重定向。由于这个原因,HTTP 1.1新增了307,以便更加清除地区分几个状态代码:当出现303应答时,浏览器可以跟随重定向的GET和POST请求;如果是307应答,则浏览器只能跟随对GET请求的重定向。(HTTP 1.1新)
308 - 永久转移
这个请求和以后的请求都应该被另一个URI地址重新发送。307、308和302、301有相同的表现,但是不允许HTTP方法改变。例如,请求表单到一个永久转移的资源将会继续顺利地执行。
4xx - 客户端错误
发生错误,客户端似乎有问题。 例如,客户端请求不存在的页面,客户端未提供有效的身份验证信息。
400 - Bad Request 错误请求;
请求出现语法错误。
401 - Unauthorized 未授权;
访问被拒绝,客户试图未经授权访问受密码保护的页面。应答中会包含一个WWW-Authenticate头,浏览器据此显示用户名字/密码对话框,然后在填写合适的Authorization头后再次发出请求。IIS 定义了许多不同的 401 错误,它们指明更为具体的错误原因。这些具体的错误代码在浏览器中显示,但不在 IIS 日志中显示:
401.1 - 登录失败。
401.2 - 服务器配置导致登录失败。
401.3 - 由于 ACL 对资源的限制而未获得授权。
401.4 - 筛选器授权失败。
401.5 - ISAPI/CGI 应用程序授权失败。
401.7 – 访问被 Web 服务器上的 URL 授权策略拒绝。这个错误代码为 IIS 6.0 所专用。
402 - 需要付款
为以后保留使用。原意是该状态码可被用于一些数字货币或者是微支付,但是目前还没有普及,所以这些代码不经常被使用。YouYube使用这个状态如果某个IP地址发出了过多的请求,并要求用户输入验证码。
403 - Forbidden 禁止访问;
资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致。禁止访问:IIS资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致。禁止访问:IIS 定义了许多不同的 403 错误,它们指明更为具体的错误原因:
403.1 - 执行访问被禁止。
403.2 - 读访问被禁止。
403.3 - 写访问被禁止。
403.4 - 要求 SSL。
403.5 - 要求 SSL 128。
403.6 - IP 地址被拒绝。
403.7 - 要求客户端证书。
403.8 - 站点访问被拒绝。
403.9 - 用户数过多。
403.10 - 配置无效。
403.11 - 密码更改。
403.12 - 拒绝访问映射表。
403.13 - 客户端证书被吊销。
403.14 - 拒绝目录列表。
403.15 - 超出客户端访问许可。
403.16 - 客户端证书不受信任或无效。
403.17 - 客户端证书已过期或尚未生效。
403.18 - 在当前的应用程序池中不能执行所请求的 URL。 这个错误代码为 IIS 6.0 所专用。
403.19 - 不能为这个应用程序池中的客户端执行 CGI。 这个错误代码为 IIS 6.0 所专用。
403.20 - Passport 登录失败。 这个错误代码为 IIS 6.0 所专用。
404 - Not Found 找不到;
无法找到指定位置的资源。这也是一个常用的应答。
404.0 -(无) – 没有找到文件或目录。
404.1 - 无法在所请求的端口上访问 Web 站点。
404.2 - Web 服务扩展锁定策略阻止本请求。
404.3 - MIME 映射策略阻止本请求。
405 - Method Not Allowed 方法不允许;
请求方法(GET、POST、HEAD、Delete、PUT、TRACE等)对指定的资源不适用,用来访问本页面的 HTTP 谓词不被允许(方法不被允许)(HTTP 1.1新)
406 - Not Acceptable 不可接受;
指定的资源已经找到,但它的MIME类型和客户在Accpet头中所指定的不兼容,客户端浏览器不接受所请求页面的 MIME 类型(HTTP 1.1新)。
407 - Proxy Authentication Required 需要代理认证;
要求进行代理身份验证,类似于401,表示客户必须先经过代理服务器的授权。(HTTP 1.1新)
408 - Request Timeout 请求超时;
在服务器许可的等待时间内,客户一直没有发出任何请求。客户可以在以后重复同一请求。(HTTP在服务器许可的等待时间内,客户一直没有发出任何请求。客户可以在以后重复同一请求。(HTTP 1.1新)
409 - Conflict 冲突;
通常和PUT请求有关。由于请求和资源的当前状态相冲突,因此请求不能成功。(HTTP 1.1新)
410 - Gone 遗失的;
所请求的文档已经不再可用,而且服务器不知道应该重定向到哪一个地址。它和404的不同在于,返回407表示文档永久地离开了指定的位置,而404表示由于未知的原因文档不可用。(HTTP所请求的文档已经不再可用,而且服务器不知道应该重定向到哪一个地址。它和404的不同在于,返回407表示文档永久地离开了指定的位置,而404表示由于未知的原因文档不可用。(HTTP 1.1新)
411 - Length Required 长度要求;
服务器不能处理请求,除非客户发送一个Content-Length头。(HTTP服务器不能处理请求,除非客户发送一个Content-Length头。(HTTP 1.1新)
412 - Precondition Failed 前置条件失败;
请求头中指定的一些前提条件失败(HTTP请求头中指定的一些前提条件失败(HTTP 1.1新)。
413 – Request Entity Too Large 响应实体太大; 目标文档的大小超过服务器当前愿意处理的大小。如果服务器认为自己能够稍后再处理该请求,则应该提供一个Retry-After头(HTTP 1.1新)。
414 - Request URI Too Long 请求URI太长;
被提供的URI对服务器的处理来说太长。经常出现在太多被编码的数据被作为查询字符串的GET请求的结果,因此需要被转换为POST请求。(HTTP 1.1新)。
415 – 不支持的媒体类型。
请求实体的媒体类型不被服务器或者资源支持。例如,客户端上传一个image/svg+xml的图片,但是服务器需要图片使用不同的格式
416 – Requested Range Not Satisfiable 请求范围不能满足;
服务器不能满足客户在请求中指定的Range头。(HTTP 1.1新)
417 – 执行失败。 服务器期望请求头字段的要求。
418 - 我是一个茶壶;
这个代码是在1998年作为传统的IETF April Fools‘ jokes被定义的在RFC2324,超文本咖啡罐控制协议,但是并没有被实际的HTTP服务器实现。RFC指定了这个代码应该是由茶罐返回给速溶咖啡。
419 - 认证超时;
并不是HTTP标注的一部分,419认证超时表示以前的有效证明已经失效了。同时也被用于401未认证的替代选择为了从其它被拒绝访问的已认证客户端中指定服务器的资源。
420 - 方法失效;
不是HTTP的标准,但是被Spring定义在HTTP状态类中当方法失时使用。这个状态码已经不推荐在Spring中使用。421 - 误导请求;
请求被直接定向到不能产生响应的服务器上(例如因为一个连接的复用)。
422 - 不可处理的实体(WebDAV)
请求符合要求但是不能接受错误由于语法错误。
423 - 锁定的
资源访问被锁定。
424 - 失败的依赖
请求由于上一个请求的失败而失败。
426 - 需要升级
客户端应该切换不同的协议例如TLS/1.0在指定的升级的头字段里。
428 - 需要前置条件
原始服务器需要有条件的请求。当客户端GET一个资源的状态的时候,同时又PUT回给服务器,与此同时第三方修改状态到服务器上的时候,为了避免丢失更新的问题发生将会导致冲突。
429 - 过多请求
用户已经发送了太多的请求在指定的时间里。用于限制速率。
431 - 请求头部字段太大
服务器由于一个单独的请求头部字段或者是全部的字段太大而不愿意处理请求。
440 - 登陆超时(微软)
一个微软的扩展,意味着你的会话已经超时。
444 - 无响应
被使用在Nginx的日志中表明服务器没有返回信息给客户端并且关闭了连接(在威慑恶意软件的时候比较有用)。
449 - 重试(微软)
一个微软的扩展。请求应该在执行适当的动作之后被重试。
450 - 被Windows家长控制阻塞(微软)
一个微软的扩展。这个错误是当Windows家长控制打开并且阻塞指定网页的访问的时候被指定。
451 - 由于法律原因而无效(因特网草稿)
被定义在因特网草稿“一个新的HTTP状态码用于法律限制的资源”。被用于当资源的访问由于法律原因被禁止的时候。例如检查制度或者是政府强制要求禁止访问。一个例子是1953年dystopian的小说Fahrenheit 451就是一个非法的资源。
451 - 重定向(微软)
被用在Exchange ActiveSync中如果一个更有效的服务器能够被使用或者是服务器不能访问用户的邮箱。
客户端会假定重新执行HTTP自动发现协议去寻找更适合的服务器。
494 - 请求头太大(Nginx)
Nginx内置代码和431类似,但是是被更早地引入在版本0.9.4(在2011年1月21日)。
495 - 证书错误(Nginx)
Nginx内置的代码,当使用SSL客户端证书的时候错误会出现为了在日志错误中区分它和4XX和一个错误页面的重定向。。
496 - 没有证书(Nginx)
Nginx内置的代码,当客户端不能提供证书在日志中分辨4XX和一个错误页面的重定向。
497 - HTTP到HTTPS(Nginx)
Nginx内置的代码,被用于原始的HTTP的请求发送给HTTPS端口去分辨4XX在日志中和一个错误页面的重定向。
498 - 令牌超时或失效(Esri)
由ArcGIS for Server返回。这个代码意味着令牌的超时或者是失效。
499 - 客户端关闭请求(Nginx)
被用在Nginx日志去表明一个连接已经被客户端关闭当服务器仍然正在处理它的请求,是的服务器无法返货状态码。
499 - 需要令牌(Esri)
由ArcGIS for Server返回。意味着需要一个令牌(如果没有令牌被提交)。
5xx - 服务器错误
服务器由于遇到错误而不能完成该请求。
500 - Internal Server Error 服务器内部错误;
服务器遇到了意料不到的情况,不能完成客户的请求。
500.12 - 应用程序正忙于在 Web 服务器上重新启动。
500.13 - Web 服务器太忙。
500.15 - 不允许直接请求 Global.asa。
500.16 – UNC 授权凭据不正确。 这个错误代码为 IIS 6.0 所专用。
500.18 – URL 授权存储不能打开。 这个错误代码为 IIS 6.0 所专用。
500.100 - 内部 ASP 错误。
501 - Not Implemented 没有实现;
服务器不支持实现请求所需要的功能,页眉值指定了未实现的配置。例如,客户发出了一个服务器不支持的PUT请求。服务器不支持实现请求所需要的功能,页眉值指定了未实现的配置。例如,客户发出了一个服务器不支持的PUT请求。
502 - Bad Gateway 错误的网关;
服务器作为网关或者代理时,为了完成请求访问下一个服务器,但该服务器返回了非法的应答。 亦说Web 服务器用作网关或代理服务器时收到了无效响应。
502.1 - CGI 应用程序超时。
502.2 - CGI 应用程序出错。
503 - Service Unavailable 服务不可用;
服务器由于维护或者负载过重未能应答。 例如,Servlet可能在数据库连接池已满的情况下返回503。服务器返回503时可以提供一个服务器由于维护或者负载过重未能应答。例如,Servlet可能在数据库连接池已满的情况下返回503。服务器返回503时可以提供一个 Retry-After头。这个错误代码为 IIS 6.0 所专用。
504 - Gateway Timeout 网关超时;
由作为代理或网关的服务器使用,表示不能及时地从远程服务器获得应答。(HTTP由作为代理或网关的服务器使用,表示不能及时地从远程服务器获得应答。(HTTP 1.1新) 。
505 - HTTP Version Not Supported http版本不支持;
服务器不支持请求中所指明的HTTP版本。(HTTP 1.1新)。
506 - 变量也是导航
对于请求是透明的内容导航导致循环参照。
507 - 存储不足
服务器不能存储需要的内容去完成请求。
508 - 发现环路
服务器发现了一个无限的循环档处理请求的时候。
509 - 频带宽度超出限制(Apache的扩展)
这个状态码没有在任何RFCS中指定。使用方法是未知的。
511 - 需要网络授权
客户端需要授权去火的网络的访问权限。一般用于代理交互中被用来进行网络的访问控制。
520 - 未知错误
这个状态码也没有被指定在任何RFC中,并且只会被一些服务器返回,例如微软的Azure和CloudFlare服务器:”520错误本质上是一个捕获全部的响应当原始服务器返回一些未知的或者一些不能被忍受或者被解释的(协议违反或者空响应)”。
598 - 网络读取超时异常(未知)
这个状态码也没有在任何RFC中指定,但是被用在微软的HTTP代理中去标注一个网络读取超时在一个客户端之前的代理的后面。
599 - 网络连接超时异常(未知)
这个状态码也没有在任何RFC中指定,但是被用在微软的HTTP代理中去标注一个网络连接超时在一个客户端之前的代理的后面。