计算机网络高频面试题


1. 经典网络分层,五层/七层模型,TCP/UDP/HTTP工作在哪一层?

题眼:传输层和应用层

两种常见网络分层模型:

✅ 五层协议模型(TCP/IP模型):
  • 物理层(Physical Layer)
  • 数据链路层(Data Link Layer)
  • 网络层(Network Layer)
  • 传输层(Transport Layer)
  • 应用层(Application Layer)
✅ 七层协议模型(OSI模型):
  • 物理层
  • 数据链路层
  • 网络层
  • 传输层
  • 会话层(Session Layer)
  • 表示层(Presentation Layer)
  • 应用层

各协议对应层级:

  • TCP / UDP:传输层
  • HTTP:应用层
✅ 参考回答:

常见的网络分层主要有两种:TCP/IP 五层协议模型OSI 七层协议模型
五层协议从下至上为:物理层、数据链路层、网络层、传输层和应用层。
OSI 模型在此基础上,将应用层细分为会话层、表示层和应用层。
其中 TCP 和 UDP 工作在传输层,HTTP 工作在应用层


2. 浏览器地址栏输入 URL 后都发生了什么?

题眼:网络分层、DNS服务、TCP连接等

浏览器输入 URL 后的全过程:

  1. 解析 URL:浏览器将 URL 拆分为协议、主机名、端口和路径等部分,准备生成 HTTP 请求。
  2. DNS 解析:查询域名对应的 IP 地址,优先查找本地缓存,其次使用 DNS 服务。
  3. 建立 TCP 连接:通过三次握手建立与目标服务器的连接。
  4. 分层打包
    • 应用层添加 HTTP 请求头
    • 传输层添加 TCP 首部(源端口、目标端口等)
    • 网络层添加 IP 首部(源 IP、目的 IP)
    • 数据链路层添加 MAC 首部(源 MAC、目的 MAC)
    • 使用 ARP 协议获取目标 MAC 地址
  5. 物理层传输:网卡将数据转换为电信号,通过网线、光纤等介质发送。
  6. 中间设备:数据经过交换机、路由器等设备转发。
  7. 服务器接收请求
    • 去除 MAC 头,校验 MAC 地址
    • 去除 IP 头,解析目标 IP
    • 去除 TCP 头,读取端口号、序列号
    • 将 HTTP 请求交给对应进程处理
  8. 服务器响应:处理请求并返回 HTML 等资源。
  9. 四次挥手断开连接:当通信结束后,客户端与服务器通过 TCP 四次挥手断开连接。
✅ 参考回答:

网络请求就像“打包快递”和“剥洋葱”一样。
浏览器先发起 DNS 查询,拿到目标网站的 IP 地址后,通过三次握手建立 TCP 连接。
HTTP 请求在应用层生成,再逐层往下封装,最终通过物理层发送到目标服务器。
服务器收到后再逐层拆包,最终交给 HTTP 应用处理。返回数据的过程与之相反。
通信完成后,再通过四次挥手关闭连接。

💡 引申:如果是 HTTPS,还涉及 SSL 握手、数字证书验证和密钥协商等加密步骤。


3. DNS 服务介绍

题眼:域名解析,UDP协议

DNS(Domain Name System)是干什么的?

DNS 就是互联网的电话簿,将域名(如 www.example.com)解析为 IP 地址。它使用的是 UDP 协议(53端口)

DNS 查询流程:

  1. 发起 DNS 查询:浏览器先查本地 DNS 缓存,未命中则向本地 DNS 服务器查询。
  2. 本地 DNS 查询:检查自身缓存;没有结果则进行递归查询。
  3. 查询根域名服务器:获取对应顶级域名服务器地址。
  4. 查询顶级域名服务器:获取权威域名服务器的地址。
  5. 查询权威域名服务器:获取目标主机记录(如 A、CNAME 记录)。
  6. 返回解析结果:本地 DNS 返回 IP 给浏览器,并缓存该记录。
  7. 发起连接请求:浏览器使用获取到的 IP 与目标网站建立连接。

参考答案:

DNS 服务负责将域名解析为 IP 地址,它采用的是 UDP 协议。
浏览器首先查找本地缓存,如无命中,会向服务商提供的本地 DNS 服务器查询,若仍未命中,就会依次向根域名服务器、顶级域名服务器、权威域名服务器发起查询。
DNS 解析结果通常会被本地缓存一段时间以加速下次访问。

💡 引申:如果访问一个网址,有些人能打开,有些打不开,可能是本地 DNS 缓存污染或线路问题,可通过“拨测”或切换 DNS 服务器解决。


3.1 什么是 DNS 劫持?

DNS 劫持 = 恶意篡改 DNS 解析结果

DNS 劫持是指 DNS 查询过程被劫持,返回了错误或伪造的 IP 地址,导致用户访问了错误或恶意网站。

常见表现:

  • 自动跳转到广告页面
  • 网站打不开或提示“证书不安全”
  • 实际访问的是仿冒钓鱼网站

参考答案:

DNS 劫持是一种网络攻击行为,通过篡改 DNS 解析结果,诱导用户访问错误或恶意网站。运营商、路由器、木马病毒都可能成为劫持源。
在安全性要求高的场景下(如支付、登录等),需特别防范 DNS 劫持。


4. TCP 和 UDP 的特点与区别

题眼:区别 + 使用场景

TCP 特点:

  • 面向连接(连接建立后才能通信)
  • 可靠传输(三次握手 + 四次挥手,确认机制)
  • 面向字节流
  • 有拥塞控制和流量控制

UDP 特点:

  • 无连接,发送前不建立连接
  • 不可靠传输,不保证顺序、不重传
  • 面向报文(一次发送就是一个完整报文)
  • 没有拥塞控制,开销更小,延迟更低

使用场景:

  • TCP:文件传输、网页访问、电子邮件(需要高可靠性)
  • UDP:视频直播、语音通话、在线游戏(实时性优先)
✅ 参考答案:

TCP 是可靠的、面向连接、面向字节流的协议,适合对数据完整性要求高的场景,比如文件传输、支付、网页浏览等。
UDP 是不可靠的、无连接、面向报文的协议,适用于实时性要求高的场景,比如视频、音频、在线游戏等。

💡 引申:有没有既可靠又快的协议?
答:QUIC 协议是基于 UDP 的新型传输协议,结合了 TCP 的可靠性和 UDP 的速度,已应用于 Google、YouTube、HTTP/3 等场景。

5. TCP 的三次握手与四次挥手机制

三次握手(Three-way Handshake)

目的是建立可靠连接,确保双方都具备发送与接收能力。

过程:

  1. 客户端 → 服务器:SYN

    • 客户端发送一个 SYN 包(SYN=1seq=x);
    • 表示客户端希望建立连接,并发送初始序列号 x
    • 状态变为:SYN_SENT
  2. 服务器 → 客户端:SYN + ACK

    • 服务器收到 SYN 后,回复一个 SYN=1, ACK=1, seq=y, ack=x+1 的包;
    • 表示同意建立连接,并发送自己的初始序列号 y
    • 状态变为:SYN_RCVD
  3. 客户端 → 服务器:ACK

    • 客户端收到服务器的 SYN+ACK 后,再发一个 ACK=1, ack=y+1
    • 表示确认服务器的回应;
    • 客户端状态变为:ESTABLISHED
    • 服务器收到 ACK 后状态也变为 ESTABLISHED,连接建立完成。

四次挥手(Four-way Handshake)

目的是优雅关闭连接,确保双方都完成了数据传输。

过程:

  1. 客户端 → 服务器:FIN

    • 客户端发送 FIN=1,表示不再发送数据;
    • 状态变为:FIN_WAIT_1
  2. 服务器 → 客户端:ACK

    • 服务器收到 FIN 后,发送 ACK=1 确认;
    • 状态变为:CLOSE_WAIT
    • 客户端状态变为:FIN_WAIT_2
  3. 服务器 → 客户端:FIN

    • 服务器准备关闭,发送 FIN=1
    • 状态变为:LAST_ACK
  4. 客户端 → 服务器:ACK

    • 客户端收到 FIN,发送 ACK=1 确认;
    • 状态变为:TIME_WAIT,等待 2MSL 后彻底关闭;
    • 服务器收到 ACK 后状态为:CLOSED

5.1 HTTPS 握手过程

HTTPS = HTTP + TLS/SSL(先进行 TCP 三次握手 → 再进行 TLS 握手 → 加密 HTTP 通信)

步骤 1:TCP 三次握手

建立可靠连接。

步骤 2:TLS 握手(建立加密通道)

  1. ClientHello

    • 包含支持的 TLS 版本、加密套件列表、客户端随机数(Client Random)。
  2. ServerHello + 证书 + 参数

    • 返回服务器随机数(Server Random)、选定加密算法、服务器证书(含公钥)。
  3. 客户端验证证书

    • 验证服务器证书合法性;
    • 生成预主密钥(Pre-Master Key),并使用服务器公钥加密后发送。
  4. 双方生成共享对称密钥(Session Key)

    • 使用:
      Session Key = PRF(Client Random + Server Random + Pre-Master Key)
      
  5. 客户端发送 ChangeCipherSpec + Finished

    • 表示后续数据使用对称密钥加密;
    • Finished 报文加密发送。
  6. 服务器发送 ChangeCipherSpec + Finished

    • 同样切换为加密状态,握手完成。

步骤 3:HTTP 加密通信开始

使用对称密钥进行加密通信。


6. 为什么建立连接需要三次握手?第三次能否携带数据?

原因(反证法):

  • 两次握手不足以确认双方状态是否正常
  • 假设只需两次握手:
    • 客户端发送 SYN;
    • 服务器回复 SYN+ACK;
    • 此时服务器认为连接已建立,但客户端可能未收到 ACK;
    • 导致“半连接”状态,后续通信可能失败。

三次握手的作用:

  • 保证双方都知道连接建立,并准备好通信。
  • 最后一步由客户端回复 ACK,确保客户端收到服务器响应。

第三次能否携带数据?

  • 理论上:TCP 标准不建议第三次握手携带数据。
  • 实际上:可以携带数据(如 HTTP 的请求内容),称为 SYN 数据优化。
  • 影响
    • 如果第三次握手失败,不会影响请求安全;
    • 如果成功,减少一次传输,提升性能。

7. 为什么需要四次挥手?讲讲 TIME_WAIT 和 CLOSE_WAIT

为什么不是三次?

  • 因为 TCP 是全双工连接,断开需要双方都确认。
  • FIN 和 ACK 是独立的报文,不能合并发送。

TIME_WAIT 状态

  • 出现时机:主动关闭一方在发送最后 ACK 后进入 TIME_WAIT 状态。

  • 作用

    1. 防止旧连接中的延迟数据影响新连接;
    2. 确保 ACK 能被对方收到,若对方未收到可重发 FIN。
  • 持续时间

    • 默认是 2 * MSL(Maximum Segment Lifetime);
    • 一般为几十秒到几分钟(由操作系统设置)。

CLOSE_WAIT 状态

  • 出现时机:被动关闭方收到 FIN 后,回复 ACK,进入 CLOSE_WAIT 状态。
  • 作用:等待应用程序调用 close() 主动关闭连接。
  • 问题:如果应用长时间不调用 close,会导致大量 CLOSE_WAIT 状态堆积,占用资源。

8. TCP 的重传机制是什么?

题眼:重传机制的目的和区别

TCP 是一个面向连接且可靠的协议,其可靠性通过 应答 + 重传机制 来实现。当数据包在网络中丢失或损坏时,TCP 会通过以下几种机制重新发送:

四种重传机制:

  1. 超时重传(Timeout Retransmission)

    • 设置一个 RTO(Retransmission Timeout)计时器;
    • 若超过 RTO 时间未收到 ACK,则重发该数据;
    • RTO 是动态变化的,基于 RTT 的估算;
    • 缺点:等待时间可能较长,影响效率。
  2. 快速重传(Fast Retransmit)

    • 当接收方连续收到多个相同的 ACK(默认 3 次)时;
    • 发送方立即重传“被认为丢失”的报文段,无需等待超时;
    • 加快了丢包检测速度;
    • 缺点:不能定位具体哪个数据段丢失。
  3. 选择性确认(SACK, Selective Acknowledgement)

    • 接收方通过 TCP 选项字段通知发送方哪些数据收到了,哪些没收到;
    • 发送方只需重传“未收到”的部分,避免全量重传;
    • 提高重传效率(尤其在网络丢包率高时);
    • 需双方都支持 SACK 才能启用。
  4. 重复选择确认(D-SACK, Duplicate SACK)

    • SACK 的扩展,用于标识重复接收了哪些数据;
    • 发送方可据此判断是否发生了误判性重传,进一步优化策略。

9. TCP 是如何进行流量控制的?

题眼:滑动窗口

流量控制目的:

  • 防止发送方发送太快,导致接收方来不及处理,发生数据丢失。

实现方式:滑动窗口(Sliding Window)机制

  • 接收方会在 ACK 报文中告诉发送方自己的可接收窗口大小(Window 字段);
  • 发送方根据该值控制可发送的最大数据量;
  • 窗口大小动态调整,随网络和接收方处理能力变化而变化;
  • 当接收方缓存耗尽时,可设置窗口为 0(Zero Window),通知发送方暂停发送。

举例:

  • 假设滑动窗口大小为 10 个数据段,发送方可连续发 10 个数据段,无需等待确认;
  • 每收到一个 ACK,窗口滑动一个单位,允许发送新数据。

10. TCP 的拥塞控制是怎么实现的?

TCP 拥塞控制用于避免网络拥塞,保障网络公平性和稳定性。主要依赖四个算法:

1. 慢启动(Slow Start)

  • 初始设置一个小的拥塞窗口(cwnd),如 1 或 10 MSS;
  • 每收到一个 ACK,就将 cwnd 增加一倍(指数增长);
  • 快速探测网络带宽上限。

2. 拥塞避免(Congestion Avoidance)

  • 当 cwnd 增长到阈值(ssthresh)后,进入线性增长阶段;
  • 每收到一个 ACK,仅增加 1/cwnd,避免快速增加导致拥塞。

3. 快速重传(Fast Retransmit)

  • 如果接收方收到三个重复 ACK,立即重传该丢失数据段;
  • 避免等待超时重传,提高响应速度。

4. 快速恢复(Fast Recovery)

  • 在快速重传后,不回到慢启动;
  • cwnd 减半后继续线性增长;
  • 加快恢复速度,提升吞吐量。

11. TCP 是如何解决粘包问题的?

题眼:粘包的原因和三种解决方法

粘包的原因:

  • TCP 是面向字节流的协议,发送的数据没有边界;
  • 操作系统的发送缓冲区可能会将多个小包合并(Nagle算法);
  • 接收方一次性收到多个包,难以判断每个数据包的起止位置;
  • 或者一个大的包被拆分为多个小段接收。

常见解决方案:

  1. 固定长度消息

    • 每个消息固定字节数,接收方按固定长度切分;
    • 实现简单,但会浪费空间或限制内容。
  2. 特殊分隔符

    • 双方约定某个特定字符作为消息结束符(如换行符、\r\n);
    • 适用于文本类数据,但需要对内容进行转义或限制。
  3. 自定义消息结构(加长度字段)

    • 在每个数据包前添加消息长度字段(如 length + body);
    • 接收方先读长度,再根据长度读取完整
    • 最通用、安全、灵活,常见于 RPC、JSON、Protobuf 等协议。

12. SYN 超时和洪泛攻击是什么?

1. SYN 超时(SYN Timeout)

  • 发生于 TCP 三次握手过程中:
    • 客户端发送 SYN 后,若服务器长时间未回应 SYN+ACK,则客户端等待超时;
  • 可能原因:
    • 网络延迟、路由丢包、服务器过载、ACL 防火墙限制等;
  • 通常客户端会**重试数次(如3次)**后断开。

2. SYN 洪泛攻击(SYN Flood Attack)

  • 属于 DDoS 攻击的一种:
    • 攻击者伪造大量源 IP,发送海量 SYN 请求给服务器;
    • 服务器为每个连接分配资源,进入半连接(SYN_RCVD)状态;
    • 等待 ACK 却迟迟收不到,资源被耗尽;
  • 后果:
    • 正常用户无法连接,服务器响应变慢或崩溃;
  • 解决方式:
    • SYN cookies、连接队列限制、防火墙过滤、IP 黑名单等。

13. HTTP 和 HTTPS 有哪些区别?

项目 HTTP HTTPS
安全性 明文传输,容易被窃听/篡改 加密传输,防窃听、防篡改、防劫持
使用协议 超文本传输协议(HTTP) HTTP + SSL/TLS 加密传输
端口号 默认 80 默认 443
证书支持 需向 CA 机构申请 SSL 证书
性能开销 加密握手带来一定开销
SEO影响 有利于提升权重,推荐使用

衍生问题:

● 什么是 HTTPS 中间人攻击(MITM)?
  • 攻击者伪造证书或拦截通信,冒充合法服务器;
  • 若客户端不验证证书来源或信任伪造证书,就可能被劫持;
  • 解决:强制证书验证、HSTS、Pinning 等。
● HTTPS 加密了哪些内容?
  • 加密的
    • 请求正文(POST 数据)
    • 响应正文(网页内容)
    • 请求头/响应头(除部分字段)
  • 未加密的
    • 域名(DNS 查询)
    • IP 地址、端口号
    • TLS 握手过程的明文部分(如 SNI 字段,除非启用 ESNI)

14. GET 和 POST 有哪些区别?

GET 和 POST 是 HTTP 协议中常用的两种请求方法,它们在数据传输和语义上有以下区别:

对比维度 GET 请求 POST 请求
数据位置 参数附加在 URL 查询字符串中(如 ?a=1&b=2 参数放在请求体(body)中
数据长度限制 有 URL 长度限制(浏览器和服务器限制,约 2KB~8KB) 请求体中无明显长度限制
数据类型 明文传输,参数可直接在地址栏看到 参数隐藏在请求体中,更安全
幂等性 是(多次请求结果一致) 否(每次请求可能造成资源变更)
缓存 浏览器可以缓存 GET 请求结果 不可缓存 POST 请求结果
安全性 参数暴露在 URL 中,安全性差 相对安全,适合传输敏感数据

总结:

  • GET:用于获取资源,参数明文、适合无副作用的请求。
  • POST:用于提交数据,参数隐藏、适合资源更新等操作。

参考答案简述:

GET 和 POST 是 HTTP 协议中常用的两种请求方法。从 Restful 角度来看,GET 是获取资源,具有幂等性;POST 是新增资源,不具有幂等性。从传输方式来看,GET 把数据放在 URL 中,明文传输;POST 把数据放在消息体中,可加密且无长度限制,因此 POST 更安全。


15. HTTP/1.1、HTTP/2、HTTP/3 的区别?

特性 HTTP/1.1 HTTP/2 HTTP/3
是否默认加密 否(需手动配置 SSL/TLS) 是(默认使用 HTTPS) 是(使用 QUIC 协议,自带 TLS 加密)
数据传输格式 文本格式 二进制格式 二进制格式
多路复用 不支持,连接阻塞(队头阻塞) 支持(基于 Stream,解决 HTTP 层队头阻塞) 支持(基于 UDP + QUIC,彻底解决队头阻塞)
连接机制 每个请求一个连接,或使用 Keep-Alive 多个请求复用一个 TCP 连接 多个请求复用一个 QUIC(基于 UDP)连接
首部压缩 不支持,重复头部开销大 支持 HPACK 压缩 支持 QPACK 压缩
服务端推送 不支持 支持(Server Push) 支持
底层协议 TCP TCP UDP(使用 QUIC 协议代替 TCP)

引申知识:

  • HTTP/1.1 相比 1.0: 增加持久连接、管道化请求、虚拟主机支持、分块传输编码等。
  • QUIC 协议: 是 Google 提出基于 UDP 的传输层协议,结合了 TCP 的可靠性和 TLS 的安全性,还解决了连接建立慢、队头阻塞等问题。

16. 网络不通怎么办?Ping 命令原理?什么是拨测?

排查思路:

  1. 客户端问题排查:

    • 多设备测试:如手机可访问、电脑不可访问 ⇒ 电脑问题
    • 检查代理、DNS 配置、浏览器扩展或翻墙软件
  2. 网络层问题排查:

    • 使用 ping 从近到远测试:
      ping 127.0.0.1         # 本机
      ping 网关地址(如 192.168.1.1)
      ping 公网 IP(如 8.8.8.8)
      ping 域名(如 www.baidu.com)
      
    • 使用 tracerttraceroute 跟踪网络路径
    • 使用 nslookupdig 测试 DNS 解析
  3. 服务端问题排查:

    • 是否仅某个站点无法访问?
    • 查看返回 HTTP 状态码(4xx 权限/客户端问题,5xx 服务端问题)
    • 使用 telnet example.com 80nc 测试端口连通性

ping 命令原理:

  • 基于 ICMP 协议,发送 Echo Request,接收 Echo Reply
  • 用于判断目标主机是否可达,测量往返时间(RTT)
  • 工作在 OSI 模型网络层(第 3 层)

拨测(Probing Test):

主动探测目标系统可用性、响应时间与性能状态。

常见拨测方式:

  • ICMP 拨测(网络层): 使用 ping 测试 IP 是否可达
  • TCP/UDP 拨测(传输层): 使用 telnet / nc 测试端口是否开放
  • HTTP 拨测(应用层): 模拟访问网页,检查状态码与内容
  • DNS 拨测: 使用 nslookupdig 检查解析是否正确
  • 数据库拨测: 连接数据库执行 SQL,监控响应时间

参考实战回答简述:

网络不通时,我一般从客户端、网络、服务端三方面排查:先看是否所有网站都不通;然后检查是否是代理或 DNS 问题;再使用 ping 测试,从本机开始逐步定位;如果确认是网络问题,还可以结合拨测工具从不同 ISP 或节点测试,判断是否为运营商问题。


17. HTTPS 一定安全吗?

不一定,虽然 HTTPS 提供了加密传输、身份验证和数据完整性,但仍然存在一些风险:

可能存在的攻击方式:

  • 中间人攻击(MITM):

    • 攻击者伪造服务器证书或使用不受信任的根证书进行欺骗
    • 用户若忽视浏览器的证书警告,依然可能泄露敏感信息
  • 假证书攻击:

    • 若 CA 机构出现“内鬼”或被攻破,可签发合法但伪造的证书
  • 弱加密算法:

    • 若 HTTPS 使用的加密算法过旧或配置不当,也可能被破解(如 SSLv3、RC4)
  • 用户行为问题:

    • 用户忽视浏览器警告,强行访问不受信任站点

浏览器应对方式:

  • 360 浏览器:提示风险,但允许继续访问
  • Chrome:阻止连接并报错,防止用户误入钓鱼站

总结:

HTTPS 相比 HTTP 更安全,但并非绝对安全。只有结合强加密算法、可信 CA、良好的用户习惯以及安全配置,才能真正保障数据安全。

18. TCP 如何保证包有序?

TCP 通过以下机制确保数据包按序到达并正确重组,实现可靠传输:

  • 序列号(Sequence Number): 每个数据包分配唯一的序号,接收方可按序重组。
  • 确认应答(ACK): 接收方收到数据后返回确认号,确保可靠交付。
  • 超时重传机制: 如果发送方在一定时间内未收到确认,将重传数据。
  • 滑动窗口机制: 控制发送方连续发送的数据量,提高吞吐效率。
  • 乱序重组机制: 若包乱序到达,接收方可缓存并按序交付给应用层。

19. SSL 协议是什么?

SSL(Secure Sockets Layer)是一种网络安全协议,用于保障客户端与服务器之间的数据传输安全。其核心功能包括:

  • 加密通信:防止数据被窃听
  • 身份验证:防止伪装服务器
  • 数据完整性:防止数据被篡改

目前,SSL 已被更安全的 TLS(Transport Layer Security)协议 所取代。


20. HTTP 协议用哪种方式来解决粘包问题?

粘包问题主要出现在 TCP 传输中,由于 TCP 是流式协议,接收端可能无法区分多个 HTTP 请求的边界。HTTP 协议通过以下两种方式解决:

  • 回车换行符(CRLF):用于标识 HTTP Header 的结束
  • Content-Length 字段:明确指定 HTTP Body 的长度,便于提取完整数据包

此外,HTTP/1.1 支持分块传输(Transfer-Encoding: chunked)也是一种防止粘包的方法。


21. TLS 加密

TLS 是什么?

TLS(Transport Layer Security)是一种加密协议,用于保障网络通信的安全。其主要目标包括:

  • 机密性:防止数据被窃听(使用加密)
  • 完整性:防止数据被篡改(使用哈希校验)
  • 身份验证:确认通信双方身份(使用证书)

TLS 加密方式:

  • 非对称加密:用于密钥交换和身份验证(如 RSA、ECDHE)
  • 对称加密:用于数据传输(如 AES)
  • 哈希算法:用于完整性校验(如 SHA256)

TLS 握手流程(以 TLS 1.2 为例):

  1. Client Hello(加密套件、随机数)
  2. Server Hello(证书、公钥、随机数)
  3. 客户端验证证书并生成对称密钥
  4. 客户端用公钥加密密钥发送给服务端
  5. 双方基于共享密钥开始加密通信

⚡ TLS 1.3 将握手优化为 1 个来回(1-RTT),提升性能。

TLS 加密的数据包括:

  • 登录信息(如用户名、密码)
  • 信用卡信息
  • 会话令牌(如 cookie)
  • 表单提交数据
  • 下载/上传的文件

22. 什么是内网穿透?

内网穿透是一种将局域网服务暴露到公网的技术,允许外部设备访问本地服务。

应用场景:

  • 局域网中的网站、接口、数据库需公网访问
  • 在外办公访问家中设备
  • 开发调试阶段,向外网演示本地服务

实现原理(以 natapp 为例):

  1. 本地服务运行在 127.0.0.1:port
  2. 启动 natapp 隧道,连接 natapp 云服务器
  3. natapp 云服务器分配一个公网域名/端口
  4. 外网访问该域名,即可访问本地服务

23. 内网穿透安全吗?

✅ 安全性提升方面:

  • 减少攻击面:natapp 仅暴露应用端口,操作系统端口未暴露
  • SSL 加密:natapp 使用 256 位 SSL 加密隧道,数据传输安全
  • 无需公网 IP:不在公网直接暴露服务器,规避多数黑客扫描

⚠️ 风险仍需注意:

  • 应用本身安全:若映射服务存在漏洞(如数据库弱密码),依然可能被攻击
  • 映射数据库风险高:建议数据库不直接内网穿透,或设置强认证与访问控制
  • 代码漏洞:开发阶段的服务若存在未处理的漏洞,同样有被利用风险

总结:natapp 类工具可一定程度提高安全性,但应用自身安全仍需重视。

🎯 更多高频面试题持续整理中!

不想在关键时刻掉链子?关注我,系统掌握常见面试问题和答题思路。
📌 一起扎实基础,刷题提效,
📈 不内卷、不焦虑,稳稳拿下属于自己的 offer!

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐