ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

计算机网络核心面试题全解(TCP/UDP、HTTP/HTTPS 与网络层协议):Waking-Up 面试笔记实战指南

2026/9/24 17:15:09 拓冰建站 浏览量
计算机网络核心面试题全解(TCP/UDP、HTTP/HTTPS 与网络层协议):Waking-Up 面试笔记实战指南 知识库文档【免费下载链接】Waking-Up计算机基础计算机网络/操作系统/数据库/Git...面试问题全面总结包含详细的follow-up question以及答案全部采用【问题追问答案】的形式即拿即用直击互联网大厂面试可用于模拟面试、面试前复习、短期内快速备战面试...项目地址https://gitcode.com/gh_mirrors/wa/Waking-Up点击查看免费下载本指南以开源仓库 Waking-Up 中 Computer Network.md 为骨架完整梳理后端校招/社招面试中高频出现的计算机网络考点覆盖传输层TCP 三次握手/四次挥手/流量控制/拥塞控制、应用层HTTP/HTTPS、GET/POST、Session/Cookie、状态码、HTTP 各版本演进与网络层IP 地址分类、子网划分、ARP、NAT、RIP三大板块。全部内容采用仓库一贯的【常见面试问题 follow-up questions 可直接采用的答案】形式见 README.md读完即可用于模拟面试、面试前复习与短期快速备战每个问题都附带了比答案本身更值钱的追问链。一、传输层TCP 与 UDP1. 什么是三次握手three-way handshakeTCP 建立连接采用三次握手本质是双向确认彼此的收发能力、并同步双方的初始序列号。下图展示了客户端Client与服务器Server之间的完整报文交互与状态迁移第一次握手Client 将 SYN 置 1随机产生一个初始序列号 seq 发送给 Server自身进入SYN_SENT状态第二次握手Server 收到 SYN1 后知道客户端请求建立连接将自己的 SYN 置 1、ACK 置 1产生 acknowledge number sequence number 1并随机产生一个自己的初始序列号一并发送给客户端进入SYN_RCVD状态第三次握手客户端检查 acknowledge number 是否为自己的序列号1、ACK 是否为 1检查正确后将 ACK 置 1产生 acknowledge number 服务器发的序列号 1发送给服务器进入ESTABLISHED状态服务器收到后同样校验 ACK1 与 acknowledge number 序列号1也进入ESTABLISHED状态。至此连接建立完成。三个关键要素SYN同步标志位、初始序列号 ISN随机的 32 位序号、确认号 ack期望收到的下一个字节序号。第三次握手同时携带数据也没有问题此时称为捎带数据。追问 1TCP 建立连接可以两次握手吗为什么不可以原因有三层防止已失效的连接请求报文段到达服务器端。Client 发出的第一个连接请求报文段并没有丢失而是在某个网络结点长时间滞留直到连接释放后的某个时间才到达 Server。Server 收到这个早已失效的报文段后误认为是 Client 再次发出的新连接请求于是向 Client 发出确认报文段。若不采用三次握手只要 Server 发出确认新连接就建立了但此时 Client 并未发起连接不会理睬该确认也不会发送数据Server 却误以为连接已建立并一直等待数据白白浪费大量资源。三次握手让 Server 收不到 Client 对确认的确认就知道 Client 并未要求建立连接。两次握手无法保证 Client 正确接收第二次握手的报文Server 无法确认 Client 是否收到也就无法保证双方成功互换初始序列号。两次握手会给 SYN flood 攻击提供机会——攻击者无需等待任何回复即可大量伪造 SYN 报文放大服务端资源消耗。追问 2可以采用四次握手吗为什么可以但会降低传输效率。四次握手指第二次握手时 Server 只发送 ACK 和 acknowledge numberServer 的 SYN 和初始序列号放到第三次握手再发送原协议中的第三次握手变为第四次握手。出于优化目的四次握手中的第二、三次可以合并这就是标准的三次握手。追问 3第三次握手中如果客户端的 ACK 未送达服务器会怎样Server 端由于没有收到 ACK 确认会重发之前的 SYNACK默认重发五次之后自动关闭连接进入CLOSED状态Client 收到后重新传 ACK 给 Server。Client 端分两种情况在 Server 进行超时重发的过程中如果 Client 向服务器发送数据数据头部 ACK 为 1服务器收到数据后会读取 ACK number直接进入ESTABLISHED状态在 Server 已经进入CLOSED状态之后如果 Client 再向服务器发送数据服务器会以RST 包应答通知对方连接已重置请重新建立。追问 4如果已经建立了连接但客户端出现了故障怎么办服务器每收到一次客户端的请求后都会重新复位一个计时器时间通常设置为2 小时若 2 小时内没有收到客户端的任何数据服务器就发送一个探测报文段以后每隔75 秒发送一次。若一连发送10 个探测报文仍然没有反应服务器就认为客户端出了故障接着关闭连接。追问 5初始序列号ISN是什么TCP 连接的一方 A 随机选择一个 32 位的序列号Sequence Number作为发送数据的初始序列号例如 1000以该序列号为原点对要传送的数据进行编号1001、1002……三次握手时把这个初始序列号传送给另一方 B以便传输数据时 B 可以确认什么样的数据编号是合法的。同时A 还可以借此确认 B 收到的每一个字节如果 A 收到了 B 的确认编号acknowledge number是 2001就说明编号 1001~2000 的数据已被 B 成功接收。随机化 ISN 还能在一定程度上抵御序列号预测类攻击。2. 什么是四次挥手TCP 是全双工通信断开连接需要双方各自关闭自己的发送方向因此需要四次挥手。下图展示了完整的报文交互与状态迁移第一次挥手Client 将 FIN 置 1发送一个序列号 seq 给 Server进入FIN_WAIT_1状态表示我没有数据要发了第二次挥手Server 收到 FIN 后发送 ACK1、acknowledge number 收到的序列号1进入CLOSE_WAIT状态。此时客户端已经没有要发送的数据但仍可以接收服务器发来的数据第三次挥手Server 将 FIN 置 1发送一个序列号给 Client进入LAST_ACK状态表示我的数据也发完了可以断开了第四次挥手Client 收到服务器的 FIN 后进入TIME_WAIT状态接着将 ACK 置 1发送 acknowledge number 序列号1 给服务器服务器收到并确认后变为CLOSED状态不再向客户端发送数据。客户端再等待2*MSL报文段最长寿命Maximum Segment Lifetime时间后也进入CLOSED状态完成四次挥手。追问 1为什么不能把服务器的 ACK 和 FIN 合并起来变成三次挥手CLOSE_WAIT 状态的意义是什么因为服务器收到客户端断开连接的请求时可能还有一些数据没有发完。此时先回复 ACK表示我已经接收到断开连接的请求等到数据全部发完之后再发 FIN断开服务器到客户端的数据传送。CLOSE_WAIT正是服务器等待应用进程把剩余数据发完、准备关闭的过渡状态。追问 2如果第二次挥手时服务器的 ACK 没有送达客户端会怎样客户端没有收到 ACK 确认会重新发送 FIN 请求触发超时重传机制。追问 3客户端 TIME_WAIT 状态的意义是什么第四次挥手时客户端发送给服务器的 ACK有可能丢失TIME_WAIT状态就是用来重发可能丢失的 ACK 报文如果 Server 没有收到 ACK就会重发 FINClient 在 2*MSL 的时间内收到 FIN就会重新发送 ACK 并再次等待 2MSL防止 Server 因收不到 ACK 而不断重发 FIN。MSL指一个报文段在网络中最大的存活时间2MSL 就是一个发送和一个回复所需的最大时间如果直到 2MSL 结束 Client 都没有再次收到 FIN那么 Client 推断 ACK 已被成功接收随即结束 TCP 连接。补充TIME_WAIT的另一个作用是让本连接中迟到的旧报文段在网络中自然消亡避免其干扰后续使用相同四元组的新连接。3. TCP 如何实现流量控制TCP 使用滑动窗口协议实现流量控制防止发送方发送速率太快、接收方缓冲区溢出。TCP 报文段首部中的窗口字段2 字节专门用于通告接收窗口大小接收方维护一个接收窗口 receiver window单位是字节大小根据自身资源情况动态调整在返回 ACK 时把接收窗口大小放在 TCP 报文首部的窗口字段中告知发送方发送窗口的大小不能超过接收窗口的大小只有发送方发送并收到确认之后才能将发送窗口右移发送窗口的上限 min(接收窗口, 拥塞窗口)接收窗口表明接收方的接收能力拥塞窗口表明网络的传送能力。滑动窗口的工作过程可参考下图动画绿色部分为已确认、蓝色为已发送待确认、窗口随 ACK 不断右移追问什么是零窗口接收窗口为 0 时会怎样如果接收方没有能力接收数据就会将接收窗口设置为 0此时发送方必须暂停发送数据但会启动一个持续计时器persistence timer到期后发送一个大小为1 字节的探测数据包以查看接收窗口状态。如果接收方能够接收数据就会在返回的报文中更新接收窗口大小恢复数据传送。该机制可避免双方因窗口更新通知丢失而陷入死等。4. TCP 的拥塞控制是怎么实现的拥塞控制主要由四个算法组成慢启动Slow Start、拥塞避免Congestion Avoidance、快重传Fast Retransmit、快恢复Fast Recovery。下图展示了基于 Reno 版本拥塞窗口 cwnd 随传输轮次的典型变化曲线慢启动刚开始发送数据时先把拥塞窗口 cwnd 设置为一个最大报文段 MSS 的数值每收到一个新的确认报文就把拥塞窗口加 1 个 MSS。这样每经过一个传输轮次或者说每经过一个往返时间 RTT拥塞窗口的大小就会加倍指数增长。拥塞避免当拥塞窗口达到慢开始门限 ssthreshslow start threshold时开始执行拥塞避免算法拥塞窗口不再指数增加而是线性增加——每经过一个传输轮次只增加 1 个 MSS。无论在慢开始阶段还是在拥塞避免阶段只要发送方判断网络出现拥塞依据就是没有收到确认就要把 ssthresh 设置为出现拥塞时的发送方窗口值的一半但不能小于 2然后把 cwnd 重新设置为 1执行慢开始算法。这是不使用快重传时的策略。快重传要求接收方在收到一个失序的报文段后就立即发出重复确认目的是让发送方及早知道有报文段没有到达而不要等到自己发送数据时再捎带确认。快重传算法规定发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段而不必继续等待重传计时器到期。快恢复当发送方连续收到三个重复确认时把慢开始门限减半然后直接执行拥塞避免算法而不执行慢开始算法。理由是如果网络真的出现拥塞就不会收到好几个重复的确认所以发送方认为现在网络可能没有出现拥塞。也有的实现如 TCP Reno 的改进把 cwnd 再增大一点等于ssthresh 3*MSS既然收到三个重复确认就表明有三个分组已经离开了网络、停留在接收方的缓存中网络中减少了三个分组因此可以适当把拥塞窗口扩大。5. TCP 如何最大利用带宽TCP 的传输速率受到三个因素影响窗口即滑动窗口大小见上文 TCP 如何实现流量控制带宽单位时间内从发送端到接收端所能通过的最高数据率是一种硬件限制。TCP 两端的数据传输速率不可能超过两点间的带宽限制实际取所经过线路的带宽最小值如通过互联网连接时RTTRound Trip Time从发送端到接收端一去一回需要的时间。TCP 在数据传输过程中会对 RTT 进行采样测量发送的数据包与其 ACK 的时间差并根据测量值更新 RTT 值再根据 RTT 更新RTORetransmission TimeOut重传间隔。发送端对每个发出的数据包计时如果在 RTO 时间内没有收到对应的 ACK则认为数据包丢失并重传。一般 RTO 值都比采样得到的 RTT 值要大。追问什么是带宽时延乘积带宽时延乘积 带宽 × RTT实际上等于发送端到接收端单向通道数据容积的两倍。可以这样理解把单向通道看成一条单行道马路带宽就是车道的数量路上跑的汽车就是数据所有汽车速率相同、齐头并进单向通道的数据容积就是这条单行道上摆满车一共能摆多少辆带宽数乘以单向通道的数据容积就是路面上所能容纳的全部数据量。当路面上已经摆满时就不能再往里面放了。定量推导TCP 的最大速率设滑动窗口大小为 W发送端与接收端之间的带宽为 BRTT 为 T_rTCP 发送数据受滑动窗口限制当 TCP 将窗口内的数据全部发出后在收到第一个 ACK 之前窗口大小为 0不能再发送数据必须等待 ACK 使窗口右移。理想情况下ACK 在数据发出后 RTT 时间到达因此不考虑丢包和拥塞时TCP 在一个 RTT 内能发出的最大数据量为 W不考虑带宽限制时TCP 能达到的最大速度是V W / T_r再考虑带宽限制TCP 发送端在T_r / 2时间内能往通道上放的最大数据量为V·T_r / 2而带宽时延乘积给出的容积限制为B·T_r / 2。当B·T_r / 2 ≥ V·T_r / 2时单向通道容积不构成瓶颈速率限制主要来自窗口大小当V·T_r / 2 ≥ B·T_r / 2时速率限制来源于带宽。因此TCP 的最大速率为V min(W / T_r, B)。现实场景我们日常使用的宽带、ADSL 等环境带宽较小B·T_r也比较小加上网络情况复杂、拥塞常见TCP 速率的主要限制因素在于带宽与丢包率长肥管道高带宽 × 高时延链路多见于单位专线网络此时速率的主要限制因素在于窗口大小——这也是传统 TCP 在这些环境中不能充分利用带宽的原因传统 TCP 的窗口字段用 2 字节表示最大只有 65535 字节不考虑窗口扩大选项。此外随着万兆交换机等硬件普及局域网中也可能出现带宽时延乘积较大的情况。6. TCP 与 UDP 的区别TCP 是面向连接的UDP 是无连接的什么叫无连接UDP 发送数据之前不需要建立连接。TCP 是可靠的UDP 不可靠什么叫不可靠UDP 接收方收到报文后不需要给出任何确认。TCP 只支持点对点通信UDP 支持一对一、一对多、多对一、多对多TCP 是面向字节流的UDP 是面向报文的面向字节流指发送数据时以字节为单位一个数据包可以拆分成若干组发送而 UDP 一个报文只能一次发完。TCP 有拥塞控制机制UDP 没有。网络出现拥塞不会使源主机的发送速率降低这对某些实时应用媒体通信、游戏很重要TCP 首部开销20 字节比 UDP 首部开销8 字节大UDP 的主机不需要维持复杂的连接状态表。追问 1什么时候选 TCP什么时候选 UDP对实时性要求比较高的情况选 UDP比如游戏、媒体通信、实时视频流直播即使出现传输错误也可以容忍其它大部分情况下如 HTTP都用 TCP因为要求传输的内容可靠、不丢失。追问 2HTTP 可以使用 UDP 吗HTTP 本身不能使用 UDP——HTTP 需要基于可靠的传输协议而 UDP 不可靠。但要注意HTTP/3 正是基于 UDP 实现的它通过 QUIC 协议在 UDP 之上重新提供了可靠传输与多路复用能力详见下文HTTP 各版本一节。追问 3面向连接和无连接的区别这对应网络层的两种服务虚电路服务面向连接与数据报服务无连接虚电路服务首先建立连接所有数据包经过相同的路径服务质量有较好的保证数据报服务每个数据包都携带目的地址数据路由相互独立路径可能变化网络尽最大努力交付数据但不保证不丢失、不保证先后顺序、不保证在时限内交付网络发生拥塞时可能会丢弃一些分组。7. TCP 如何保证传输的可靠性TCP 通过以下六种机制协同保证可靠传输数据包校验首部与数据都带校验和接收端校验失败即丢弃并触发重传对失序数据包重新排序TCP 报文具有序列号接收端据此恢复原始顺序丢弃重复数据依靠序列号识别并去重应答机制接收方收到数据后发送确认通常延迟几分之一秒即延迟确认可捎带数据超时重发发送方发出数据后启动定时器超时未收到接收方确认则重新发送该数据RTO 由 RTT 采样动态更新流量控制通过滑动窗口确保接收端能够接收发送方的数据而不会缓冲区溢出。二、应用层HTTP 与 HTTPS8. HTTP 和 HTTPS 有什么区别端口不同HTTP 使用80 端口HTTPS 使用443 端口安全性不同HTTP超文本传输协议信息是明文传输HTTPS 运行在 SSLSecure Socket Layer之上添加了加密和认证机制更加安全开销不同HTTPS 的加密解密会带来更大的 CPU 和内存开销证书要求HTTPS 通信需要证书一般需要向证书颁发机构CA购买。追问 1HTTPS 的连接过程是怎样的HTTPS 握手本质是 TLS 握手综合运用了对称加密、非对称加密与摘要算法流程如下客户端向服务器发送请求同时发送客户端支持的一套加密规则包括对称加密、非对称加密、摘要算法服务器从中选出一组加密算法与 HASH 算法并将自己的身份信息以证书的形式发回给浏览器。证书中包含网站地址、加密公钥用于非对称加密以及证书的颁发机构等信息证书对应的私钥只能由服务器端持有用于解密客户端验证服务器的合法性证书是否过期、CA 是否可靠、发行者证书的公钥能否正确解开服务器证书的发行者的数字签名、服务器证书上的域名是否与实际域名匹配如果证书受信任或用户接受不受信任的证书浏览器生成一个随机密钥用于对称算法用服务器提供的公钥加密非对称算法同时对握手消息用 Hash 算法做摘要计算并用之前产生的对称密钥加密该摘要将加密后的随机密钥和摘要一起发送给服务器服务器用私钥解密得到对称加密的密钥用该密钥解密出 Hash 摘要值并验证握手消息是否一致若一致服务器用对称密钥加密握手消息发回浏览器浏览器解密并验证摘要若一致则握手结束。之后的数据传送都使用对称加密的密钥进行加密。总结非对称加密用于握手过程中加密传输对称密钥对称加密用于对真正传输的业务数据加密HASH 算法用于验证数据的完整性。追问 2输入 www.baidu.com怎么变成 https://www.baidu.com 的怎么确定用 HTTP 还是 HTTPS常见方案有两种302 跳转服务器把所有 HTTP 流量跳转到 HTTPS。缺点是存在漏洞——中间人可能在用户第一次访问站点时劫持请求HSTSHTTP Strict Transport Security机制服务器通过响应头告知浏览器本站点强制使用 HTTPS浏览器在后续访问该站点时强制走 HTTPS从根本上规避了首次访问被劫持的风险。追问 3HTTPS 连接时怎么确定收到的包是服务器发来的如何防中间人攻击通过四级证书校验验证域名、有效期等信息是否正确——证书上包含这些信息较易完成验证判断证书来源是否合法——每份签发证书都可以根据验证链查找到对应的根证书操作系统、浏览器会在本地存储权威机构的根证书利用本地根证书可对相应机构签发的证书完成来源验证判断证书是否被篡改——与 CA 服务器进行校验判断证书是否已吊销——通过 CRLCertificate Revocation List证书注销列表和 OCSPOnline Certificate Status Protocol在线证书状态协议实现其中 OCSP 可用于第 3 步中以减少与 CA 服务器的交互、提高验证效率。追问 4什么是对称加密、非对称加密区别是什么对称加密加密和解密采用相同的密钥如 DES、RC2、RC4非对称加密需要两个密钥——公钥和私钥。用公钥加密必须用私钥才能解密如 RSA区别对称加密速度更快通常用于大量数据的加密非对称加密安全性更高不需要传送私钥。追问 5数字签名、报文摘要的原理数字签名发送者 A 用私钥签名接收者 B 用公钥验证签名。因为除 A 外没有人持有私钥所以 B 相信签名来自 A同时 A 不可抵赖B 也不能伪造报文具备完整性、身份认证与不可否认性摘要算法MD5、SHA 等用于对报文生成定长摘要配合加密实现完整性校验。9. GET 与 POST 的区别幂等性GET 是幂等的——读取同一个资源总是得到相同的数据POST 不是幂等的语义GET 一般用于从服务器获取资源POST 有可能改变服务器上的资源请求形式GET 请求的数据附在 URL 之后、位于 HTTP 请求头中POST 请求的数据在请求体中安全性GET 请求可被缓存、收藏、保留到历史记录且请求数据明文出现在 URL 中POST 的参数不会被保存安全性相对较高字符集GET 只允许 ASCII 字符POST 对数据类型没有要求也允许二进制数据长度限制GET 的长度受操作系统或浏览器限制POST 数据大小无限制。10. Session 与 Cookie 的区别Session 是服务器端保持状态的方案Cookie 是客户端保持状态的方案Cookie 保存在客户端本地客户端请求服务器时会将 Cookie 一起提交Session 保存在服务端通过检索 session id 查看状态。保存 session id 的方式可以采用 Cookie如果浏览器禁用了 Cookie可以使用URL 重写机制把会话 ID 保存在 URL 中实现会话跟踪。11. 从输入网址到获得页面的过程越详细越好浏览器查询 DNS获取域名对应的 IP 地址具体过程包括浏览器搜索自身的 DNS 缓存、搜索操作系统的 DNS 缓存、读取本地的 Host 文件、向本地 DNS 服务器进行查询等。向本地 DNS 服务器查询时如果要查询的域名包含在本地配置的区域资源中则直接返回解析结果该解析具有权威性如果域名不由本地 DNS 服务器区域解析但服务器已缓存了映射关系则调用缓存的 IP 映射该解析不具有权威性若本地域名服务器未缓存该映射则根据其设置发起递归查询或迭代查询浏览器获得 IP 地址后向服务器请求建立连接发起TCP 三次握手TCP/IP 连接建立后浏览器向服务器发送HTTP 请求服务器接收到请求根据路径参数映射到特定的请求处理器进行处理并将处理结果及相应的视图返回给浏览器浏览器解析并渲染视图若遇到对 js、css、图片等静态资源的引用则重复上述步骤并向服务器请求这些资源浏览器根据请求到的资源、数据渲染页面最终向用户呈现一个完整的页面。12. HTTP 请求有哪些常见状态码2xx 状态码操作成功——200 OK3xx 状态码重定向——301 永久重定向302 暂时重定向4xx 状态码客户端错误——400 Bad Request请求语法错误401 Unauthorized未认证403 Forbidden无权限404 Not Found资源不存在5xx 状态码服务端错误——500 服务器内部错误503 服务不可用。13. HTTP 各版本演进0.9 → 3.0下图直观对比了 HTTP 0.9/1.0/1.1/2.0/3.0 的核心差异HTTP 0.9 版本HTTP 协议的第一个版本功能简单已弃用。仅支持纯文本数据传输虽支持 HTML但不支持图片插入仅支持 GET 请求方式且不支持请求头无状态、短连接——没有用户状态管理每次请求建立一个 TCP 连接响应之后关闭HTTP 1.0 版本支持 POST、GET、HEAD 三种方法支持长连接 keep-alive但默认仍使用短连接浏览器每一次请求建立一次 TCP 连接处理完毕即断开服务器不跟踪用户行为、不记录用户过往请求HTTP 1.1 版本新增 PUT、DELETE、CONNECT、TRACE、OPTIONS 方法是现今使用最多的版本。支持长连接一次 TCP 连接中可发送多个请求或响应且默认使用长连接支持带宽优化与断点续传可只请求对象的部分数据无需发送整个对象文件上传下载支持续传。长连接也带来了新问题——队头阻塞长连接中请求和响应都是串行化的前面的消息会造成后面的消息也阻塞解决方法是创建多个 TCP 连接以保证可用性浏览器默认的最大 TCP 连接数是 6 个HTTP 2.0 版本二进制分帧——所有帧都用二进制编码节省空间多路复用——所有连接都是持久化的相比 1.1 无需维护更多 TCP 连接处理并发请求时可将多个数据流中互不依赖的帧乱序发送还支持优先级接收方按帧头部信息将帧重新组合解决了 1.1 的队头阻塞问题头部压缩——1.1 每次传输都需要传输一份首部2.0 让双方各自缓存一份首部字段表达到更快传输的目标HTTP 3.0 版本基于 UDP 的QUIC 多路复用——一个 QUIC 连接内可并发发送多个 HTTP 请求 Stream若各 Stream 互不依赖就不会造成使用 TCP 带来的队头阻塞问题TCP 连接的性质决定了重传会影响后续数据发送因此改用 UDP 从源头上解决0-RTT 建链——RTT 表示往返时间3.0 可实现 0-RTT 建链。一般来说 HTTPS 建立完整连接需要 TCP 握手 TLS 握手总计至少 2~3 个 RTT普通 HTTP 也至少需要 1 个 RTT。基于 UDP 的 QUIC 协议可在第一次发包时直接发送业务数据但由于首次连接需要交换公钥数据首次连接并不使用 0-RTT 方法。三、网络层协议14. 计算机网络体系结构自下而上为Physical物理层、Data Link数据链路层、Network网络层、Transport传输层、Application应用层。各层常见协议与端口速查应用层FTP21 端口文件传输协议SSH22 端口远程登录TELNET23 端口远程登录SMTP25 端口发送邮件POP3110 端口接收邮件HTTP80 端口超文本传输协议DNS53 端口运行在 UDP 之上域名解析服务传输层TCP / UDP网络层IP、ARP、NAT、RIP 等。追问路由器、交换机位于哪一层路由器工作在网络层根据IP 地址进行寻址转发交换机工作在数据链路层根据MAC 地址进行寻址转发。15. IP 地址的分类IP 地址由网络号 net-id与主机号 host-id两部分组成路由器仅根据网络号转发分组分组到达目的网络的路由器之后再按照主机号将分组交付给主机同一网络上的所有主机的网络号相同。IPv4 地址按首位比特划分为 A、B、C、D、E 五类其中 A/B/C 为单播地址、D 为组播地址、E 保留实验用途配合子网掩码即可确定地址中的网络号部分详见下节。16. 什么叫划分子网子网划分就是从主机号 host-id 借用若干个比特作为子网号 subnet-id子网掩码网络号和子网号对应位为 1主机号对应位为 0转发流程数据报仍然先按照网络号找到目的网络发送到该网络的路由器路由器再按照网络号子网号找到目的子网——将子网掩码与目标地址逐比特做与操作若结果等于某个子网的网络地址就把数据报送到该子网。17. 什么是 ARP 协议Address Resolution ProtocolARP 协议完成了 IP 地址与物理地址MAC 地址的映射。每一个主机都设有一个ARP 高速缓存里面存放所在的局域网上各主机和路由器的 IP 地址到硬件地址的映射表。工作流程源主机要发送数据包到目的主机时先检查自己的 ARP 高速缓存中是否有目的主机的 MAC 地址如果有直接将数据包发到这个 MAC 地址如果没有就向所在的局域网发起一个ARP 请求的广播包发送请求的同时带上自己的 IP 地址到硬件地址的映射收到请求的主机检查自己的 IP 地址与目的主机的 IP 地址是否一致若一致则先保存源主机的映射到自己的 ARP 缓存然后给源主机发送一个ARP 响应数据包单播源主机收到响应后先添加目的主机的 IP 地址与 MAC 地址的映射再进行数据传送如果一直没有收到响应表示 ARP 查询失败。跨网段场景如果目的主机与源主机不在同一个局域网源主机通过 ARP 找到本局域网内某个路由器的硬件地址把分组发送给该路由器由路由器转发给下一个网络剩下的工作由下一个网络完成。18. 什么是 NATNetwork Address Translation网络地址转换NAT 用于解决内网主机与因特网主机通信的问题由NAT 路由器将主机的本地 IP 地址转换为全球 IP 地址。NAT 分为静态转换静态 NAT转换得到的全球 IP 地址固定不变动态 NAT 转换全球 IP 地址从地址池中动态分配。NAT 一方面缓解了 IPv4 地址枯竭的压力多台内网主机共享少量公网地址另一方面也天然隐藏了内网拓扑结构是家用路由器上网的基础机制。四、路由协议什么是 RIP距离矢量路由协议算法是什么RIPRouting Information Protocol路由信息协议是一种基于距离矢量算法的路由协议每个路由器维护一张表记录该路由器到其它网络的跳数路由器到与其直接连接的网络的跳数为 1每多经过一个路由器跳数加 1更新路由表时与相邻路由器交换路由信息路由器允许一个路径最多包含 15 个路由器如果跳数为 16则视为不可达交付数据报时优先选取距离最短的路径。补充定位RIP 运行在应用层基于 UDP 的 520 端口其跳数本质上是一种简化的度量方式。优缺点优点实现简单开销小缺点随着网络规模扩大开销也会增大最大距离为 15限制了网络的规模当网络出现故障时要经过较长的时间才能将此信息传递到所有路由器慢收敛。五、如何在面试中用好这份笔记结合 README.md 的定位说明本笔记并非逐点讲解知识而是服务于快速备战面试考点全部采用【常见面试问题 follow-up questions 可直接采用的答案】的形式模拟面试把每个### 问题当作面试官提问先在心里作答再点开details折叠块对照标准答案重点检查自己是否覆盖了追问里的细节考前梳理以目录为纲逐个问题过一遍对不熟的知识点如快恢复与快恢复的触发条件、TIME_WAIT 的 2MSL 时长、带宽时延乘积推导重点标记追问训练目录中的问题只是表面每个问题下的一连串追问才是精华——面试官往往在追问中考察你是否真正理解机制背后的为什么例如为什么不能两次握手为什么挥手需要四次为什么拥塞避免后要减半。仓库中的 Operating Systems.md、Database.md、Design Pattern.md、Git-ComdLine-REST.md、Python Handbook.md 分别覆盖操作系统、数据库、设计模式、工具链与 Python 考点可与本文档配套使用形成完整的计算机基础面试备战体系。本文档的原始出处为仓库根目录下的 Computer Network.md其中文末还收录了更多外部参考文献面试问题集锦、TCP/UDP 选型、TCP 速率与窗口/带宽/RTT 关系等需要溯源时可回到原文件查阅。赞分享知识库文档【免费下载链接】Waking-Up计算机基础计算机网络/操作系统/数据库/Git...面试问题全面总结包含详细的follow-up question以及答案全部采用【问题追问答案】的形式即拿即用直击互联网大厂面试可用于模拟面试、面试前复习、短期内快速备战面试...项目地址https://gitcode.com/gh_mirrors/wa/Waking-Up点击查看免费下载相关推荐计算机网络面试宝典Waking-Up TCP/IP深度剖析计算机网络面试宝典Waking Up TCP/IP深度剖析 本文深入解析TCP/IP协议栈的核心面试重难点涵盖TCP三次握手与四次挥手的精妙设计、HTTP/知识库文档前端面试必备HTTP/HTTPS/TCP网络协议深度剖析与实践指南前端面试必备HTTP/HTTPS/TCP网络协议深度剖析与实践指南 在前端开发中网络协议是构建高效、安全Web应用的基石。 fe interview 作为前前端知识库教程RPCS3配置完整指南如何快速调优PS3模拟器性能RPCS3配置完整指南如何快速调优PS3模拟器性能 RPCS3 是一款开源的 PlayStation 3 模拟器与调试器能把 PS3 的 Cell 处理器和虚拟化图形学调试器上一篇Diffusers 在 Intel Gaudi HPU 上运行 Stable Diffusion从 Optimum Habana 推理到原生 .to(hpu) 迁移下一篇Agno 实战second_brain 测试日志解读——自建 MCP 记忆体如何验证、踩坑与修复创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考