常问的计算机网络你知道吗

2023-10-26 17:30:22 浏览数 (2)

1.从输入url到浏览器渲染的过程

  1. 浏览器地址栏输入 URL 并回车
  2. 浏览器查找当前 URL 是否存在缓存,并比较缓存是否过期
  3. DNS 解析 URL 对应的 IP
  4. 根据 IP 建立 TCP 连接(三次握手)
  5. 发送 http 请求
  6. 服务器处理请求,浏览器接受 HTTP 响应
  7. 浏览器解析并渲染页面
  8. 关闭 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就向后端获取更新;
  • 长轮询:长轮询是短轮询的改进,请求到服务端后会被挂起,直到有新的消息才会返回响应;然后再重新发起请求;
  • 基于流:基于流的推送技术就是指 SSESSE是一个H5的属性,它只能由服务器向浏览器发送数据,所以协作式通过 http 发送消息,sse 接受消息;
  • WebsocketWebSocketHTML5 开始提供的一种在单个 TCP 连接上进行全双工通信的协议;钉钉表格就是用的原生WebSocket
  • Socket.io:其实 Socket.IO 只是为了解决 websocket 的兼容性的一个解决方案,因为websocket出现的较新,所以一些老的浏览器兼容性不好,而 Socket.IO就是将websocket长轮询两种通信方式封装成了统一的通信接口进行降级兼容;

单工、半双工和全双工通信

  • 单工通信是指消息只能单方向传输的工作方式,数据信息从一端到另一端是单方向的。例:广播。
  • 半双工通信可以实现双向的通信,但是不能在两个方向同时进行,必须交替进行。这中模式下,接收端和发送端可以互相转换。例:对讲机。
  • 全双工通信是指在通信的任意时刻,都允许数据同时在两个方向上传输,在这个模式下,通信系统的每一端都设置了发送器和接收器

0 人点赞