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:webSocket
Connection: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
、长轮询
两种通信方式
封装成了统一的通信接口进行降级兼容;
单工、半双工和全双工通信
单工通信是
指消息只能单方向传输的工作方式,数据信息从一端到另一端是单方向的。例:广播。半双工通信
可以实现双向的通信,但是不能在两个方向同时进行,必须交替进行。这中模式下,接收端和发送端可以互相转换。例:对讲机。全双工通信
是指在通信的任意时刻,都允许数据同时在两个方向上传输,在这个模式下,通信系统的每一端都设置了发送器和接收器