Geekiter/geekiter.github.io

240325Note: fe - network

Opened this issue · 1 comments

1.GET和POST的请求的区别

特性 GET POST
应用场景 一般不会对服务器资源产生影响 会产生影响
缓存 不会
报文格式 实体部分为请求数据
安全性 请求参数在url中,不太安全 相对安全
请求长度 受url长度限制 不受
请求类型 字符串 更多类型的数据

2.POST和PUT请求的区别

put一般是更新数据,post一般是创建数据

3.常见的HTTP请求头和响应头

  • HTTP Request Header
    • Accept:浏览器能够处理的内容类型
    • Accept-Encoding: 浏览器能够处理的压缩编码
    • Accept-Language:浏览器当前设置的语言
    • Connection:浏览器与服务器之间的连接类型
    • Cookie:当前页面设置的任何Cookie
    • Host:发送请求的页面所在域
    • Referer:发出请求的页面的URL
    • User-Agent:浏览器的用户代理字符串
  • HTTP Response Header
    • Date:表示消息发送的时间,时间的描述格式由rfc822定义
    • Server:服务器名称
    • Connection:浏览器与服务器之间的连接类型
    • Cache-Control:控制HTTP缓存
    • content-type:表示后面的温度属于什么MIME类型
      • application/x-www-form-urlencoded:浏览器的元素form表单,default
      • multipart/form-data
      • application/json:服务器消息主体是序列化猴的JSON字符串
      • text/xml:该方式主要用来提交XML格式的数据

4.HTTP状态码304是多好还是少好

304是客户端有缓存情况下服务器的一种响应

适中

太多:

  • 网页快照停止
  • 收录减少

5.常见的HTTP请求方法

  • GET获取数据
  • POST提交数据
  • PUT上传更新数据
  • DELETE删除数据
  • HEAD获取报文首部,不返回主体
  • OPTIONS询问支持,一般用来跨域请求
  • CONNECT:要求与代理服务器建立隧道,使用隧道用于TCP通信
  • TRACE,用于测试或者诊断

6. HTTP 1.0 和 HTTP 1.1 之间有哪些区别?

  • 连接,1.0默认非持久连接,1.1持久连接
  • 资源请求,1.0存在宽带浪费,比如客户端只需要对象的一部分,服务器却给了整个对象。1.1引入头域,允许只请求资源的某个部分
  • 缓存,1.0主要使用header里的If-Modified-Since、Expires来作为缓存的标准,1.1则引入了更多的缓存控制策略,例如Etag、If-Unmodified-Sice,If-Match,If-None-Match等更多可供选择的缓存头来控制缓存策略
  • http1.1新增host字段,用来指定服务器,这样可以将请求发往同一台服务器的不同网站
  • 1.1还多了很多请求方法,如PUT、HEAD、OPTIONS等

7. HTTP 1.1 和 HTTP 2.0 的区别

  • 二进制协议
  • 多路复用
  • 数据流
  • 头信息压缩
  • 服务器推送

8. HTTP和HTTPS协议的区别

  • http是明文传输,https是具有安全性的ssl加密传输协议,https需要ca证书
  • http是请求端口是80,https请求端口是443

9. 当在浏览器中输入 Google.com 并且按下回车之后发生了什么?

  • 解析URL
  • 缓存判断
  • DNS解析
  • 获取MAC地址
  • TCP三次握手
  • HTTPS四次握手
  • 返回数据
  • 页面渲染
  • TCP四次挥手

10. 对keep-alive的理解

keep-alive是客户端到服务器的连接持续有效

11. 页面有多张图片,HTTP是怎样的加载表现?

  • 1.0对一个域名的最大TCP连接数伟6,所以会请求多次。可以用多域名来解决
  • 2.0因为支持多路复用,所以可以在一个TCP连接中发送多个HTTP请求

12. HTTP2的头部压缩算法是怎样的?

HTTP2的头部压缩算法是HPACK算法,在客户端和服务器两端建立字典,用索引号表示重复的字符串,采用哈夫曼编码来压缩整数和字符串,可以达到50%-90%。

距离来说:

  • 在客户端和服务端使用“首部表”来跟踪和存储之前发送的键值对,对于相同的数据,不再通过每次请求和响应发送
  • 首部表在HTTP/2的连接续存期内始终存在,由客户端和服务器共同渐进地更新
  • 每个新的首部键值对要么被追加到当前表的末尾,要么替换表中之前的值

13. HTTP请求报文的是什么样的?

4部分

  • 请求行:请求方法_URL_协议版本【回车符】【换行符】
  • 请求头部:头部字段名:值【回车符】【换行符】
  • 空行:【回车符】【换行符】
  • 请求体:请求数据

14. HTTP响应报文的是什么样的?

4部分

  • 响应行:协议版本_状态码_状态码的原因短语
  • 响应头:响应首部
  • 空行
  • 响应体:响应的数据

15. HTTP协议的优点和缺点

优点:

  • 支持客户端/服务器模式
  • 简单快速
  • 无连接
  • 无状态
  • 灵活
    缺点:
  • 无状态
  • 明文传输
  • 不安全

16. HTTP协议的性能怎么样

取决于网络条件、服务器配置、传输的数据量。一般条件下,http协议可以提供较高的性能。但是在大量的并发请求或者大数据传输的场景,可能会对场景造成一定影响。可以采取一些优化措施,比如http2、http3协议,启用缓存、采用压缩技术

17. URL有哪些组成部分

  • 协议
  • 域名
  • 端口
  • 虚拟目录
  • 文件名
  • 锚部分
  • 参数部分

18. 与缓存相关的HTTP请求头有哪些

  • 强缓存
    • Expires
    • Ceche-Control
  • 协商缓存
    • Etag、If-None-Match
    • Last-Modified、If-Modified-Since

19. 什么是HTTPS协议?

超文本传输安全协议是一种通过计算机网络进行安全通信的传输协议。HTTPS经过HTTP进行通信,利用SSL/TLS来加密数据包。HTTPS的主要目的是提供对网站服务器的身份认证,保护交换数据的隐私与完整性。

20. TLS/SSL的工作原理

TLS/SSL安全传输层协议,是介于TCP和HTTP之间的一层安全协议,不影响原有的TCP协议和HTTP协议,所以使用HTTPS基本上不需要对HTTP页面进行太多的改造

主要依赖3中基本算法,散列函数hash、对称加密、非对称加密

  • 基于散列函数验证信息的完整性
  • 对称加密算法采用协商的密钥对数据加密
  • 非对称加密实现身份认证和密钥协商

21. 数字证书是什么?

使用hash算法对公钥和其他信息进行加密,生成一个信息摘要,然后让有公信力的认证中心CA用私钥对信息摘要加密,形成签名。最后将原始信息和签名合在一起,称为数字证书。

当接收方收到数字证书的时候,先根据原始信息使用同样的hash算法生成一个摘要,然后使用公证处的公钥来对数字证书中的摘要进行解密,最后将解密的摘要和生成的摘要进行对比,就能发现得到的信息是否被更改。

22. HTTPS通信(握手)过程

HTTPS的通信过程:

  • 客户端向服务器发起请求
    • 请求中包含使用的协议版本号,生成的随机数,以及客户端支持的加密方法
  • 服务器确认算法使用的加密方法,给出服务器的证书、以及服务器生成的随机数
  • 客户端确认证书有效后,生成一个新的随机数,使用数字证书中的公钥,加密这个随机数,发给服务器。并且还会还会提供前面所有内容的hash值,给服务器检验

23. HTTPS的特点

  • 优点
    • 通信更安全
    • 增加了中间人攻击的成本
  • 缺点
    • 耗费了更多的服务器资源
    • SSL证书收费
    • 握手需要时间,增加了页面的加载时间

24、HTTPS是如何保证安全的?数字签名

用对称加密的密钥使用非对称加密的密钥加密,发送出去,接收方使用私钥进行解密,然后双方可以使用对称加密来进行沟通。

25. HTTP状态码

  • 2xx 表示成功
  • 3xx重定向
  • 4xx客户端错误
  • 5xx服务器错误

26. DNS 协议是什么

DNS是域名系统的缩写,提供的是一种主机名道IP地址的转换服务,将域名解析为IP地址,客户端向DNS服务器发送域名查询请求,DNS服务器告知客户端Web服务器的IP地址

27. DNS同时使用TCP和UDP协议?

DNS占用53端口,同时使用TCP和UDP协议

  • 在区域传输的时候使用TCP协议
  • 在域名解析的时候使用UDP协议

28. DNS完整的查询过程

  • 在浏览器缓存找对应IP地址
  • 请求本地DNS服务器,看缓存,没有继续下一步
  • 本地DNS向根域名服务器发送请求
  • 本地DNS向顶级域名服务器
  • 本地DNS向权威域名服务器
  • 本地DNS保存到缓存
  • 本地DNS返回结果给浏览器

29. 迭代查询与递归查询

DNS包含迭代查询和递归查询

  • 递归:查询请求发出后,域名服务器代为向下一级域名服务器发送请求,最后向用户返回查询的最终结果。
  • 迭代:查询请求后,域名服务器返回单次查询的结果。
  • 用户向本地DNS服务器发送请求是递归查询
  • 本地DNS服务器向其他域名服务器请求过程的过程是迭代查询的过程

30. OSI七层模型

  • 应用层
  • 表示层
  • 会话层
  • 传输层
  • 网络层
  • 数据链路层
  • 物理层

31. TCP/IP五层协议

  • 应用层
    • 应用层
    • 表示层
    • 会话层
  • 传输层
  • 网络层
  • 数据链路层
  • 物理层

32. TCP 和 UDP的概念及特点

  • TCP,面向连接的、可靠的、基于字节流的传输层通信协议
    • 面向连接
    • 仅支持单播传输
    • 面向字节流
    • 可靠传输
    • 提供拥塞控制
    • 提供全双工通信
  • UDP,用户数据传输协议
    • 面向无连接
    • 有单播、多播、广播的功能
    • 面向报文
    • 不可靠性
    • 头部开销小,传输数据报文很高效

33.TCP和UDP的区别

特性 UDP TCP
面向连接 无连接 面向连接
可靠 不可靠,不可使用流量控制、拥塞控制 可靠,数据顺序和正确性,使用数据控制、拥塞控制
连接对象个数 支持一对一、一对多、多对一和多对多 只支持一对一
传输方式 面向报文 面向字节流
首部开销 首部开销小,仅8字节 首部最小20字节,最大60字节
适用场景 适用于实时应用,例如视频会议、直播 适用于要求可靠传输的应用,例如文件传输

34.TCP和UDP的使用场景

  • tcp,文件传输、邮件、远程登录
  • udp,视频会议,语音通话

35.UDP协议为什么不可靠?

udp在传输数据前不需要建立连接,不需要确认

  • 不保证消息交互,不确认、不重传、无超时
  • 不保证交互顺序,不设置包序号,不重排,不会发生队首阻塞
  • 不跟踪连接状态,不必建立连接或重启状态
  • 不进行拥塞控制,不内置客户端或网络反馈机制

36. TCP的重传机制

TCP在发送了一个数据之后,就会开启一个定时器,如果在这个时间内没有收到发送数据的ACK报文,则对该报文进行重传,在达到一定次数还没有时放弃并发送一个复位信号。

37.TCP的拥塞控制机制

拥塞控制主要是以下四种机制

  • 慢启动
    • 开始不发送大量苏剧,测试网络的拥塞程度,由小到大增加拥塞窗口的大小
  • 拥塞避免
    • 只要发送方判断网络出现拥塞,就把开始门限设为出现拥塞时的发送窗口大小的一半,然后把拥塞窗口设置为1,执行慢开始算法
  • 快速重传
    • 快重传要求接收方在收到一个失序的报文段后就立即发出重复确认,发送方只要连续收到三个重复确认就立即重传对方尚未收到的报文段,不必继续等待设置的重传计时器时间到期
  • 快速恢复
    • 当发送方联系收到3个重复确认时,就执行乘法减小算法,把门限减半,但接下去并不执行慢开始算法。
    • 考虑到如果网络出现拥塞的话就不会收到好几个重复的确认,所以发送方现在认为网络可能没有出现拥塞,所以此时不执行慢开始算法,而是将cwnd设置为ssthresh的大小,然后执行拥塞避免算法。

38.TCP的流量控制机制

TCP采用大小可变的滑动窗口进行流量控制,窗口大小的单位是字节。这里说的窗口大小是每次传输的数据大小。让接收方来得及接收。

39.TCP的可靠传输机制

TCP是通过多个机制来确保可靠传输:

  • 序号与确认
  • 重传机制
  • 流量控制
  • 拥塞控制
    这些机制,使TCP在面对丢包、延迟、乱序等网络问题能够保证数据的可靠传输

40.TCP的三次握手和四次挥手

  • 三次握手
    • 第一次握手SYN,客户端告诉服务器,有数据需要发送,发送了一个带有SYN同步标志的数据包给服务器
    • 第二次握手SYN+ACK,服务器收到客户端的SYN后,知道客户端想要建立连接,于是发送了一个带有SYN和ACK确认标志的数据包给客户端,确认了客户端的请求后,并选择自己的初始序列号
    • 第三次握手ACK,客户端收到服务器的确认后,也发送了带有ACK的确认标志给服务器,表示也知道服务器想建立连接,现在我们可以开始通信了
  • 四次挥手
    • FIN,客户端或服务器知道其中一方要关闭连接,发送带有FIN结束的标志给对方,表示我不会再发送数据了,但是我还可以接受数据
    • ACK,接收方说,我知道你要关闭,但是我还有一些数据要发送给你,你接受了再关闭
    • FIN,发送完所有数据之后,接收方再发送一个FIN给对方,关闭了接受
    • ACK,关闭方收到接收方的FIN后,也关闭了接受
  • 为什要四次挥手
    • 挥手要确保最后的数据发送完成,所以多了一次发送数据的挥手

41. 对 WebSocket 的理解

websocket是html5提供给浏览器与服务器进行全双工通信的网络技术,属于应用层协议,基于tcp传输,复用http的握手通道,只需要一次握手,就可以创建持久连接,进行双向数据传输。

42.即时通讯的实现:短轮询、长轮询、SSE 和 WebSocket 间的区别?

  • 短轮询
    • 通讯方式:客户端定时向服务器发送http请求,询问是否有新的消息或者数据
    • 特点:每次请求都需要建立和关闭连接,对服务器的压力较大,实时性低,但实现简单,兼容性好
  • 长轮询,
    • 通讯方式,客户端发送http请求,服务器保持打开,直到有新消息或数据才返回给客户端,客户端收到响应后立即再次发送请求
    • 特点,减少了请求次数,减低了服务器压力,实时性比短轮询高,但仍然存在一定的延迟和资源消耗
  • SSE,server-sent events
    • 通讯方式,基于http协议,服务器向客户端推送数据,客户端通过eventsource api接受服务器的推送消息
    • 特点,实现了服务器到客户端的单向通讯,适用于服务器主动推送消息给客户端的场景,但不支持客户端向服务器发送消息
  • websocket
    • 通讯方式,提供全双工通讯通道,客户端和服务器可以实现双向实时通讯,建立在TCP协议之上,不受http协议限制
    • 特点,实时性最高,支持双向通讯,能够在客户端和服务器之间实现低延迟的数据较好,适用于需要实时互动的应用场景,比如在线聊天
  • 总的来说,段轮询和长轮询适用于简单的实时通讯需求,sse适用于服务器主动推送消息给客户端的场景,websocket则是最适合实现双向实时通讯的技术。

43.说一下HTTP 3.0?

3.0是基于UDP的QUIC的可靠、安全和高效的传输协议,相对于2.0的改进主要包括:

  • 减少连接建立的延迟,无需三次握手
  • 更好的拥塞控制
  • 多路复用
  • 安全性增强

2024年03月25日 43