这份 计算机网络专题 面向后端学习和面试复习,按“分层模型 -> 应用层 -> 传输层 -> 网络层 -> 安全”的顺序整理本站网络相关文章。
适合谁看
- 正在系统学习计算机网络的后端开发者。
- 准备校招、社招、中大厂网络面试题的同学。
- 对 HTTP、HTTPS、TCP、DNS、Socket 等知识点只会零散背诵的读者。
- 想把网络知识和 RPC、网关、负载均衡、系统设计联系起来的工程师。
这份 计算机网络专题 面向后端学习和面试复习,按“分层模型 -> 应用层 -> 传输层 -> 网络层 -> 安全”的顺序整理本站网络相关文章。
应用层协议很多,HTTP、WebSocket、SMTP、POP3/IMAP、FTP、Telnet、SSH、RTP、DNS 这些名字也经常一起出现。
这些协议不需要每一个都学到实现细节,但如果只记协议名,很容易在“用途、底层传输协议、典型场景”这几个点上混在一起。
IP 地址负责网络层寻址,但数据帧在局域网里真正转发时,还需要知道下一跳设备的 MAC 地址。
ARP 要解决的就是这个转换问题:已知目标 IP 地址,如何找到对应的 MAC 地址。它看起来简单,却串起了网络层和链路层,也是理解局域网通信、网关转发和 ARP 欺骗的基础。
这篇文章主要回答几个问题:
能 Ping 通,TCP 就一定能连通吗?小 G 先给结论:不是。
这时候你可能就会有疑问了:明明 Ping 通了,TCP 怎么就挂了?更准确地说,Ping 通只能说明 ICMP Echo 这条路径在当前策略下能往返,不等于目标 TCP 端口一定可达。
说实话,我认真学完了一遍网络,还看了挺多专栏资料,在面试中第一次遇到这个问题时,确实有点懵。
答案其实很简单:Ping 使用 ICMP,TCP 连接使用 TCP。两者可能经过同一条网络路径,但中间设备会按协议类型、端口、连接状态和安全策略分别处理。
面试里经常会碰到这个问题:一台机器上,TCP 已经监听了 8080,UDP 还能不能再监听 8080?
先说结论:可以。TCP 和 UDP 的端口绑定命名空间按传输层协议区分,同一个数字端口在不同协议下不冲突。 一个进程监听 TCP/8080,另一个进程监听 UDP/8080,内核会根据协议栈分别分发。
端口是传输层用来区分应用进程的编号。IP 地址定位主机,端口号定位这台主机上的具体应用。
这篇笔记来自我大二学习计算机网络时的整理,大部分内容参考谢希仁老师的《计算机网络》第七版。
计算机网络教材内容很散:术语、分层、链路、路由、运输层、应用层都要串起来看。为了复习起来更顺,我对原来的笔记做了一次重构,并补充了一些示意图。
在浏览器地址栏输入域名之后,真正发起 HTTP 请求之前,通常要先经过 DNS 解析。
DNS 要解决的是域名和 IP 地址的映射问题。它看起来只是“把域名翻译成 IP”,但背后涉及本地缓存、递归查询、迭代查询、权威服务器、根服务器、UDP/TCP 切换等一整套机制。
这篇文章主要回答几个问题:
HTTP 状态码是服务端返回给客户端的处理结果摘要。看到一个状态码,基本就能判断请求是成功、重定向、客户端出错,还是服务端出错。
状态码看起来只是数字,但很多码很容易混淆:比如 301 和 302、401 和 403、500 和 502、201 和 204。
这篇文章主要回答几个问题:
HTTP 能传输网页内容,但默认是明文传输。请求和响应如果在网络中被监听、篡改或冒充,HTTP 本身没有足够的保护能力。
HTTPS 不是一个全新的应用层协议,而是在 HTTP 和 TCP 之间加入 TLS/SSL,用加密、身份认证和完整性校验来保护通信过程。
这篇文章主要回答几个问题:
HTTP/1.0 和 HTTP/1.1 名字只差一个小版本,但它们在连接复用、缓存、Host 头、状态码和带宽优化上都有明显差异。
这些差异不是单纯的协议细节,它们直接影响浏览器如何发请求、服务器如何复用连接、缓存如何生效,以及虚拟主机如何工作。
这篇文章主要回答几个问题: