自学内容网 自学内容网

前端热门面试题目(四)——计算机网路篇

计算机网络常见面试题:
计算机网络面试(一)
计算机网络面试(二)
计算机网络速成:
计算机网络速成一
计算机网络速成二
计算机网络速成三

2. HTTP 1.0 和 2.0 的区别

  • 连接复用

    • HTTP/1.0 使用短连接(默认每个请求创建一个 TCP 连接)。
    • HTTP/2.0 支持多路复用,一个 TCP 连接可以并发处理多个请求和响应。
  • 头部压缩

    • HTTP/1.0 没有对请求头压缩。
    • HTTP/2.0 使用 HPACK 算法对头部信息进行压缩,减少网络带宽占用。
  • 二进制分帧

    • HTTP/1.0 使用纯文本协议传输数据。
    • HTTP/2.0 使用二进制格式传输,数据分为帧(Frame),使传输更高效。
  • 服务器推送

    • HTTP/1.0 不支持服务器推送。
    • HTTP/2.0 允许服务器主动推送资源到客户端,减少等待时间。

3. TCP 连接是什么

TCP(传输控制协议,Transmission Control Protocol)是一种面向连接的、可靠的传输协议。TCP 连接是指通过三次握手建立的通信链路,用于保证数据的有序传输和完整性。

  • 核心特点
    • 可靠传输:确保数据包按序到达且无丢失。
    • 双向通信:通信双方可以同时发送和接收数据。
    • 面向连接:需要在通信开始前建立连接(三次握手),并在结束时释放连接(四次挥手)。

TCP 主要用于需要高可靠性的应用场景,如文件传输、电子邮件、网页浏览等。


4. HTTP 2.0 和 3.0 的区别

  • 传输层协议

    • HTTP/2.0 基于 TCP。
    • HTTP/3.0 基于 QUIC(一种基于 UDP 的协议),提高了传输速度和效率。
  • 连接管理

    • HTTP/2.0 使用 TCP,多路复用解决了大部分队头阻塞问题,但仍受 TCP 队头阻塞的影响。
    • HTTP/3.0 通过 QUIC 协议完全避免了队头阻塞问题。
  • 传输速度

    • HTTP/2.0 的建立连接过程包括 TCP 握手和 TLS 握手,延迟较高。
    • HTTP/3.0 将加密(TLS)集成到 QUIC,减少了连接建立的延迟。
  • 数据恢复

    • HTTP/2.0 中丢失一个数据包会影响整个 TCP 流。
    • HTTP/3.0 的每个流独立处理丢包问题,不影响其他流。

5. HTTP 和 HTTPS 的区别

  • 协议层次

    • HTTP 是超文本传输协议,默认端口 80。
    • HTTPS 是在 HTTP 之上加入了 SSL/TLS 协议,用于加密通信,默认端口 443。
  • 安全性

    • HTTP 的数据是明文传输,容易被窃听、篡改。
    • HTTPS 对数据进行加密,提供身份验证和完整性,防止窃听和篡改。
  • 性能影响

    • HTTPS 需要进行加密解密,会增加一些计算开销。
    • 现代优化手段(如 TLS 1.3)使得性能影响微乎其微。

6. TCP 是用来解决什么问题

TCP 主要解决以下问题:

  1. 数据可靠性
    • 保证数据包按顺序到达。
    • 丢失的数据包可以重传。
  2. 流量控制
    • 避免发送方传输速度过快导致接收方无法处理。
  3. 拥塞控制
    • 防止网络过载。
  4. 双向通信
    • 提供面向连接的双向可靠通信。

7. TCP 和 UDP 的区别

  • 连接性

    • TCP 是面向连接的,需要建立连接(三次握手)。
    • UDP 是无连接的,不需要握手,直接发送数据。
  • 可靠性

    • TCP 提供可靠传输,数据丢失时可重传。
    • UDP 不提供保证,可能出现数据丢失。
  • 速度

    • TCP 较慢,适合需要可靠传输的场景(如文件传输、网页)。
    • UDP 较快,适合对时延敏感的场景(如实时视频、游戏)。
  • 数据传输

    • TCP 按序传输,保证数据完整性。
    • UDP 不保证数据顺序。

8. TCP 的粘包和拆包问题

  • 粘包:多条数据在传输过程中被接收方合并为一条。
  • 拆包:一条数据在传输过程中被分成多条。

原因

  1. 粘包
    • 发送方将多条数据连续发送,接收方一次性读取了多条。
    • 发送数据长度小于发送缓冲区的大小。
  2. 拆包
    • 数据过大,超过了缓冲区大小,被拆分成多次发送。

解决方法
3. 固定消息长度:预设每条消息的固定长度。
4. 分隔符:在每条消息后添加特殊的分隔符(如换行符)。
5. 消息头:消息开头加上长度字段,告知接收方本条消息的长度。

1. TCP 的三次握手

TCP 的三次握手是建立连接的过程,用来确保通信双方已经准备好,能可靠地进行数据传输。

  • 第一步:客户端发送 SYN 报文,表示请求建立连接,同时初始序列号(Seq=x)。
  • 第二步:服务器收到后,返回 SYN+ACK 报文,表示同意建立连接,同时发送自己的初始序列号(Seq=y),并确认客户端的序列号(Ack=x+1)。
  • 第三步:客户端收到后,再次发送 ACK 报文,确认服务器的序列号(Ack=y+1),连接建立成功。

三次握手的目的:

  1. 确保双方的发送能力和接收能力正常。
  2. 同步序列号,初始化双方的数据传输状态。

2. TCP 的四次挥手

TCP 的四次挥手是断开连接的过程,确保双方都能安全地释放资源。

  • 第一步:客户端发送 FIN 报文,表示不再发送数据,但还能接收数据。
  • 第二步:服务器收到后,返回 ACK 报文,表示已接收到客户端的 FIN。
  • 第三步:服务器发送 FIN 报文,表示不再发送数据。
  • 第四步:客户端收到后,返回 ACK 报文,确认断开连接。

断开连接比建立连接多两次通信,因为 TCP 是全双工通信,双方需要分别确认对方不再发送数据。


3. TCP 为什么需要 TIME WAIT 状态

  • TIME WAIT 的作用

    1. 确保最后的 ACK 报文被对方收到:如果服务器未收到 ACK,会重发 FIN。TIME WAIT 确保客户端能接收并处理这些重发的 FIN。
    2. 防止旧连接数据干扰新连接:等待足够时间,让网络中可能残留的旧数据包完全消失。
  • TIME WAIT 的持续时间
    通常是 2 倍的最大报文生存时间(2MSL)。


4. TCP 超时重传机制

  • 解决的问题
    当数据包在传输中丢失或未及时收到确认时,通过超时重传机制重新发送,确保数据可靠传输。

  • 机制流程

    1. 发送数据包后启动计时器。
    2. 若在超时时间内未收到 ACK,重新发送数据。
    3. 每次超时重传会增大等待时间(指数退避算法)。
  • 典型场景
    网络拥塞、传输路径中断等导致的确认丢失。


5. TCP 滑动窗口的作用

TCP 滑动窗口是一种流量控制机制,用于动态调整发送方能发送的最大数据量,以避免接收方或网络过载。

  • 工作原理

    1. 窗口大小由接收方设置,告知发送方当前可接收的数据量。
    2. 窗口随接收的确认数据滑动,允许发送方发送更多数据。
  • 作用

    1. 提高传输效率:允许发送方在等待 ACK 的同时继续发送数据。
    2. 避免拥塞:通过动态调整窗口大小控制发送速率。

6. TCP/IP 四层模型

TCP/IP 是网络通信协议的基础模型,共分为四层:

  1. 应用层
    • 提供应用程序间的通信接口。
    • 协议:HTTP、FTP、SMTP、DNS。
  2. 传输层
    • 提供端到端的可靠或非可靠传输。
    • 协议:TCP、UDP。
  3. 网络层
    • 负责路由和数据包的转发。
    • 协议:IP、ICMP。
  4. 链路层
    • 负责数据帧的封装和物理传输。
    • 包括以太网、Wi-Fi 等。

7. OSI 七层模型

OSI 是理论上的网络通信模型,共分为七层:

  1. 物理层
    • 传输比特流,定义硬件接口。
    • 如网线、光纤。
  2. 数据链路层
    • 负责帧的传输和差错检测。
    • 如以太网协议。
  3. 网络层
    • 负责寻址和路由选择。
    • 如 IP 协议。
  4. 传输层
    • 提供端到端通信。
    • 如 TCP、UDP。
  5. 会话层
    • 管理会话和数据同步。
  6. 表示层
    • 负责数据格式转换和加密。
  7. 应用层
    • 提供用户接口。
    • 如 HTTP、FTP。

8. Cookie、Session、Token 的区别

特性CookieSessionToken
存储位置浏览器(客户端)服务器客户端,可能会临时存储在本地
状态保持无状态(需要每次随请求发送)有状态(服务器存储会话信息)无状态(包含自身验证信息)
生命周期可持久(设定过期时间)短暂(默认关闭浏览器即失效)取决于设计,通常有过期时间
安全性较低,容易被窃取和伪造较高,数据存储在服务器端较高,加密且不依赖服务器状态
使用场景简单用户偏好、保持登录状态用户认证、状态管理分布式系统、API 调用
  • Cookie:客户端存储数据,常用于保存用户偏好或会话信息。
  • Session:服务器存储会话状态,客户端用 Cookie 或其他方式传递会话 ID。
  • Token:自包含的加密数据,客户端携带 Token 即可完成身份验证,无需依赖服务器存储会话状态。

原文地址:https://blog.csdn.net/m0_55049655/article/details/144239253

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!