计网面试题
- 面试官:当你在浏览器上输入一个url,回车之后发生了什么
我:
你在浏览器输入 URL 并回车:
↓- 解析 URL(协议、主机、路径等)
↓ - 浏览器查找缓存(DNS、本地缓存、HTTP 缓存等)
↓ - DNS 域名解析(将域名转换为 IP)
↓ - 建立 TCP 连接(三次握手)
↓ - 发起 HTTP 请求
↓ - 服务器处理请求,返回响应(HTML 等)
↓ - 浏览器解析渲染页面(HTML -> DOM、CSS、JS 执行)
↓ - 页面展示出来
- 解析 URL(协议、主机、路径等)
面试官:TCP和UDP的区别
我:
- TCP 像打电话📞:你要接通对方,确保每句话听清楚。
- UDP 像寄明信片📮:你写完直接发,收不收到不管,发的快。
核心区别详解
1️⃣ 连接机制
- TCP 是面向连接的,通信前要建立连接(三次握手)。
- UDP 是无连接的,直接发送,不需要握手。
2️⃣ 是否可靠
- TCP 保证可靠传输
- 包含顺序控制
- 有确认应答 ACK
- 丢包重传(超时重传、滑动窗口)
- 有拥塞控制
- UDP 是尽力而为,不可靠
- 不确认、不重传、不排序,收不到就丢了
- 程序自己实现可靠性(如 QUIC 或 RTP)
3️⃣ 传输效率
- UDP 更轻便、快
- 无连接开销、无状态
- 适合实时性强的通信(如直播、语音、游戏)
- TCP 更可靠
- 适合要求数据不能出错的场景
面试官:TCP的三次握手,必须三次吗,两次行不行
我:
步骤 谁发出 内容 说明 第一次 客户端 SYN=1客户端请求建立连接 第二次 服务端 SYN=1, ACK=1服务端收到请求并同意连接 第三次 客户端 ACK=1客户端确认服务端响应,连接建立完成 🌟 场景类比:你和朋友打电话
你 = 客户端(Client)
朋友 = 服务端(Server)✅ 如果用三次握手:
你打电话过去,说:“喂,我想和你聊聊!”(SYN)
→ 表示你能说。朋友接到电话,回应说:“好的,我也能听见你,也能说话!”(SYN + ACK)
→ 表示他能听、能说。你回应:“我听到你了,咱开始聊吧!”(ACK)
→ 表示你能听到他,双向都通了,通信正式开始。❌ 如果只用两次握手:
你说:“我想聊聊”(SYN)
朋友说:“好的,我能听到你,也能说话”(SYN + ACK)
🚨 但是你没回应!
这时候你可能没听到,或者你已经不想聊了(网络问题、掉线、退出)。
但朋友误以为你要开始聊天,于是一直在等你说话……面试官:TCP的四次挥手
我:
TCP 是 全双工(双方都能同时收发数据),所以断开连接时,两边都需要分别关闭 自己的发送通道。
因此需要两次 FIN + 两次 ACK,总共四次。客户端(Client) 服务端(Server)
|—- FIN ——————->| (1)我数据发完了
|<— ACK ———————| (2)收到,但我还有数据
|<— FIN ———————| (3)我也发完了
|—- ACK ——————->| (4)收到,连接关闭面试官:TCP的四层模型是什么
- 我:
层级 名称 功能简介 对应协议举例 对应 OSI 七层 1 网络接口层(或链路层) 负责数据在物理网络中的传输,例如以太网、Wi-Fi、光纤等 Ethernet、Wi-Fi、ARP、PPP OSI 的第1层(物理层)和第2层(数据链路层) 2 网络层(或网际层) 实现网络之间的通信和寻址,提供数据包的路由功能 IP、ICMP、ARP、RARP OSI 的第3层(网络层) 3 传输层 提供端到端的通信服务(可靠或不可靠),负责数据的传输控制、重传、流控等 TCP、UDP OSI 的第4层(传输层) 4 应用层 提供应用程序之间的通信接口,如网页访问、邮件发送等 HTTP、FTP、SMTP、DNS、SSH、Telnet 等 OSI 的第5层~第7层(会话层、表示层、应用层)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Little Monste'Blog!
评论




