1.从输入url到浏览器渲染的过程
- 浏览器地址栏输入 URL 并回车
- 浏览器查找当前 URL 是否存在缓存,并比较缓存是否过期
- DNS 解析 URL 对应的 IP
- 根据 IP 建立 TCP 连接(三次握手)
- 发送 http 请求
- 服务器处理请求,浏览器接受 HTTP 响应
- 浏览器解析并渲染页面
- 关闭 TCP 连接(四次握手)
2.TCP三次握手
S:客户端的发送能力没问题 C:服务端的接收能力没问题 以及发送能力没问题 S:客户端接收能力没问题
3.TCP连接终止,四次挥手
客户端发送一个fin,关闭客户端到服务端的传送(一次挥手) 服务端收到fin,知道客户端想要断开连接。返回fin表明知道断开连接,(二次挥手) 服务端返回数据(三次挥手) 客服端收到fin,关闭连接(四次挥手)
4.HTTP常见的状态码
- 101:服务器由http升级成websocket的时候,如果服务器统一变更,就会发送101
- 200:成功
- 301:永久重定向,新的url会在响应中给出。场景:域名跳转
- 302:临时重定向,浏览器默认get方式重新发送请求,会导致第一次post的请求参数丢失。场景:未登录的用户跳转登录
- 307:与302一样,临时重定向,区别是:307的状态码不允许将原来post请求重定向到get请求上。
- 308:与301一样,永久重定向。区别是:不允许将原来的post请求重定向到get请求上。
- 400:语法错误
- 401:没权限
- 403:拒绝请求
- 404:资源不存在
- 405:请求方法不允许
- 500:服务器错误
5.http协议
HTTP 是超文本传输协议,HTTP 是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范。
特点:无连接``无状态``灵活
无连接:请求连接结束之后会断开,(http1.1之后会保持永久连接)
无状态:每次请求都是独立的,不会记录任何信息
灵活:通过http协议中头部的Content-Type标记,可以传输任意数据类型的数据对象(文本、图片、视频等等),非常灵活
缺点 无状态、不安全、明文传输、队头阻塞
无状态:无连接信息,无法区分多个请求者身份是否为同一个客户端
不安全:明文传输可能被窃听,缺少身份认证也可能遭遇伪装,还有缺少报文完整性验证可能遭到篡改
明文传输:报文(header部分)使用的是明文,直接将信息暴露给了外界
队头阻塞:
HTTP 报文组成 http报文:由请求报文和响应报文组成
请求报文:由请求行、请求头、空行、请求体四部分组成
响应报文:由状态行、响应头、空行、响应体四部分组成
5.https
优点:
https可进行加密传输,身份验证比http安全
缺点:
证书费用及更新维护
加密解密需要耗费更多的服务器资源
握手阶段比较费时
6.WebSocket
参考文章(juejin.cn/post/716687… 全双工通信协议,即时通信,替代轮询
WebSocket 握手协议 与 Http握手 的区别
WebSocket 的握手协议相比 Http原本的握手协议 ,多了两个属性:
Upgrade:webSocketConnection:Upgrade
客户端发送的握手协议,带有两个额外的属性,服务端就会返回101状态码,客户端收到101状态码后就成功。
websocket心跳
可能会有某些未知情况导致 socket 断开,而客户端和服务端却不知道,需要客户端定时发送一个心跳 ping 让服务端知道自己在线
服务端也需要回答一个 心跳 pong 告诉客户端自己可用,否则视为断开。
WebSocket 状态
- 1:正在连接
- 2:连接成功
- 3:正在断开
- 4:断开成功
7.即时通信方案
参考文章(juejin.cn/post/716687…
短轮询:前端用定时器每隔一段时间ajax就向后端获取更新;长轮询:长轮询是短轮询的改进,请求到服务端后会被挂起,直到有新的消息才会返回响应;然后再重新发起请求;基于流:基于流的推送技术就是指SSE;SSE是一个H5的属性,它只能由服务器向浏览器发送数据,所以协作式通过http发送消息,sse接受消息;Websocket:WebSocket是HTML5开始提供的一种在单个TCP连接上进行全双工通信的协议;钉钉表格就是用的原生WebSocket;Socket.io:其实Socket.IO只是为了解决websocket的兼容性的一个解决方案,因为websocket出现的较新,所以一些老的浏览器兼容性不好,而Socket.IO就是将websocket、长轮询两种通信方式封装成了统一的通信接口进行降级兼容;
单工、半双工和全双工通信
单工通信是指消息只能单方向传输的工作方式,数据信息从一端到另一端是单方向的。例:广播。半双工通信可以实现双向的通信,但是不能在两个方向同时进行,必须交替进行。这中模式下,接收端和发送端可以互相转换。例:对讲机。全双工通信是指在通信的任意时刻,都允许数据同时在两个方向上传输,在这个模式下,通信系统的每一端都设置了发送器和接收器


