Appearance
计算机网络常见面试题
内容来源:本篇为学习整理,转载自网络技术博客(版权归原作者所有):
看在前面
- [计算机网络常见面试题]((原链已失效 2026-10,内容已在本篇/本库)%80-osi%E4%B8%8Etcpip%E5%90%84%E5%B1%82%E7%9A%84%E7%BB%93%E6%9E%84%E4%B8%8E%E5%8A%9F%E8%83%BD%E9%83%BD%E6%9C%89%E5%93%AA%E4%BA%9B%E5%8D%8F%E8%AE%AE)
一 OSI与TCP/IP各层的结构与功能,都有哪些协议?
学习计算机网络时,一般采用折中的办法:中和 OSI 和 TCP/IP 的优点,采用一种只有五层协议的体系结构。这种结构简洁,又能将概念阐述清楚。

下面结合互联网,自上而下简要介绍各层的作用。
1.1 应用层
应用层(application-layer)的任务是通过应用进程间的交互来完成特定网络应用。应用层协议定义的是应用进程(进程:主机中正在运行的程序)间的通信和交互的规则。对于不同的网络应用需要不同的应用层协议。在互联网中应用层协议很多,如域名系统DNS,支持万维网应用的 HTTP协议,支持电子邮件的 SMTP协议。我们把应用层交互的数据单元称为报文。
域名系统
域名系统(Domain Name System缩写 DNS,Domain Name被译为域名)是因特网的一项核心服务。它是一个分布式数据库,将域名和IP地址相互映射。人通过域名能更方便地访问互联网,不用记住能够被机器直接读取的IP数串。(百度百科)例如:一个公司的 Web 网站可看作是它在网上的门户,域名就相当于其门牌地址。通常域名都使用该公司的名称或简称。例如上面提到的微软公司的域名。类似的还有:IBM 公司的域名是 www.ibm.com、Oracle 公司的域名是 www.oracle.com、Cisco公司的域名是 www.cisco.com。
HTTP协议
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的 WWW(万维网) 文件都必须遵守这个标准。设计 HTTP 最初的目的是为了提供一种发布和接收 HTML 页面的方法。(百度百科)
1.2 运输层
运输层(transport layer)的主要任务就是负责向两台主机进程之间的通信提供通用的数据传输服务。应用进程利用该服务传送应用层报文。“通用的”是指并不针对某一个特定的网络应用,而是多种应用可以使用同一个运输层服务。由于一台主机可同时运行多个线程,因此运输层有复用和分用的功能。所谓复用就是指多个应用层进程可同时使用下面运输层的服务。分用和复用相反,是运输层把收到的信息分别交付上面应用层中的相应进程。
运输层主要使用以下两种协议:
传输控制协议 TCP(Transmission Control Protocol)--提供面向连接的,可靠的数据传输服务。
用户数据协议 UDP(User Datagram Protocol)--提供无连接的、尽最大努力的数据传输服务。它不保证数据传输的可靠性。
TCP 与 UDP 的对比见问题三。
1.3 网络层
在计算机网络中,通信的两个计算机之间可能经过很多个数据链路。它们也可能还要经过很多通信子网。网络层的任务就是选择合适的网间路由和交换结点, 确保数据及时传送。 在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组和包传送。在 TCP/IP 体系结构中,由于网络层使用IP 协议,因此分组也叫 IP 数据报 ,简称 数据报。
这里要注意:不要把运输层的“用户数据报 UDP ”和网络层的“ IP 数据报”弄混。另外,无论是哪一层的数据单元,都可笼统地用“分组”来表示。
这里强调指出,网络层中的“网络”二字已经不是我们通常谈到的具体网络。它指计算机网络体系结构模型中第三层的名称。
互联网是由大量的异构(heterogeneous)网络通过路由器(router)相互连接起来的。互联网使用的网络层协议是无连接的网际协议(Internet Protocol)和许多路由选择协议。因此互联网的网络层也叫做网际层或IP层。
1.4 数据链路层
数据链路层(data link layer)通常简称为链路层。两台主机之间的数据传输,总是在一段一段的链路上传送的,这就需要使用专门的链路层的协议。 在两个相邻节点之间传送数据时,数据链路层把网络层交下来的 IP 数据报组装成帧。帧在两个相邻节点间的链路上传送。每一帧包括数据和必要的控制信息(如同步信息,地址信息,差错控制等)。
在接收数据时,控制信息使接收端能够知道一个帧从哪个比特开始和到哪个比特结束。这样,数据链路层在收到一个帧后,就可从中提出数据部分,上交给网络层。 控制信息还使接收端能够检测到所收到的帧中有误差错。如果发现差错,数据链路层就丢弃这个出了差错的帧。这样避免差错帧继续在网络中传送,浪费网络资源。
如果需要改正数据在链路层传输时出现的差错,就要采用可靠性传输协议来纠正差错。这就是说,数据链路层不仅要检错,而且还要纠错。这种方法会使链路层的协议复杂些。
1.5 物理层
在物理层上所传送的数据单位是比特。 物理层(physical layer)的作用是实现相邻计算机节点之间比特流的透明传送。它尽可能屏蔽掉具体传输介质和物理设备的差异。 这样,上面的数据链路层不必考虑网络的具体传输介质是什么。“透明传送比特流”表示经实际电路传送后的比特流没有发生变化。对传送的比特流来说,这个电路好像是看不见的。
在互联网使用的各种协议中最重要和最著名的就是 TCP/IP 两个协议。现在人们经常提到的TCP/IP并不一定单指TCP和IP这两个具体的协议。它往往表示互联网所使用的整个TCP/IP协议族。
1.6 总结
上面我们对计算机网络的五层体系结构有了初步的了解。下面附送一张七层体系结构图做总结。图片来源:https://blog.csdn.net/yaopeng_2005/article/details/7064869

二 TCP 三次握手和四次挥手(面试常客)
为了准确无误地把数据送达目标处,TCP 协议采用三次握手策略:客户端 SYN → 服务端 SYN/ACK → 客户端 ACK。三次握手最主要的目的是双方确认自己与对方的发送、接收都正常,缺一不可。断开连接需要四次挥手(FIN → ACK → FIN → ACK)。因为 TCP 是全双工,两个方向需要分别关闭。
漫画图解、SYN/ACK 与四次挥手原理的完整内容,见同目录专题:TCP 三次握手和四次挥手
三 TCP,UDP 协议的区别
UDP 无连接、不需要确认、不保证可靠交付,但开销小、效率高,一般用于即时通信(QQ 语音、视频、直播)。TCP 面向连接、可靠交付:三次握手建连,配合确认、窗口、重传与拥塞控制。但不提供广播或多播服务,首部与处理开销更大,一般用于文件传输、收发邮件、远程登录。
对比表、首部结构、可靠性机制与常见追问见同目录专题:TCP和UDP区别
四 TCP 协议如何保证可靠传输
TCP 依靠一组机制保证可靠传输:分块编号、校验和、确认与重传、流量控制、拥塞控制。高频要点速记如下。
- 停止等待 ARQ → 连续 ARQ:停止等待每发完一个分组就停下,等待对方确认。超时未收到确认就重传该分组。确认丢失或迟到同样触发重传。接收方丢弃重复分组并补发确认。连续 ARQ 改为在发送窗口内连续发送,接收方累积确认。丢失一个分组就要回退重传其后全部分组,即 Go-Back-N。
- 超时重传:每发送一个报文段就启动一个定时器。定时器到期仍未收到确认,就重发这个报文段。
- 快重传:接收方收到失序报文段就回送重复确认。发送方收到 3 个冗余 ACK 立即重传,不等待超时。
- 滑动窗口流量控制:接收方用确认报文中的窗口字段限制发送速率。窗口值可变,置 0 时发送方暂停发送。
- 拥塞控制:发送窗口取拥塞窗口与接收窗口中较小的一个。四种算法:慢启动、拥塞避免、快重传、快恢复。慢启动阶段拥塞窗口每个轮次翻倍。拥塞避免阶段每个 RTT 只加 1。快恢复把拥塞窗口减半后线性增长。
本节为速刷摘要;库内暂无 TCP 可靠传输专题篇(🕳 待补)。
五 在浏览器中输入url地址 ->> 显示主页的过程(面试常客)
百度好像最喜欢问这个问题。
打开一个网页,整个过程会使用哪些协议
图解(图片来源:《图解HTTP》):

总体来说分为以下几个过程:
DNS解析
TCP连接
发送HTTP请求
服务器处理请求并返回HTTP报文
浏览器解析渲染页面
连接结束
具体可以参考下面这篇文章:
六 状态码
- 2xx 成功:200 OK 请求正常处理完成;206 Partial Content 部分内容(配合 range 请求)。
- 3xx 重定向:301 Moved Permanently 永久重定向;302 Found 临时重定向;304 Not Modified 资源未修改,客户端可继续使用缓存。
- 4xx 客户端错误:400 Bad Request 请求报文有误;401 Unauthorized 未认证;403 Forbidden 服务器拒绝访问;404 Not Found 资源不存在。
- 5xx 服务器错误:500 Internal Server Error 服务器内部错误;502 Bad Gateway 网关错误;503 Service Unavailable 服务不可用;504 Gateway Timeout 网关超时。

七 各种协议与HTTP协议之间的关系
一般面试官会通过这样的问题来考察你对计算机网络知识体系的理解。
- 一句话概括:HTTP 是应用层协议,自身不负责传输细节。可靠传输交给传输层的 TCP,寻址路由交给网络层的 IP。链路层/物理层最终把比特送到对端。
- 完整链条:DNS 先把域名解析成 IP(应用层,通常走 UDP)。TCP 三次握手建立连接。HTTPS 场景下再由 TLS 在 HTTP 与 TCP 之间完成加密握手。最后 HTTP 报文经 TCP/IP 分层封装后发出。
- 面试答法:自上而下点出 HTTP →(TLS)→ TCP → IP → 链路层的调用关系,并说明每一层各自解决什么问题。
图片来源:《图解HTTP》

八 HTTP长连接,短连接
HTTP/1.0 默认短连接:每执行一次 HTTP 操作就建立一次连接,任务结束就中断。HTTP/1.1 起默认长连接(响应头带 Connection:keep-alive),TCP 连接在多次请求间复用。Keep-Alive 不会永久保持连接,保持时间可在服务器软件中设定,且需要客户端和服务端都支持。HTTP 协议的长短连接,实质上是 TCP 协议的长短连接。
长短连接流程模拟、保活机制与选型,见同目录专题:HTTP长连接、短连接究竟是什么 —— 《HTTP长连接、短连接究竟是什么?》
九 HTTP是不保存状态的协议,如何保存用户状态?
HTTP 是一种不保存状态,即无状态(stateless)协议。HTTP 协议自身不保存请求和响应之间的通信状态。保存用户状态依靠 Session 机制,Session 的主要作用就是通过服务端记录用户的状态。
典型的场景是购物车。你添加商品到购物车的时候,系统不知道是哪个用户操作的,因为 HTTP 协议是无状态的。服务端给特定的用户创建特定的 Session 之后,就可以标识并跟踪这个用户。一般情况下,服务器会在一定时间内保存这个 Session,过了时间限制,就会销毁这个Session。
在服务端保存 Session 的方法很多,最常用的就是内存和数据库(比如是使用内存数据库redis保存)。Session 跟踪的实现方式:大部分情况下,在 Cookie 中附加一个 Session ID 来跟踪。
Cookie 被禁用怎么办?
最常用的就是利用 URL 重写把 Session ID 直接附加在URL路径的后面。

十 Cookie的作用是什么?和Session有什么区别?
Cookie 和 Session都是用来跟踪浏览器用户身份的会话方式,但是两者的应用场景不太一样。
Cookie 一般用来保存用户信息,比如:①我们在 Cookie 中保存已经登录过的用户信息。下次访问网站的时候,页面自动帮你填写登录的基本信息。②一般的网站都会有保持登录,即下次你再访问网站的时候就不需要重新登录了。这是因为用户登录的时候,我们可以存放一个 Token 在 Cookie 中。下次登录的时候只需要根据 Token 值来查找用户即可(为了安全考虑,重新登录一般要将 Token 重写)。③登录一次网站后访问网站其他页面不需要重新登录。
Session 的主要作用就是通过服务端记录用户的状态。 典型的场景是购物车。你添加商品到购物车的时候,系统不知道是哪个用户操作的,因为 HTTP 协议是无状态的。服务端给特定的用户创建特定的 Session 之后,就可以标识并跟踪这个用户。
Cookie 数据保存在客户端(浏览器端),Session 数据保存在服务器端。
Cookie 存储在客户端中,而Session存储在服务器上,相对来说 Session 安全性更高。如果要在 Cookie 中存储一些敏感信息,不要直接写入 Cookie 中。建议将 Cookie 信息加密,使用的时候再到服务器端解密。
十一 HTTP 1.0和HTTP 1.1的主要区别是什么?
这部分回答引用这篇文章 https://mp.weixin.qq.com/s/GICbiyJpINrHZ41u_4zT-A? 的一些内容。
HTTP1.0 最早于 1996 年用在网页中,HTTP1.1 于 1999 年起广泛用于各大浏览器。核心区别四点:
- 长连接:1.0 默认短连接,1.1 起默认长连接,支持流水线/非流水线方式;
- 错误状态响应码:1.1 新增 24 个(如 409 Conflict、410 Gone);
- 缓存处理:1.0 主要用 If-Modified-Since、Expires;1.1 引入 Entity tag、If-None-Match 缓存控制头;
- 带宽优化:1.1 引入 range 头域,支持只请求资源的某部分(返回 206 Partial Content)。
完整对比(含 Host 头处理)及 SPDY、HTTP2.0 的演进见同目录专题:HTTP1.0、HTTP1.1 和 HTTP2.0 的区别
十二 URI和URL的区别是什么?
URI(Uniform Resource Identifier) 是统一资源标志符,可以唯一标识一个资源。
URL(Uniform Resource Location) 是统一资源定位符,可以提供该资源的路径。它是一种具体的 URI,即 URL 可以用来标识一个资源,而且还指明了如何 locate 这个资源。
URI的作用像身份证号一样,URL的作用更像家庭住址一样。URL是一种具体的URI,它不仅唯一标识资源,而且还提供了定位该资源的信息。
十三 HTTP 和 HTTPS 的区别?
端口 :HTTP的URL由“http://”起始且默认使用端口80,而HTTPS的URL由“https://”起始且默认使用端口443。
安全性和资源消耗: HTTP协议运行在TCP之上,所有传输的内容都是明文。客户端和服务器端都无法验证对方的身份。HTTPS是运行在SSL/TLS之上的HTTP协议,传输内容经过加密。对称加密的密钥用服务器证书做了非对称加密。HTTP 安全性没有 HTTPS高,但 HTTPS 比 HTTP 耗费更多服务器资源。
分层本质(HTTPS = HTTP + TLS)、加密套件、TLS 握手与性能优化见同目录专题:http和https区别和联系
建议
建议阅读《图解HTTP》这本书。这本书页数不多,内容充实。系统地掌握网络方面的知识,或者应付面试,它都有帮助。下面的一些文章只是参考。大二学习这门课程的时候,我们使用的教材是 《计算机网络第七版》(谢希仁编著)。不推荐大家看这本教材,书厚而且知识偏理论,不确定大家能不能心平气和地读完。