前端热门面试题目(四)——计算机网路篇
计算机网络常见面试题:
计算机网络面试(一)
计算机网络面试(二)
计算机网络速成:
计算机网络速成一
计算机网络速成二
计算机网络速成三
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 主要解决以下问题:
- 数据可靠性:
- 保证数据包按顺序到达。
- 丢失的数据包可以重传。
- 流量控制:
- 避免发送方传输速度过快导致接收方无法处理。
- 拥塞控制:
- 防止网络过载。
- 双向通信:
- 提供面向连接的双向可靠通信。
7. TCP 和 UDP 的区别
-
连接性:
- TCP 是面向连接的,需要建立连接(三次握手)。
- UDP 是无连接的,不需要握手,直接发送数据。
-
可靠性:
- TCP 提供可靠传输,数据丢失时可重传。
- UDP 不提供保证,可能出现数据丢失。
-
速度:
- TCP 较慢,适合需要可靠传输的场景(如文件传输、网页)。
- UDP 较快,适合对时延敏感的场景(如实时视频、游戏)。
-
数据传输:
- TCP 按序传输,保证数据完整性。
- UDP 不保证数据顺序。
8. TCP 的粘包和拆包问题
- 粘包:多条数据在传输过程中被接收方合并为一条。
- 拆包:一条数据在传输过程中被分成多条。
原因:
- 粘包:
- 发送方将多条数据连续发送,接收方一次性读取了多条。
- 发送数据长度小于发送缓冲区的大小。
- 拆包:
- 数据过大,超过了缓冲区大小,被拆分成多次发送。
解决方法:
3. 固定消息长度:预设每条消息的固定长度。
4. 分隔符:在每条消息后添加特殊的分隔符(如换行符)。
5. 消息头:消息开头加上长度字段,告知接收方本条消息的长度。
1. TCP 的三次握手
TCP 的三次握手是建立连接的过程,用来确保通信双方已经准备好,能可靠地进行数据传输。
- 第一步:客户端发送 SYN 报文,表示请求建立连接,同时初始序列号(Seq=x)。
- 第二步:服务器收到后,返回 SYN+ACK 报文,表示同意建立连接,同时发送自己的初始序列号(Seq=y),并确认客户端的序列号(Ack=x+1)。
- 第三步:客户端收到后,再次发送 ACK 报文,确认服务器的序列号(Ack=y+1),连接建立成功。
三次握手的目的:
- 确保双方的发送能力和接收能力正常。
- 同步序列号,初始化双方的数据传输状态。
2. TCP 的四次挥手
TCP 的四次挥手是断开连接的过程,确保双方都能安全地释放资源。
- 第一步:客户端发送 FIN 报文,表示不再发送数据,但还能接收数据。
- 第二步:服务器收到后,返回 ACK 报文,表示已接收到客户端的 FIN。
- 第三步:服务器发送 FIN 报文,表示不再发送数据。
- 第四步:客户端收到后,返回 ACK 报文,确认断开连接。
断开连接比建立连接多两次通信,因为 TCP 是全双工通信,双方需要分别确认对方不再发送数据。
3. TCP 为什么需要 TIME WAIT 状态
-
TIME WAIT 的作用:
- 确保最后的 ACK 报文被对方收到:如果服务器未收到 ACK,会重发 FIN。TIME WAIT 确保客户端能接收并处理这些重发的 FIN。
- 防止旧连接数据干扰新连接:等待足够时间,让网络中可能残留的旧数据包完全消失。
-
TIME WAIT 的持续时间:
通常是 2 倍的最大报文生存时间(2MSL)。
4. TCP 超时重传机制
-
解决的问题:
当数据包在传输中丢失或未及时收到确认时,通过超时重传机制重新发送,确保数据可靠传输。 -
机制流程:
- 发送数据包后启动计时器。
- 若在超时时间内未收到 ACK,重新发送数据。
- 每次超时重传会增大等待时间(指数退避算法)。
-
典型场景:
网络拥塞、传输路径中断等导致的确认丢失。
5. TCP 滑动窗口的作用
TCP 滑动窗口是一种流量控制机制,用于动态调整发送方能发送的最大数据量,以避免接收方或网络过载。
-
工作原理:
- 窗口大小由接收方设置,告知发送方当前可接收的数据量。
- 窗口随接收的确认数据滑动,允许发送方发送更多数据。
-
作用:
- 提高传输效率:允许发送方在等待 ACK 的同时继续发送数据。
- 避免拥塞:通过动态调整窗口大小控制发送速率。
6. TCP/IP 四层模型
TCP/IP 是网络通信协议的基础模型,共分为四层:
- 应用层:
- 提供应用程序间的通信接口。
- 协议:HTTP、FTP、SMTP、DNS。
- 传输层:
- 提供端到端的可靠或非可靠传输。
- 协议:TCP、UDP。
- 网络层:
- 负责路由和数据包的转发。
- 协议:IP、ICMP。
- 链路层:
- 负责数据帧的封装和物理传输。
- 包括以太网、Wi-Fi 等。
7. OSI 七层模型
OSI 是理论上的网络通信模型,共分为七层:
- 物理层:
- 传输比特流,定义硬件接口。
- 如网线、光纤。
- 数据链路层:
- 负责帧的传输和差错检测。
- 如以太网协议。
- 网络层:
- 负责寻址和路由选择。
- 如 IP 协议。
- 传输层:
- 提供端到端通信。
- 如 TCP、UDP。
- 会话层:
- 管理会话和数据同步。
- 表示层:
- 负责数据格式转换和加密。
- 应用层:
- 提供用户接口。
- 如 HTTP、FTP。
8. Cookie、Session、Token 的区别
特性 | Cookie | Session | Token |
---|---|---|---|
存储位置 | 浏览器(客户端) | 服务器 | 客户端,可能会临时存储在本地 |
状态保持 | 无状态(需要每次随请求发送) | 有状态(服务器存储会话信息) | 无状态(包含自身验证信息) |
生命周期 | 可持久(设定过期时间) | 短暂(默认关闭浏览器即失效) | 取决于设计,通常有过期时间 |
安全性 | 较低,容易被窃取和伪造 | 较高,数据存储在服务器端 | 较高,加密且不依赖服务器状态 |
使用场景 | 简单用户偏好、保持登录状态 | 用户认证、状态管理 | 分布式系统、API 调用 |
- Cookie:客户端存储数据,常用于保存用户偏好或会话信息。
- Session:服务器存储会话状态,客户端用 Cookie 或其他方式传递会话 ID。
- Token:自包含的加密数据,客户端携带 Token 即可完成身份验证,无需依赖服务器存储会话状态。
原文地址:https://blog.csdn.net/m0_55049655/article/details/144239253
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!