HTTP协议后续

像我们做前端的,肯定是会遇到网络方面的问题,所以就要了解一些基础方面及综合性的问题

常见的HTTP状态码
1xx:信息响应
2xx:请求成功
200 OK ⇒ 客户端请求成功,服务器提供了请求的网页

重定向
3xx:重定向,资源位置发生变化,需要重新发送请求
301 Moved Permanently ⇒ 请求永久重定向
302 Found ⇒ 请求临时重定
304 Not Modified ⇒ 客户端发送一个带有条件的get请求,而且此请求已被允许,但文档没发生改变

Client Response

4xx:客户端请求有误
400 Bad Request ⇒ 语义错误,当前请求无法被服务器理解,文件未修改,可直接使用缓存的文件,也可能是请求参数有误
401 Unauthorized ⇒ 请求未经授权,当前请求需要用户验证,需要包含一个用于被请求资源的WWW-Authenticate信息头用来询问用户信息
403 Forbidden ⇒ 服务器已经收到了请求,但是拒绝提供服务,这个请求不能被重复提交
404 Not Found ⇒ 请求的资源未在服务器上发现,例如:输入了错误的URL

Server Response

5xx:服务端发生了错误
500 Internal Server Error ⇒ 服务器发生了不可预期的错误,不知道如何处理,导致无法完成客户端的请求
503 Server Unavailable ⇒ 服务器未准备好处理请求,例如:服务器因维修或者重载而导致停机

浏览器的缓存

浏览器缓存会保存用户通过HTTP得到的资源,下一次要再请求时,就可避免向服务器发送重复的请求

浏览器的缓存分为了两种,一是强缓存,二是协商缓存
浏览器会事先判断是否命中了强缓存,之后再验证协商缓存

  • 强缓存 字段:Cache-Control、Expires
    直接从浏览器缓存当中拿资源,不会再向服务器发送请求

  • 协商缓存 字段:Last-Modified、If-Modified-Since、Etag

强缓存没有命中时,会访问服务器看当前的缓存是否过期,然后再决定是否要从浏览器中拿资源,如果命中的话,就告诉浏览器资源没有跟新,可以使用本地的缓存

TCP三次握手,四次挥手

TCP:可靠的传输控制协议, 全双工通信机制
三次握手时建立连接,四次挥手时断开链接

状态:
ESTABLISHED 链接正常的建立之后,进入到数据传输阶段
SYN SENT 已发送第一个SYN报文,等待接收确认
SYN RCVD 已接收第一次传输请求,等待确认
FIN_WAIT1 主动发送第一个FIN报文之后进入该状态
CLOSE_WAIT 接收到对方的关闭请求,并进行确认进入该状态
FIN_WAIT2 已接收到第一个FIN,等待对方发送关闭请求
LAST_ACK 等待最后一次确认关闭的报文
CLOSED 双发关闭请求

SYN:同步序列号
ACK:确认号

三次握手
第一次:客服端向服务端发送SYN = 1的请求报文,然后就处于SYN SENT状态,等服务器的确认

第二次:服务端接收到了客户端的SYN报文之后,服务端需要返回ACK,同时发送一条SYN报文,此时就处于SYN RCVD状态

第三次:客服端接收到服务端的ACK和SYN报文,要返回一个应答ACK的报文,当服务端接收到了ACK时,一条完整的全双工TCP链接建立完成,双方都进入到ESTABLISHED状态

四次挥手
第一次:客户端的应用程序结束了数据传输时,会向服务端发送一个带有FIN附加标记的报文段,此时处于FIN_WAIT1状态,客户端自此不能再向服务端发送数据

第二次:服务端接收到了FIN报文,同时会响应一个ACK报文,然后就进入到了CLOSE_WAIT状态。进入此状态之后,服务端还会将剩余的未发生的数据发送到客户端,客户端接收ACK后,处于FIN_WAIT2状态,同时服务端发送给客户端的其他数据继续接收

第三次:服务端处理完待发送数据后,会发送FIN,断开链接的请求,服务端处于LAST_ACK阶段

第四次:客户端已接收服务端的断开链接请求之后,过一段时间,再发送最后一次的ACK报文给服务端,处于CLOSED状态

你可能感兴趣的:(HTTP协议)