网络相关
4次挥手

4次回收目的: 为了确保数据能够完成传输。
客户端突然挂掉了怎么办?
务器端设置保活计时器,每当服务器收到客户端的消息,就将计时器复位。超时时间通常设置为2小时。
若服务器超过2小时没收到客户的信息,他就发送探测报文段。若发送了10个探测报文段,每一个相隔75秒,还没有响应就认为客户端出了故障,因而终止该连接
第一个问题:服务端大量处于 TIME_WAIT 状态连接的原因。
在 Linux 上 2MSL 的时长是 60 秒,也就是说停留在 TIME_WAIT 的时间为固定的 60 秒。
为什么需要 TIME_WAIT 状态?
保证「被动关闭连接」的一方,能被正确的关闭
什么场景下服务端会主动断开连接呢?
第一个场景:HTTP 没有使用长连接
Connection: Keep-Alive
第二个场景:HTTP 长连接超时
第三个场景:HTTP 长连接的请求数量达到上限
第二个问题:服务端大量处于 CLOSE_WAIT 状态连接的原因。
查看代码是否有调用close 方法
2. http1.0 , http1.1 和 http2.0
1.新的二进制格式传输:二进制即0和1的组合,实现方便健壮,而1.x版本是基于文本,解析存在缺陷
2.多路复用:一个连接可以有多个请求,且可以混杂在一起根据requestid来区分不同的请求,提高了连接的利用率,降低了延迟
3.header头部压缩:通讯两方各自缓存了一份 header请求头表,避免了重复的header传输,且缩小了包的体积大小
4.服务端推送功能:可以服务端主动向客户端push消息
3. 什么是跨域问题?如何解决?
跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据
在返回头中设置“Access-Control-Allow-Origin”参数即可解决跨域问题,此参数就是用来表示允许跨域访问的原始域名的,当设置为“*”时,表示允许所有站点跨域访问
1 | @Bean |