net
状态码
状态码 | 状态码英文名称 | 描述 |
---|---|---|
100 | Continue | 继续。客户端应继续其请求 |
101 | Switching Protocols | 切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议 |
200 | OK | 请求成功。一般用于GET与POST请求 |
201 | Created | 已创建。成功请求并创建了新的资源 |
202 | Accepted | 已接受。已经接受请求,但未处理完成 |
203 | Non-Authoritative Information | 非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本 |
204 | No Content | 无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档 |
205 | Reset Content | 重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域 |
206 | Partial Content | 部分内容。服务器成功处理了部分GET请求 |
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请求重定向 |
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的请求头信息 |
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协议的版本,无法完成处理 |
强缓存与协商缓存
缓存的优点:
- 减少了不必要的数据传输,节省带宽
- 减少服务器的负担,提升网站性能
- 加快了客户端加载网页的速度
- 用户体验友好
缺点:
- 资源如果有更改但是客户端不及时更新会造成用户获取信息滞后,如果老版本有bug的话,情况会更加糟糕。
一、强缓存
服务端就在respone header里面对该文件做了缓存配置,respone header 的cache-control,常见的设置是max-age public private no-cache no-store等
max-age表示缓存的时间是31536000秒(1年),
public表示可以被浏览器和代理服务器缓存,代理服务器一般可用nginx来做。
private只让客户端可以缓存该资源;代理服务器不缓存
immutable表示该资源永远不变,,它这么设置的意思是为了让用户在刷新页面的时候不要去请求服务器!
no-cache跳过设置强缓存,但是不妨碍设置协商缓存;
no-store不缓存,这个会让客户端、服务器都不缓存,也就没有所谓的强缓存、协商缓存了
二、协商缓存
服务端就在response header里面的设置etag、last-modified
etag:每个文件有一个hash,改动文件了就变了,
last-modified:文件的修改时间,精确到秒
三次握手(tcp)
三次握手即:客户端和服务器总共发送3个包来建立tcp连接
tcp协议机制:累计确认、超时重发。
三次握手解决问题
- tcp累计确认机制,即客户端一次请求携带的seq必须得到服务端的确认(ack)才会完成。如果没有返回确认(ack)报文段,由于超时重发机制,客户端就会重发报文。即这种机制避免了创建多余的连接。
- 所以建立TCP链接,客户端和服务端都需要确认(ack)对方发来的报文。确认客户端的存活
三次握手过程
第一次握手: 客户端发送syn标志位和seq num,向服务器申请建立连接,等待服务端确认(ack),且得知服务端想要得到的下一个确认包的序列号(num)。
第二次握手: 服务端返回 syn和ack标志位,ack num以及seq num,确认第一次握手的报文段,返回ack num=seq num(第一次握手发送的)+1,同意建立连接
第三次握手: 客户端发送确认报文段,返回ack以及ack num=seq num(第二次握手发送的)+1,完成连接
HTTP
运行在TCP之上的请求-响应协议。【应用层协议】
HTTPS
在HTTP的基础上加入SSL,通过传输加密和身份认证保证了传输过程的安全性 。
SSL协议
位于TCP/IP协议与各种应用层协议(如http)之间,为数据通讯提供安全支持
服务器认证阶段:
客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接;
服务器根据客户的信息确定是否需要生成新的主密钥,如需要则服务器在响应客户的“Hello”信息时将包含生成主密钥所需的信息;
客户端根据收到的服务器响应信息,产生一个主密钥,并用服务器的公开密钥加密后传给服务器;
服务器回复该主密钥,并返回给客户一个用主密钥认证的信息,以此让客户认证服务器。
客户端认证阶段:
- 经认证的服务器发送一个提问给客户,客户端则返回(数字)签名后的提问和其公开密钥,从而向服务器提供认证