TCP/IP 网络模型面试核心考点总结02(基础篇)

🚀 经典面试题:键入网址到网页显示,期间发生了什么?

这条题目是考察网络基础的"大杀器",核心流程可以概括为:应用层解析 -> DNS 寻址 -> 协议栈委托 -> TCP 可靠传输 -> IP 远程定位


1. 第一步:应用层解析(HTTP)

  • 解析 URL :浏览器提取出 **Web 服务器名(域名)**和 文件名(资源路径)
    • 若路径省略,默认请求 /index.html
  • 生成 HTTP 请求:浏览器根据解析结果生成包含方法(GET/POST)、路径、协议版本、Header 的 HTTP 报文。

2. 第二步:真实地址查询(DNS)------ "指路不带路"

在委托操作系统发包前,必须获取目标服务器的 IP 地址

📌 核心疑问解答:DNS 根域服务器到底怎么理解?

  1. 天生认知 :全世界所有 DNS 服务器出厂/配置时,就内置固化了根域 DNS 服务器的 IP 地址。
  2. 树状层级. (根) -> .com (顶级域) -> baidu.com (权威域)。
  3. 查询流程(面试必考)
    • 缓存查找:浏览器缓存 -> 操作系统缓存 -> Hosts 文件 -> 本地 DNS 服务器(LDNS)。
    • 递归与迭代 :若 LDNS 无缓存,它会依次询问:根 DNS (指引 TLD) -> 顶级域 DNS (指引权威) -> 权威 DNS(给出最终 IP)。

3. 第三步:协议栈的指南针(TCP 与 IP)

获取 IP 后,浏览器通过调用 Socket 库 委托操作系统协议栈工作。

🛠️ 传输层:可靠性(TCP)

  • TCP 头部关键字段

    • 端口号:源端口(随机)+ 目标端口(HTTP 80 / HTTPS 443)。
    • 序列号 (Seq):解决乱序问题。
    • 确认号 (Ack):解决丢包重传问题。
    • 窗口大小:流量控制。
  • TCP 三次握手(核心中的核心)

    1. C -> S (SYN):携带客户端 ISN_C。
    2. S -> C (SYN+ACK):确认 C 的 SYN,携带服务端 ISN_S。
    3. C -> S (ACK):确认 S 的 SYN,双方进入 ESTABLISHED。
    • 为什么需要三次? 确认双方双向收发能力;防止旧连接混淆。
  • 数据分割 :若数据超过 MSS (最大报文长度),TCP 会将其拆分成一个个 Segment

🛠️ 网络层:远程定位(IP)

  • IP 头部关键字段
    • 源 IP + 目的 IP
    • 协议号 :TCP 对应 06
  • 源地址选择(路由表)
    • 操作系统通过 route -n 查看路由表。
    • 将目的 IP 与各条目子网掩码 进行 与运算,匹配 Destination。
    • 若无匹配,则走 默认网关 (0.0.0.0)

4. 总结与数据包封装全貌

层级 增加的内容 赋予的能力
应用层 HTTP 报文 定义业务逻辑(我要什么资源)
传输层 TCP 头部 可靠传输:保证不丢包、不乱序(端口定位应用)
网络层 IP 头部 远程定位:通过路由表决定"下一跳"去哪
网络接口层 MAC 头部 本地链路传输:在以太网内点对点传输

💡 面试高频 Q&A (基于面经总结)

Q1:为什么有了 IP 还需要 MAC 地址?(对应资料中 IP/MAC 部分)

A:IP 地址负责全局路径选择(规划路线),MAC 地址负责局域网内的硬件点对点跳转(实际踩油门转弯)。在以太网中,数据包必须封装 MAC 头才能被交换机识别。

Q2:传输层下面是网络层,发送端和接收端在网络层有联系吗?

A没有联系。 网络层(IP)是"无连接"的,它只负责尽力而为地把包送到目的地。所谓的"连接"是**传输层(TCP)**通过维护状态机(三次握手)在逻辑上建立的。

Q3:什么是 MTU 和 MSS?

A

  • MTU:最大传输单元,以太网通常为 1500 字节(包含 IP 和 TCP 头)。
  • MSS:最大报文段长度,是 TCP 扣除头部后能装载的净数据大小。TCP 在分段时会参考 MSS,防止在 IP 层被二次分片导致效率降低。

Q4:DNS 查找是递归还是迭代?

A

  • 电脑到本地 DNS :通常是递归查询(你帮我查到底)。
  • 本地 DNS 到根/顶级/权威 DNS :通常是迭代查询(它告诉你下一步问谁,你亲自去问)。

复习小贴士:面试时建议边画图边讲解,特别是从 URL 解析到 TCP 三次握手,再到路由表匹配的逻辑,这能展现你对计算机网络体系结构的深度掌握。

相关推荐
不一样的故事1262 小时前
软件测试在未来10年
大数据·网络·人工智能·安全
头疼的程序员2 小时前
计算机网络:自顶向下方法(第七版)第六章 学习分享(三)
网络·学习·计算机网络
青槿吖2 小时前
第二篇:Spring Boot进阶:整合异常处理、测试、多环境与日志,开发稳得一批!
java·spring boot·后端·spring·面试·sqlserver·状态模式
KevinCyao2 小时前
Go短信营销接口示例代码:Golang高并发调用营销短信接口的实现方案与代码分享
android·前端·网络·golang·前端框架
时空无限3 小时前
ubuntu 22.04 如何使用命令查看配置防火墙规则
服务器·网络·ubuntu
MadPrinter3 小时前
OpenClaw更换stepfun/step-3.5-flash模型报错:Unknown model 解决(核心:漏加前缀)
网络·ai·自动化·openclaw
有毒的教程3 小时前
Ubuntu 网络代理设置教程
linux·网络·ubuntu
黄昏回响3 小时前
计算机系统基础知识(九):软件篇之网络协议详解
网络·网络协议·面试·改行学it
桌面运维家3 小时前
KVM虚拟机:Neutron网络故障诊断与修复实战
服务器·网络·php