在电商平台如某多多的开发和架构中,计算机网络是保障系统高效通信和数据交换的关键技术。面试中,计算机网络相关的基础知识也是评估候选人技术水平的重要部分。本文将总结计算机网络中的一些核心概念,并回答面试中可能涉及的问题。
计算机网络面试问题解答
编辑
1. 三次握手(TCP连接建立)
编辑
-
第一次握手 :客户端发送一个 SYN (同步)标志位的报文段,请求建立连接。该报文段包含客户端的初始序列号。
-
第二次握手 :服务器接收到客户端的 SYN 后,发送一个 SYN-ACK(同步确认)报文段,确认收到客户端的请求,同时也发送自己的初始序列号。
-
第三次握手 :客户端接收到服务器的 SYN-ACK 后,再发送一个 ACK (确认)报文段,确认连接建立。此时,双方的连接就建立起来了,通信可以开始。
编辑
总结:三次握手确保双方的接收和发送都能正常工作,并且能够同步各自的序列号。
2. 四次分手(TCP连接断开)
编辑
-
第一次分手 :主动关闭连接的一方发送 FIN(结束)报文段,表示该方数据已经发送完毕,准备断开连接。
-
第二次分手 :接收方确认收到 FIN 后,发送 ACK 确认报文段,表示已准备关闭自己的连接。
-
第三次分手 :接收方如果没有数据需要发送,则发送 FIN 报文段,表示准备断开连接。
-
第四次分手 :主动关闭连接的一方确认收到 FIN 后,发送 ACK 确认报文段,连接完全关闭。
编辑
总结:四次分手的过程确保了双方都能够确认断开连接,避免数据丢失。
3. TCP 拥塞控制算法
TCP 拥塞控制通过控制发送窗口的大小来避免网络过载,常见的算法包括:
- 慢启动:从一个小的窗口大小开始,每收到一个确认包就将窗口大小加倍,直到网络出现拥塞。
- 拥塞避免:当窗口大小达到阈值后,窗口大小的增加变得更加平缓,以避免过度拥塞。
- 快速重传和快速恢复:当检测到数据包丢失时,立即重传丢失的包并调整拥塞窗口。
总结:TCP 拥塞控制算法通过动态调整窗口大小,确保了在网络负载变化时能保持稳定的数据传输。
4. TCP 和 UDP 的区别
-
TCP :
-
面向连接、可靠的协议,保证数据传输的完整性。
-
采用三次握手建立连接,四次分手断开连接。
-
适用于要求高可靠性的场景,如文件传输、网页浏览。
-
-
UDP :
-
无连接、不可靠的协议,无法保证数据的顺序和完整性。
-
适用于实时性要求高、对丢包容忍度大的场景,如视频流、在线游戏。
-
总结:TCP 提供可靠的通信保证,适用于需要确保数据传输完整性的应用;而 UDP 更注重速度和效率,适用于对实时性要求较高的应用。
5. HTTPS的实现
-
加密通信 :HTTPS 使用 SSL/TLS 协议对 HTTP 请求和响应进行加密,确保数据在传输过程中不会被窃取或篡改。
-
身份验证:服务器通过数字证书来验证身份,防止中间人攻击。客户端会验证证书是否由受信任的机构颁发。
-
数据完整性:SSL/TLS 协议提供消息认证码(MAC)机制,确保数据在传输过程中不被篡改。
总结:HTTPS 通过加密、身份验证和数据完整性保证了通信的安全性,常用于保护敏感信息的传输,如银行交易和个人信息。
6. Cookie 和 Session
- Cookie :
- 存储在客户端,浏览器每次请求时会自动发送给服务器。
- 可以存储会话信息、用户偏好等数据,但存在安全风险(如 XSS 攻击)。
- Session :
- 存储在服务器端,客户端通过 Cookie 存储 Session ID 以识别会话。
- 更加安全,能够避免敏感信息泄露,因为数据存储在服务器上。
总结:Cookie 存储在客户端,适合存储简单的数据;Session 存储在服务器端,适合存储敏感或大量的数据。
7. 网络七层模型
- 物理层:负责物理连接和信号传输。
- 数据链路层:提供点对点的链路管理,负责帧的传输。
- 网络层:负责数据包的路由选择和寻址(如 IP)。
- 传输层:提供端到端的传输服务(如 TCP、UDP)。
- 会话层:管理会话的建立、维持和终止。
- 表示层:数据的格式化、加密和解密。
- 应用层:直接为用户提供服务(如 HTTP、FTP)。
总结:七层模型用于标准化网络通信过程,不同层次负责不同的网络功能,帮助协议的实现和兼容。
8. IP 寻址流程
IP 寻址流程包括以下步骤:
- 源主机:源主机根据目标 IP 地址判断是否在本地网络内。
- 路由选择:如果目标 IP 不在本地网络,源主机将数据包发送给默认网关(路由器),路由器根据路由表进行转发。
- 目标主机:目标主机接收到数据包,根据目标 IP 地址对数据进行处理。
总结:IP 地址决定了数据包如何在网络中进行转发,从源主机到目标主机的路径选择依赖于路由器的路由表。
9. HTTP 如何保持连接
HTTP 默认是无连接的,但可以通过以下方式保持连接:
- HTTP/1.1 :启用了 持久连接(Connection: keep-alive),即在一次 TCP 连接中可以发送多个 HTTP 请求和响应。
- HTTP/2:使用多路复用技术,使多个请求/响应可以共享一个连接,提高了性能。
总结:通过持久连接和多路复用,HTTP 实现了在同一 TCP 连接上多次请求/响应的传输。
10. 如果不用 HTTP,如何保持连接
可以使用其他协议保持连接:
- WebSocket:提供全双工通信,可以保持客户端与服务器之间的连接,适合实时应用。
- RPC(远程过程调用):客户端与服务器之间通过定义好的协议进行通信,保持连接用于调用远程服务。
总结:WebSocket 和 RPC 都可以用于保持客户端与服务器之间的长期连接,适用于实时通讯或服务调用。
11. Cookie 和 Token 的区别
-
Cookie :
-
存储在客户端,用于保存会话状态,通常由浏览器自动发送。
-
存储敏感信息时,可能面临 XSS 或 CSRF 攻击。
-
-
Token :
-
一般用于认证,存储在客户端(如 localStorage)或请求头中。
-
更加灵活,适用于跨域认证、移动端应用等场景。
-
总结:Token 更适用于现代 Web 应用的认证和授权,而 Cookie 更多用于浏览器端的会话管理。
12. RPC、HTTP 和消息队列三者区别
- RPC(远程过程调用):用于不同计算机之间的通信,通过直接调用远程函数来实现。
- HTTP:主要用于 Web 请求和响应,适用于请求-响应模型。
- 消息队列:用于异步通信,将消息发送到队列,由消费者异步处理,适合解耦和流量削峰。
总结:RPC 适合同步调用,HTTP 适合请求-响应模式,消息队列适用于解耦和异步处理。
13. 访问一个网站的过程
- DNS 解析:浏览器通过 DNS 查找目标网站的 IP 地址。
- 建立连接:浏览器与服务器建立 TCP 连接(通过三次握手)。
- 发送请求:浏览器发送 HTTP 请求。
- 服务器响应:服务器处理请求并返回 HTTP 响应。
- 浏览器渲染:浏览器根据响应的数据渲染页面。
- 关闭连接:通过