1.简述浏览器输入URL后发生的事情
- 浏览器向 DNS 服务器查找输入 URL 对应的 IP 地址。
- DNS 服务器返回网站的 IP 地址。
- 浏览器根据 IP 地址与目标 web 服务器在 80 端口上建立 TCP 连接。
- 浏览器获取请求页面的 HTML 代码。
- 浏览器在显示窗口内渲染 HTML 。
- 窗口关闭时,浏览器终止与服务器的连接。
TCP三次握手,是在connect执行时,触发三次握手,四次挥手中,任何一方执行close()即可产生挥手操作。
- 为什么需要三次握手
- 书上的说法是: 为了防止已经失效的连接请求报文段突然又传到服务端,因而产生错误 ;
- 本质上是: 信道是不可靠的,但是我们要建立可靠的连接发送可靠的数据,也就是数据传输是需要可靠的。在这个时候三次握手是一个理论上的最小值,并不是说是tcp协议要求的,而是为了满足在不可靠的信道上传输可靠的数据所要求的
- 或者说:为了实现可靠数据传输, TCP 协议的通信双方, 都必须维护一个序列号, 以标识发送出去的数据包中, 哪些是已经被对方收到的。 三次握手的过程即是通信双方相互告知序列号起始值, 并确认对方已经收到了序列号起始值的必经步骤。如果只是两次握手, 至多只有连接发起方的起始序列号能被确认, 另一方选择的序列号则得不到确认
- 如果只有两次握手,那么其中一端就会不确定另一方是否收到了确认信息,那么通信就是不完整的;
- 中间的状态转变:
- LISTEN:表示socket已经处于listen状态了,可以建立连接;
- SYN_SENT:客户端在调用connect时,会先发送一个SYN请求建立连接,在发送请求后等待匹配连接的状态就是SYN_SENT;
- SYN_RCVD: 表示一端已经接收到SYN报文了;
- ESTABLISHED:表示已经建立连接,可以发送数据了;
- FIN-WAIT-1 : 等待远程TCP连接中断请求,或先前的连接中断请求的确认,主动关闭端应用程序调用close,TCP发出FIN请求主动关闭连接,之后进入FIN_WAIT1状态。;
- FIN-WAIT-2: 从远程TCP等待连接中断请求,主动关闭端接到ACK后,就进入了FIN-WAIT-2 .这是在关闭连接时,客户端和服务器两次握手之后的状态,是著名的半关闭的状态了;
- close_wait : 等待从本地用户发来的连接中断请求 ,被动关闭端TCP接到FIN后,就发出ACK以回应FIN请求(它的接收也作为文件结束符传递给上层应用程序),并进入CLOSE_WAIT。
- CLOSING: 等待远程TCP对连接中断的确认,处于此种状态比较少见。 即发送了FIN也收到了对方的FIN,但是没有收到发送FIN的ACK下就会出现该状态;
- LAST-ACK :A执行主动关闭,发送FIN,B收到FIN,发送ACK,进入CLOSE_WAIT,B发送FIN,进入LAST_ACK等待最后一个ACK到来;
- TIME-WAIT : 在主动关闭端接收到FIN后,TCP就发送ACK包,并进入TIME-WAIT状态,等待足够的时间以确保远程TCP接收到连接中断请求的确认,很大程度上保证了双方都可以正常结束,但是也存在问题,须等待2MSL时间的过去才能进行下一次连接。 (MSL要大于等于TTL)
- CLOSED : 被动关闭端在接受到ACK包后,就进入了closed的状态,连接结束,没有任何连接状态。
- 为什么需要四次挥手
- 主要目的是为了保证数据能够完整的传输,因为双方都可以单独关闭连接:
- 当被动方时候偶倒主动方的FIN报文时,只表示主动方没有数据需要在传输了;
- 被动方却未必不存在数据未发送,所以被动方不会马上关闭socket,它可能还需要发送完数据给主动方才关闭连接;
- 发完数据再通过FIN报文通知主动方,我也同意关闭连接,所以需要四次挥手才能保证连接的正常断开。
- 为什么能够建立的半连接数量只有1024
- 由于文件描述符的限制,我们默认情况下只能打开1024个文件描述符,而TCP的socket通信是建立在文件描述符上的,所以限制它只能有1024个连接,该限制可以通过更改文件描述符限制来改善;
- 由于端口范围的限制,端口只能使用的是1024-65535的,但是这个想法是错误的,因为一般标识一个TCP连接是通过四元组进行的, 最大tcp连接为客户端ip数×客户端port数,对IPV4,不考虑ip地址分类等因素,最大tcp连接数约为2的32次方(ip数)×2的16次方(port数),也就是server端单机最大tcp连接数约为2的48次方。
- DNS解析过程
- 浏览器先检查自身缓存是否存在解析过的IP,有解析结束,同时域名缓存时间也可通过TTL属性设置;
- 浏览器自身没有,则向操作系统查询,如果在hosts中指定了一个域名对应的IP地址,则会首先采用改地址;
- 如果操作系统也没找到,则会用递归的方式向本地域名服务器请求解析,大部分的解析在这都能获得满足;
- 如果本地域名服务器还没找到,则采用迭代查询的方式向根域名服务器发出解析请求;
- 根域名服务器则会告诉本地服务器,下一步该查询的顶级服务器IP地址;
- 本地服务区向对应的顶级服务器发出查询请求;
- 顶级服务器则告诉本地服务器,下一步该查询的权限服务器的IP地址;
- 本地服务器则向权限域名服务器发出查询请求;
- 权限域名服务器则告诉本地服务器,所查询的主机的IP地址;
- 本地服务器将最后的结果告诉给用户主机,用户则将之进行缓存;
注意:整个查询公用到了8个UDP报文
- DHCP过程
- 发现阶段:DHCP客户机寻找DHCP服务器的阶段,通过UDP 67端口发出一股DHCP Discover数据包,其中包含客户机的Mac地址和计算机名等信息,且封包源地址为0.0.0.0,目标地址为255.255.255.255,进行一个广播,且只有DHCP服务器才会回应该信息;
- 提供IP地址租用:DHCP服务器提供IP地址的阶段,网络中收到discover包的服务器都会回应,从而从尚未出租的IP地址中挑选一个分配给客户机,并保留IP地址,然后通过DHCP offer广播消息给客户机,该消息包含客户机的MAC,服务器提供的IP,子网掩码,租期和提供IP的DHCP服务器的IP,广播使用的源地址为服务器的IP地址,目标地址为255.255.255.255,;
- 选择阶段:从DHCP服务器中选出一个IP地址的阶段,如网络中存在多台服务器,则客户机只需要挑选DHCP OFFER最先到达的服务器接收即可,并向网络发送一个DHCP request广播包,其中包含客户机的MAC、接收租约的IP地址,提供此租约的服务器地址,告诉所有服务器,它接受哪一台服务器提供的ip地址,其他的服务器则撤销提供的IP,此时,客户机任然使用0.0.0.0作为源255.255.255.255作为目标地址进行广播;
- 租约确认阶段:即DHCP服务器确认所提供的IP地址的阶段,服务器收到客户机的DHCP request后,会广播返回一个DHCP ACK确认包,表明接受选择,并将IP地址的合法租用以及其他的配置信息都放入该广播包发给客户机;客户机在接收到ACK之后,会向网络发送三个针对此IP地址的ARP解析请求以检测冲突,如果该IP已被使用,客户机会发送一个DHCP Decline包给server端,拒绝租用该IP,并重新发送DHCP discover信息,此时服务器则会将该IP设置为BAD_ADDRESS。如果没有占用,则客户机使用该IP地址进行初始化。
**注意:之后在时间周期过去50%时候,客户机会向服务器发出续期的DHCP request包,没有回复会在87。5%时再发一次,如果还不成功100%时需要放弃IP地址重新申请;第一次分配IP地址之后,每次登陆都不需要再发送DHCP discover广播信息了,因为已经知道了服务器的IP地址,所以会直接发送包含前一次所分配的IP地址的DHCP request信息包,服务器收到该信息后会尝试让客户机使用原来的IP地址,并回答一个ACK包, 若该IP地址已被使用,则DHCP服务器将发送一个DHCP NACK信息给客户端,客户端收到该信息后,将重新发送DHCP discover信息来请求新的IP地址。如果客户端已知的DHCP服务器IP地址无效,就只有重新发送广播信息,查找新的DHCP服务器了。 **
- ARP过程
①局域网:首先在本机ARP缓存中寻找IP 地址对应的物理地址的ARP表项,然后直接将数据写入以太网帧中让网卡进行发送即可,如果没有找到,则会在局域网中发送一个ARP请求,目的Mac地址为FF-FF-FF-FF-FF-FF,同一局域网的所有主机都会收到该ARP请求,目标IP对应的主机收到会返回一个ARP应答,告诉请求者自身的MAC地址,本机收到ARP应答则建立一个新的ARP表项,并重新发送数据出去;
②公网:首先也是查询自己的路由表,没有找到,则通过网关来中转,所以会在于网关直连的网卡上请求网关的Mac地址,然后将需要访问机器的数据先发给网关,当合法以太帧到达网关并且顺利接收,网关会将数据递交给IP层
,IP层查询路由表,找到与博客主机直连的接口(假设是直连的,实际上肯定不是直连的),网关会发一个ARP请求
到博客主机上,请求它的MAC地址
,网关收到应答后将建立新的ARP表项
并将开始维护ARP缓存表
,然后完成最终的通信 。
- IP和路由相关
①地址分类:
- A类:
- 0 000 0000 - 0 111 1111: 1-127
- 网络数:126, 127
- 每个网络中的主机数:2^24-2
- 默认子网掩码:255.0.0.0
- 私网地址:10.0.0.0
- B类:
- 10 00 0000 - 10 11 1111:128-191
- 网络数:2^14
- 每个网络中的主机数:2^16-2
- 默认子网掩码:255.255.0.0
- 私网地址:172.16.0.0-172.31.0.0
- C类:
- 110 0 0000 - 110 1 1111: 192-223
- 网络数:2^21
- 每个网络中的主机数:2^8-2
- 默认子网掩码:255.255.255.0
- 私网地址:192.168.0.0-192.168.255.0
- D类: 组播
- 1110 0000 - 1110 1111: 224-239
- E类:保留未使用
- 240-255
②公共IP地址:
类 | 公共IP地址范围 |
---|---|
A | 1.0.0.0到9.255.255.255 11.0.0.0到126.255.255.255 |
B | 128.0.0.0到172.15.255.255 172.32.0.0到191.255.255.255 |
C | 192.0.0.0到192.167.255.255 192.169.0.0到223.255.255.255 |
③私有IP地址:
类 | 公共IP地址范围 |
---|---|
A | 10.0.0.0到10.255.255.255 |
B | 172.16.0.0到172.31.255.255 |
C | 192.168.0.0到192.168.255.255 |
④特殊地址:
(1)0.0.0.0
0.0.0.0不是一个真正意义上的IP地址。它表示所有不清楚的主机和目的网络
(2)255.255.255.255
限制广播地址。对本机来说,这个地址指本网段内(同一广播域)的所有主机
(3)127.0.0.1~127.255.255.254
本机回环地址,主要用于测试。在传输介质上永远不应该出现目的地址为“127.0.0.1”的 数据包
(4)224.0.0.0到239.255.255.255
组播地址,224.0.0.1特指所有主机,224.0.0.2特指所有路由器。224.0.0.5指OSPF 路由器,地址多用于一些特定的程序以及多媒体程序
(5)169.254.x.x
如果Windows主机使用了DHCP自动分配IP地址,而又无法从DHCP服务器获取地址,系统会为主机分配这样地址
⑤子网计算规则:
(1)利用子网数:
- 将子网数转为二进制来表示;
- 取的该二进制的位数,为N;
- 取得该IP地址的类子网掩码,将其主机地址部分的前N位置1,即得出子网掩码;
- 如欲将192.168.10.0划分为4个子网:
- 4=100(二进制)
- 该二进制位3位,N=3;
- 子网掩码的子网部分为主机地址的前3位,所以掩码为255.255.255.224,所以它每个子网的主机数位2^5-2个,即30个;
(2)利用主机数:
- 将主机数转为二进制表示;
- 如果主机数小于或等于254,则取得该主机的二进制位数;
- 将该类IP地址的主机地址位数全部置1,从后向前将N位置为0,即为子网掩码值;
- 如将C类地址192.168.10.0分为若干子网,每个子网25台主机:
- 25=11001
- 该二进制位5位数,N=5
- 将子网掩码全置1,得到255.255.255.255,然后从后向前将后5位置为0,即为255.255.255.224
(3)子网掩码的作用:
- 子网掩码可以通过与IP地址“与”计算,分离出IP地址中的网络地址和主机地址,用于判断该IP地址是在局域网上,还是在广域网上 ;
- 子网掩码一般用于将网络进一步划分为若干子网,以避免主机过多而拥堵或过少而IP浪费 ;
(4)为什么用子网掩码:
子网掩码可以分离出IP地址中的网络地址和主机地址 ,那为什么要分离呢?因为两台计算机要通讯,首先要判断是否处于同一个广播域内,即网络地址是否相同。如果网络地址相同,表明接受方在本网络上,那么可以把数据包直接发送到目标主机,否则就需要路由网关将数据包转发送到目的地。
⑥NAT网络地址转换
(1)概念: NAT英文全称是“Network Address Translation”,中文意思是**“网络地址转换”**,它是一个IETF(Internet Engineering Task Force, Internet工程任务组)标准,允许一个整体机构以一个公用IP(Internet Protocol)地址出现在Internet上。顾名思义,它是一种把内部私有网络地址(IP地址)翻译成合法网络IP地址的技术。因此我们可以认为,NAT在一定程度上,能够有效的解决公网地址不足的问题。
(2)分类: NAT有三种类型:静态NAT(Static NAT)、动态地址NAT(Pooled NAT)、网络地址端口转换NAPT(Port-Level NAT) 。
静态NAT:实现了私有地址和公有地址的一对一映射,一个公网IP只会分配给唯一且固定的内网主机;
动态NAT:它为每一个内部IP地址分配了一个临时的外部IP地址,主要用于拨号、频繁的远程连接等; 也就是说,只要指定哪些内部地址可以进行转换,以及用哪些合法地址作为外部地址时,就可以进行动态转换。;
网络地址端口转换NAPT(Network Address Port Translation):则是把内部地址映射到外部网络的一个IP地址的不同端口上。它可以将中小型的网络隐藏在一个合法的IP地址后面。NAPT与 动态地址NAT不同,它将内部连接映射到外部网络中的一个单独的IP地址上,同时在该地址上加上一个由NAT设备选定的端口号。 它又包含两种转换方式:SNAT和DNAT :
(3)NAT的应用: NAT主要可以实现以下几个功能:数据包伪装、平衡负载、端口转发和透明代理。
- 数据伪装: 可以将内网数据包中的地址信息更改成统一的对外地址信息,不让内网主机直接暴露在因特网上,保证内网主机的安全。同时,该功能也常用来实现共享上网。
- 端口转发: 当内网主机对外提供服务时,由于使用的是内部私有IP地址,外网无法直接访问。因此,需要在网关上进行端口转发,将特定服务的数据包转发给内网主机。
- 负载平衡: 目的地址转换NAT可以重定向一些服务器的连接到其他随机选定的服务器。
- 透明代理: NAT可以把连接到因特网的HTTP连接重定向到一个指定的HTTP代理服务器以缓存数据和过滤请求。一些因特网服务提供商就使用这种技术来减少带宽的使用而不用让他们的客户配置他们的浏览器支持代理连接。
- 失效终结: 目的地址转换NAT可以用来提供高可靠性的服务。如果一个系统有一台通过路由器访问的关键服务器,一旦路由器检测到该服务器当机,它可以使用目的地址转换NAT透明的把连接转移到一个备份服务器上。
HTTP请求方法:
方法 | 描述 |
---|---|
Get | 请求指定的页面信息,并返回实体主体。 |
Post | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 |
Put | 从客户端向服务器传送的数据取代指定的文档的内容。 |
Head | 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头 |
Delete | 请求服务器删除指定的页面。 |
Connect | HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。 |
Options | 允许客户端查看服务器的性能。 |
Trace | 回显服务器收到的请求,主要用于测试或诊断。 |
Patch | 实体中包含一个表,表中说明与该URI所表示的原内容的区别。 |
Move | 请求服务器将指定的页面移至另一个网络地址。 |
Copy | 请求服务器将指定的页面拷贝至另一个网络地址。 |
Link | 请求服务器建立链接关系。 |
Unlink | 断开链接关系。 |
Wrapped | 允许客户端发送经过封装的请求。 |
Extension-mothed | 在不改动协议的前提下,可增加另外的方法。 |
HTTP 请求头内容:
Header | 解释 | 示例 |
---|---|---|
Accept | 指定客户端能够接收的内容类型 | Accept: text/plain, text/html |
Accept-Charset | 浏览器可以接受的字符编码集。 | Accept-Charset: iso-8859-5 |
Accept-Encoding | 指定浏览器可以支持的web服务器返回内容压缩编码类型。 | Accept-Encoding: compress, gzip |
Accept-Language | 浏览器可接受的语言 | Accept-Language: en,zh |
Accept-Ranges | 可以请求网页实体的一个或者多个子范围字段 | Accept-Ranges: bytes |
Authorization | HTTP授权的授权证书 | Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== |
Cache-Control | 指定请求和响应遵循的缓存机制 | Cache-Control: no-cache |
Connection | 表示是否需要持久连接。(HTTP 1.1默认进行持久连接) | Connection: close |
Cookie | HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器。 | Cookie: $Version=1; Skin=new; |
Content-Length | 请求的内容长度 | Content-Length: 348 |
Content-Type | 请求的与实体对应的MIME信息 | Content-Type: application/x-www-form-urlencoded |
Date | 请求发送的日期和时间 | Date: Tue, 15 Nov 2010 08:12:31 GMT |
Expect | 请求的特定的服务器行为 | Expect: 100-continue |
From | 发出请求的用户的Email | From: user@email.com |
Host | 指定请求的服务器的域名和端口号 | Host: www.zcmhi.com |
If-Match | 只有请求内容与实体相匹配才有效 | If-Match: “737060cd8c284d8af7ad3082f209582d” |
If-Modified-Since | 如果请求的部分在指定时间之后被修改则请求成功,未被修改则返回304代码 | If-Modified-Since: Sat, 29 Oct 2010 19:43:31 GMT |
If-None-Match | 如果内容未改变返回304代码,参数为服务器先前发送的Etag,与服务器回应的Etag比较判断是否改变 | If-None-Match: “737060cd8c284d8af7ad3082f209582d” |
If-Range | 如果实体未改变,服务器发送客户端丢失的部分,否则发送整个实体。参数也为Etag | If-Range: “737060cd8c284d8af7ad3082f209582d” |
If-Unmodified-Since | 只在实体在指定时间之后未被修改才请求成功 | If-Unmodified-Since: Sat, 29 Oct 2010 19:43:31 GMT |
Max-Forwards | 限制信息通过代理和网关传送的时间 | Max-Forwards: 10 |
Pragma | 用来包含实现特定的指令 | Pragma: no-cache |
Proxy-Authorization | 连接到代理的授权证书 | Proxy-Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== |
Range | 只请求实体的一部分,指定范围 | Range: bytes=500-999 |
Referer | 先前网页的地址,当前请求网页紧随其后,即来路 | Referer: http://www.zcmhi.com/archives/71.html |
TE | 客户端愿意接受的传输编码,并通知服务器接受接受尾加头信息 | TE: trailers,deflate;q=0.5 |
Upgrade | 向服务器指定某种传输协议以便服务器进行转换(如果支持) | Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11 |
User-Agent | User-Agent的内容包含发出请求的用户信息 | User-Agent: Mozilla/5.0 (Linux; X11) |
Via | 通知中间网关或代理服务器地址,通信协议 | Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1) |
Warning | 关于消息实体的警告信息 | Warn: 199 Miscellaneous warning |
HTTP 响应头内容:
Header | 解释 | 示例 |
---|---|---|
Accept-Ranges | 表明服务器是否支持指定范围请求及哪种类型的分段请求 | Accept-Ranges: bytes |
Age | 从原始服务器到代理缓存形成的估算时间(以秒计,非负) | Age: 12 |
Allow | 对某网络资源的有效的请求行为,不允许则返回405 | Allow: GET, HEAD |
Cache-Control | 告诉所有的缓存机制是否可以缓存及哪种类型 | Cache-Control: no-cache |
Content-Encoding | web服务器支持的返回内容压缩编码类型。 | Content-Encoding: gzip |
Content-Language | 响应体的语言 | Content-Language: en,zh |
Content-Length | 响应体的长度 | Content-Length: 348 |
Content-Location | 请求资源可替代的备用的另一地址 | Content-Location: /index.htm |
Content-MD5 | 返回资源的MD5校验值 | Content-MD5: Q2hlY2sgSW50ZWdyaXR5IQ== |
Content-Range | 在整个返回体中本部分的字节位置 | Content-Range: bytes 21010-47021/47022 |
Content-Type | 返回内容的MIME类型 | Content-Type: text/html; charset=utf-8 |
Date | 原始服务器消息发出的时间 | Date: Tue, 15 Nov 2010 08:12:31 GMT |
ETag | 请求变量的实体标签的当前值 | ETag: “737060cd8c284d8af7ad3082f209582d” |
Expires | 响应过期的日期和时间 | Expires: Thu, 01 Dec 2010 16:00:00 GMT |
Last-Modified | 请求资源的最后修改时间 | Last-Modified: Tue, 15 Nov 2010 12:45:26 GMT |
Location | 用来重定向接收方到非请求URL的位置来完成请求或标识新的资源 | Location: http://www.zcmhi.com/archives/94.html |
Pragma | 包括实现特定的指令,它可应用到响应链上的任何接收方 | Pragma: no-cache |
Proxy-Authenticate | 它指出认证方案和可应用到代理的该URL上的参数 | Proxy-Authenticate: Basic |
refresh | 应用于重定向或一个新的资源被创造,在5秒之后重定向(由网景提出,被大部分浏览器支持) |
Refresh: 5; url=
http://www.zcmhi.com/archives/94.html
|
Retry-After | 如果实体暂时不可取,通知客户端在指定时间之后再次尝试 | Retry-After: 120 |
Server | web服务器软件名称 | Server: Apache/1.3.27 (Unix) (Red-Hat/Linux) |
Set-Cookie | 设置Http Cookie | Set-Cookie: UserID=JohnDoe; Max-Age=3600; Version=1 |
Trailer | 指出头域在分块传输编码的尾部存在 | Trailer: Max-Forwards |
Transfer-Encoding | 文件传输编码 | Transfer-Encoding:chunked |
Vary | 告诉下游代理是使用缓存响应还是从原始服务器请求 | Vary: * |
Via | 告知代理客户端响应是通过哪里发送的 | Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1) |
Warning | 警告实体可能存在的问题 | Warning: 199 Miscellaneous warning |
WWW-Authenticate | 表明客户端请求实体应该使用的授权方案 | WWW-Authenticate: Basic |
HTTP状态码分类:
分类 | 分类描述 |
---|---|
1** | 信息,服务器收到请求,需要请求者继续执行操作 |
2** | 成功,操作被成功接收并处理 |
3** | 重定向,需要进一步的操作以完成请求 |
4** | 客户端错误,请求包含语法错误或无法完成请求 |
5** | 服务器错误,服务器在处理请求的过程中发生了错误 |
HTTP状态码:
状态码 | 状态码英文名称 | 中文描述 |
---|---|---|
1开头的状态码 | ||
100 | Continue | 继续,客户端应继续其请求 |
101 | Switching Protocols | 切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议 |
2开头的状态码 | ||
200 | OK | 请求成功。一般用于GET与POST请求 |
201 | Created | 已创建。成功请求并创建了新的资源 |
202 | Accepted | 已接受。已经接受请求,但未处理完成 |
203 | Non-Authoritative Information | 非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本 |
204 | No Content | 无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档 |
205 | Reset Content | 重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域 |
206 | Partial Content | 部分内容。服务器成功处理了部分GET请求 |
3开头的状态码 | ||
300 | Multiple Choices | 多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择 |
301 | Moved Permanently | 永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替 |
302 | Found | 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI |
303 | See Other | 查看其它地址。与301类似。使用GET和POST请求查看 |
304 | Not Modified | 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源 |
305 | Use Proxy | 使用代理。所请求的资源必须通过代理访问 |
306 | Unused | 已经被废弃的HTTP状态码 |
307 | Temporary Redirect | 临时重定向。与302类似。使用GET请求重定向 |
4开头的状态码 | ||
400 | Bad Request | 客户端请求的语法错误,服务器无法理解 |
401 | Unauthorized | 请求要求用户的身份认证 |
402 | Payment Required | 保留,将来使用 |
403 | Forbidden | 服务器理解请求客户端的请求,但是拒绝执行此请求 |
404 | Not Found | 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面 |
405 | Method Not Allowed | 客户端请求中的方法被禁止 |
406 | Not Acceptable | 服务器无法根据客户端请求的内容特性完成请求 |
407 | Proxy Authentication Required | 请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权 |
408 | Request Time-out | 服务器等待客户端发送的请求时间过长,超时 |
409 | Conflict | 服务器完成客户端的PUT请求是可能返回此代码,服务器处理请求时发生了冲突 |
410 | Gone | 客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置 |
411 | Length Required | 服务器无法处理客户端发送的不带Content-Length的请求信息 |
412 | Precondition Failed | 客户端请求信息的先决条件错误 |
413 | Request Entity Too Large | 由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息 |
414 | Request-URI Too Large | 请求的URI过长(URI通常为网址),服务器无法处理 |
415 | Unsupported Media Type | 服务器无法处理请求附带的媒体格式 |
416 | Requested range not satisfiable | 客户端请求的范围无效 |
417 | Expectation Failed | 服务器无法满足Expect的请求头信息 |
5开头的状态码 | ||
500 | Internal Server Error | 服务器内部错误,无法完成请求 |
501 | Not Implemented | 服务器不支持请求的功能,无法完成请求 |
502 | Bad Gateway | 充当网关或代理的服务器,从远端服务器接收到了一个无效的请求 |
503 | Service Unavailable | 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中 |
504 | Gateway Time-out | 充当网关或代理的服务器,未及时从远端服务器获取请求 |
505 | HTTP Version not supported | 服务器不支持请求的HTTP协议的版本,无法完成处理 |