news 2026/5/31 1:08:59

计网面试躲不掉的三连问:OSI七层、HTTPS握手、REST还是RPC

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
计网面试躲不掉的三连问:OSI七层、HTTPS握手、REST还是RPC

大家好,我是HLAIA光子。

计网是面试里绕不开的一关。OSI 七层模型、TCP/IP 四层模型、HTTPS 握手过程、REST 和 RPC 的区别,这几个问题面试官翻来覆去地问。但大多数人的理解停留在"背答案"的层面,换个问法就答不上来。


OSI 七层与 TCP/IP 四层

为什么分层

网络通信的复杂度是爆炸级的。从你敲下回车到网页渲染出来,中间经历了 DNS 查询、TCP 三次握手、TLS 加密协商、HTTP 请求、IP 路由、以太网帧封装、光纤上的光信号传输……任何一环出问题都可能打不开网页。

如果把这些功能全部塞进一个"大而全"的协议里,任何一个小的改动都会牵一发而动全身。分层的核心思想很简单:每一层只管自己的事,层和层之间通过标准接口交互,各自独立演进。

说人话就是:你写 HTTP 应用的时候不需要关心光纤用什么波长传输数据。反过来,光纤设备也不需要理解你传的是 JSON 还是 XML。

OSI 七层模型

OSI 由 ISO 在 1984 年提出,是一个理论参考模型,七层可以看这个图

数据封装是 OSI 模型的核心概念。发送方从第七层往下走,每一层给数据加上自己的头部信息,就像套娃一样一层层包起来。接收方从第一层往上走,每层拆掉对应的头部,最终还原出原始数据。

这里有个容易被忽略的点:很多人背了七层的名字,但没意识到第四层也就是传输层,是真正的分水岭。四层以下关心的是"数据怎么到达目的地",四层以上关心的是"数据是什么意思"。这个区别在你排查问题的时候特别有用。

TCP/IP 四层模型

以前有种说法,说TCP/IP 模型是简化版 OSI,其实不是,它是完全不同的出身。OSI 是先有模型再找协议填充,TCP/IP 是先有协议实践再抽象出分层。所以 TCP/IP 模型只有四层:

它的应用层把 OSI 的应用层、表示层、会话层合并了;它的网络接入层把 OSI 的数据链路层和物理层合并了。

两者对照关系:

从哪层开始排障

实际工作中网络出问题了,排查的思路就是从底层往上层走:

网络接入层:网线插好了吗?接口是 UP 状态吗?
网际层:IP 地址配对了没?能 ping 通网关吗?
传输层:目标端口开放吗?防火墙有没有拦截?
应用层:服务在跑吗?DNS 解析对了吗?证书过期了没?

这个排查习惯能省掉大量无效排查的时间。


HTTP 与 HTTPS

HTTP 的硬伤

HTTP 协议有三个先天缺陷,而且是致命的:明文传输,任何人都能窃听报文内容;无完整性校验,中间人可以篡改数据;无身份验证,中间人可以冒充服务器。

在咖啡店的公共 WiFi 下用 HTTP 访问网站,你的密码、Token、浏览记录对同网络的所有人来说都是透明的,用 Wireshark 抓个包就能看到。

HTTPS 怎么修的

HTTPS 就是在 HTTP 和 TCP 之间插了一个 TLS 层,用三套机制分别修补了这三个漏洞:

混合加密解决窃听问题。非对称加密用来安全地交换一把临时会话密钥,之后的通信都用对称加密。混合的原因是:非对称加密很慢,对称加密很快。用非对称加密传密钥只跑一次,之后的数据传输全走对称加密。

消息认证码解决篡改问题。接收方收到数据后验证 MAC 值,如果数据在传输中被改过,校验立刻失败。

数字证书解决身份伪造问题。CA 机构用自己的私钥给网站信息签名,浏览器用内置的 CA 公钥验签。签名匹配就说明这个网站确实是它声称的那个人。

现在说的"SSL 证书"其实用的是 TLS 协议。SSL 早就被废弃了,但这个名字实在太好记了,业界改不了口。

TLS 握手到底发生了什么

这是面试高频题,很多人能说出"四次握手"但讲不清楚每次握手里具体传了什么。我们来看 TLS 1.2 的完整流程:

第一次握手:客户端发 ClientHello,带上 TLS 版本、支持的密码套件列表、以及一个随机数。

第二次握手:服务器回 ServerHello 确认版本和密码套件,再发自己的证书链,再发密钥协商参数,最后告诉客户端"我说完了"。

第三次握手:客户端验证证书没问题后,生成第三个随机数用服务器公钥加密发过去。然后双方各自用这三个随机数算出同一把主密钥,再拆分成四把会话密钥。

第四次握手:双方互相发 Finished 消息确认密钥没问题。

之后的所有通信都用对称加密。这就是 HTTPS 的完整握手过程。

三个随机数的设计

三个随机数的设计,不是为了凑数。客户端生成一个,服务器生成一个,客户端再生成一个用服务器公钥加密传过去,三者共同参与最终主密钥的计算。

这套机制的核心目的是防止重放攻击:即使攻击者录制了握手的全部报文,重新发送时因为随机数不同,生成的密钥完全不同,解密失败。

TLS 1.3 的改进

TLS 1.3 在 2018 年发布,做了挺大的简化。

握手从 2-RTT 砍到了 1-RTT;加密起点提前到了 ServerHello 之后;只支持 ECDHE 密钥交换,强制前向保密;密码套件从数百种砍到仅 5 种。

前向保密的意思是,即使服务器的私钥未来某天被泄露了,历史的通信记录也无法被解密。因为每次会话的密钥是临时协商的,和服务器私钥没有直接依赖关系。这个特性在数据合规越来越严格的今天是刚需。


HTTP 与 RPC

两种设计哲学

HTTP 的 RESTful 风格和 RPC 代表了两种完全不同的世界观,

REST 把世界看成资源的集合。URL 是资源的地址,HTTP Method 是对资源的操作。核心问题是"我对哪个资源做什么操作"。

RPC 把世界看成函数的集合。像调用本地函数一样调用远程函数,网络细节全部透明。核心问题是"我要调用哪个函数,传什么参数"。

举个例子。查一个用户的信息:

REST 的思路是:GET /users/123。名词是 user,动词是 GET。

RPC 的思路是:getUser(123)。这就是函数了。

两种思路没有绝对的对错,但它们的适用场景还是有所差别。

gRPC 为什么快

gRPC 是 Google 开源的 RPC 框架,底层用了 HTTP/2 加 Protocol Buffers 序列化。

JSON 是文本,要逐字符解析,字段名在每个请求里重复传输。Protobuf 是二进制,字段名用数字编号代替,解析速度快 5 到 8 倍,序列化后的体积也比 JSON 小 60% 到 80%。

gRPC 还原生支持四种通信模式:一问一答的 Unary、服务端流式推送、客户端流式上传、以及双向流。这些在 HTTP/1.1 下要么做不了,要么需要 WebSocket 额外支持。

更关键的是契约。gRPC 的.proto文件编译后生成客户端和服务端代码,接口定义即文档,编译期就能检查类型安全。REST 的 Swagger 文档是人写的,人和代码之间的同步是松散的。

什么时候用哪个

这不是非此即彼的选择,业界主流做法是混合架构(没错又是混合…这个世界是一个巨大的杂交水稻):

对外暴露的 API 用 HTTP/REST。浏览器原生支持,curl 和 Postman 就能调试,所有防火墙和代理都兼容。第三方开发者不需要装任何额外的工具链。

内部微服务之间用 gRPC。速度快、契约强、流式传输原生支持。内部服务不需要考虑浏览器兼容,网络环境可控。

中间加一层 API Gateway 做协议转换。外部请求通过 HTTP 进来,Gateway 转成 gRPC 发给内部服务,响应再转回 HTTP 返回客户端。

有一点容易混淆:OpenAPI 描述的 URL 模板模式,概念上其实更接近 RPC 而不是真正的 REST。客户端清楚地知道"我要调哪个操作、填什么参数"。真正的 REST 客户端是通过服务器返回的超媒体链接来导航的,不需要提前知道 URL 结构。不过实践中纯粹的 REST 很少见,OpenAPI 风格是最主流的。


写在最后

学计网最大的误区就是把它当文科来背,七层叫什么名字、TLS 分几步握手、REST 五个约束是什么,背得滚瓜烂熟一问"为什么这么设计"就哑了。

理解设计动机比记住名词重要得多。OSI 为什么要分层,HTTPS 为什么用三个随机数,RPC 为什么比 HTTP 快。把这些问题想通,面试的时候不管对方怎么换问法你都能接住。

实际工作中这些知识也用得上。排查线上问题的时候,你能快速判断是网络层的连通性出问题、传输层的端口被防火墙挡了、还是应用层的协议不兼容。

如果你觉得这篇文章有帮助,点赞关注,点点赞~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/31 1:07:00

位掩码的一些tip

我们把这三大位运算符(&、|、^)的核心秘密总结成一句话、一张表格和一组“大招”。掌握了它们,你就掌握了 C 语言底层操作的灵魂。1. 核心口诀(一句话记住)& (按位与):全 1 才为 1 —— “用来裁剪…

作者头像 李华
网站建设 2026/5/31 1:07:00

Iwara视频批量下载:5分钟掌握免费高效下载的终极指南

Iwara视频批量下载:5分钟掌握免费高效下载的终极指南 【免费下载链接】IwaraDownloadTool Iwara 下载工具 | Iwara Downloader 项目地址: https://gitcode.com/gh_mirrors/iw/IwaraDownloadTool 你是否曾在Iwara平台发现精彩视频却无法轻松保存?面…

作者头像 李华
网站建设 2026/5/31 1:01:22

Agent和传统大模型的区别以及目前的困境和解决

理解智能体(Agent)与以往大模型的区别,是把握当前人工智能发展方向的关键。以往的大模型更像一位博学但被动的专家——你提问,它回答。而智能体则是一位拥有同样知识,同时具备计划、行动、反思能力的自主员工。你给它一…

作者头像 李华
网站建设 2026/5/31 0:59:44

推荐系统实战避坑:你的nDCG计算代码可能忽略了这几个关键细节

推荐系统实战避坑:你的nDCG计算代码可能忽略了这几个关键细节 在推荐系统的评估体系中,nDCG(Normalized Discounted Cumulative Gain)因其对排序质量的敏感性,成为衡量推荐列表效果的核心指标之一。许多工程师和研究者…

作者头像 李华
网站建设 2026/5/31 0:57:02

朱光亚与一个民族最深沉的精神底色(潜龙在渊)

潜龙在渊:朱光亚与一个民族最深沉的精神底色2024年12月25日,北京西北郊的八宝山公墓,一场简朴而庄重的纪念活动正在举行。没有盛大的仪式,没有铺天盖地的报道,只有几束素白的菊花静静安放在骨灰安放处。墓碑上没有显赫…

作者头像 李华