像我们做前端的,肯定是会遇到网络方面的问题,所以就要了解一些基础方面及综合性的问题
常见的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
状态