一、什么是域名?什么是DNS劫持?DNS劫持有哪些

域名是互联网中用于标识计算机或计算机组的易记名称,是 IP 地址的 “别名”。

由于 IP 地址是一串难以记忆的数字(如180.101.50.212),域名通过域名系统(DNS) 实现 “域名→IP 地址” 的解析,方便用户访问网络资源。例如www.baidu.com就是一个域名,用户通过它可访问百度服务器。

二、浏览器输入www.baidu.com后经历的操作

从输入网址到看到页面,经历了DNS 解析、TCP 连接建立、HTTP 请求发送、服务器响应、页面渲染等关键步骤:

  1. DNS 解析:浏览器先查本地 DNS 缓存,若没有则向本地 DNS 服务器(如运营商提供)发起递归查询,最终得到www.baidu.com对应的 IP 地址。
  2. 建立 TCP 连接:浏览器与目标 IP 的 80 端口(HTTP 默认端口)进行TCP 三次握手(SYN→SYN+ACK→ACK),建立可靠连接。
  3. 发送 HTTP 请求:浏览器构造 HTTP 请求报文(包含请求方法、路径、头部等),通过 TCP 连接发送给服务器。
  4. 服务器处理并返回响应:百度服务器接收请求,处理后生成 HTTP 响应报文(包含状态码、响应头、网页内容等),返回给浏览器。
  5. 浏览器渲染页面:浏览器解析 HTML、CSS、JavaScript 等资源,渲染出页面;同时还会请求图片、字体等资源,最终呈现完整界面。

三、localhost127.0.0.1的区别

对比项 127.0.0.1 localhost
本质 IPv4 的回环 IP 地址 指向本地的域名
解析方式 直接作为 IP 使用 先查本地hosts文件(通常解析为127.0.0.1::1),再查 DNS(一般不会到公网 DNS)
功能 用于本机内部网络通信,可被ping 逻辑上标识 “本地主机”,侧重服务访问

127.0.0.1IP 层面的本地回环localhost域名层面的本地标识,大部分场景下功能一致,细节上有协议栈、解析流程的差异。

四、网络通讯的五元组与七元组

  • 五元组:用于唯一标识一个网络连接,由源 IP 地址、源端口、目的 IP 地址、目的端口、传输层协议(TCP/UDP 等) 组成。例如,你的电脑(源 IP:192.168.1.2,源端口:随机端口)访问百度(目的 IP:xxx.xxx.xxx.xxx,目的端口:80,协议:TCP),这五个元素唯一确定该连接。
  • 七元组:在五元组基础上,增加网络层协议(如 IP)和应用层协议(如 HTTP、FTP),用于更精确地识别应用层通信。

五、HTTP 与 TCP、UDP 的区别

首先明确层级:TCP/UDP 是传输层协议,HTTP 是应用层协议,HTTP 基于 TCP(或 QUIC)传输。

协议 层级 特点 适用场景
TCP 传输层 面向连接、可靠传输(重传、流量控制等)、有序 HTTP、HTTPS、邮件、文件传输
UDP 传输层 无连接、不可靠、开销小、速度快 视频直播、在线游戏、直播(追求快)
HTTP 应用层 基于 TCP 传输,定义客户端 - 服务器的请求 - 响应规范 网页访问、API 交互

01、tcp的三次握手和四次挥手:

图解:

三次握手

四次挥手

02、三次握手分别是什么,每次握手的意义是什么?

TCP的三次握手是用来建立连接的。

第一次握手,是客户端向服务器发送了一个SYN请求,也就是客户端在向服务器请求连接。此时客户端处于SYN_SENT状态。
第二次握手,是服务器向客户端发送了一个ACK+SYN的回应,表明服务器收到了客户端的请求,并且同意了客户端的请求建立连接。此时服务器处于SYN_RCVD状态。
第三次握手,也是最后一次握手,是客户端回应服务器一个ACK报文。表明客户端收到服务器的同意建立连接,并告诉服务器我收到了你的确认。同时也会根据此时客户端处于ESTABLISHED状态。

到此,三次握手的过程就算结束了。最后,当服务器收到客户端的 ACK 报文之后,也处于 ESTABLISHED 状态。此时,连接就已经建立成功了。

03、四次挥手分别是什么,每次挥手的意义是什么?

TCP中的四次挥手是用来关闭连接的。

四次挥手的具体过程如下:

第一次挥手:客户端向服务器发送一个FIN(结束)请求,表示客户端不再发送数据。此时客户端处于FIN_WAIT_1状态。
第二次挥手:服务器收到请求后,回复客户端一个ACK响应确认,但这个响应可能还携带有未传输完的数据。此时服务器处于CLOSE_WAIT状态。注意,在第三次挥手之前,数据还是可以从服务器传送到客户端的。
第三次挥手:服务器完成数据传输后,向客户端发送一个FIN请求,表示服务器也没有数据要发送了。此时服务器状态变为LAST_ACK状态。
第四次挥手:客户端收到服务器的请求后,回复服务器一个ACK响应确认。此时客户端处于TIME_WAIT状态,需要经过一段时间确保服务器收到自己的应答报文后,才会进入CLOSED状态。
  到这里,四次挥手就已经结束了。最后,服务器收到ACK报文后,就关闭连接,也处于CLOSED状态了。

六、HTTP 与 HTTPS 的默认端口

  • HTTP:超文本传输协议,默认端口80,明文传输,安全性低。
  • HTTPS:HTTP 的安全版本(基于 SSL/TLS 加密),默认端口443,用于电商、金融等对安全要求高的场景。

七、为什么会有 K8s(Kubernetes)?

容器化(如 Docker)普及后,大规模容器管理面临部署、扩缩容、故障自愈、服务发现等难题。K8s 作为开源容器编排平台,解决了这些痛点:

  • 自动化管理:自动部署、重启故障容器、扩缩容,减少人工操作。
  • 服务编排:管理多容器组成的应用,定义服务依赖与通信。
  • 资源调度:智能将容器调度到合适的服务器节点。
  • 高可用性:通过副本、自愈机制保证服务持续可用。

K8s 让大规模容器化应用的运维成为可能,是云原生时代的核心基础设施。

docker只能解决单机容器化部署,当服务器非常多的时候,需要有一个程序来管理这些容器。

k8s是谷歌开源的。

八、企业为什么喜欢 Nginx?它的作用是什么?

Nginx 是高性能的 HTTP / 反向代理服务器,以轻量、高并发、高性能著称,核心作用如下:

  1. 反向代理:隐藏后端服务器真实 IP,增强安全性。例如,用户访问 Nginx 服务器(IP:192.168.0.1),Nginx 通过配置转发请求到真实后端(IP:192.168.0.2),用户无需感知后端细节。
  2. 负载均衡:将请求分发到多台后端服务器,提升性能与可用性。常见策略:
    • 轮训:依次分发请求到每台服务器。
    • 按权重:根据服务器资源 / 性能设置权重(如资源好的服务器承担更多请求,支持灰度发布)。
    • 按客户端 IP:同一客户端请求固定分发到某台服务器(适用于会话保持场景)。
  3. 自动剔除不可用的应用:当容器中有一个应用一直出现报错,nginx可以自动检测到此应用并剔除掉。
    • 存在一个有名的框架:openResty(原理为nginx+lua脚本):某个接口如果不传某个字段,就会自动拒绝连接

九、微服务、集群、分布式的区别

微服务是一个思想。当单体架构扛不住的时候,我会拆分服务,形成微服务

集群:相同的程序,多个实例叫做集群,集群是为了解决单点故障

分布式:分布式讲究的是部署理念,一般讲究两地三中心

十、有状态和无状态

有状态:一般指的是有状态的,不能够在服务器间进行迁移的容器。比如说MySQL是经典的有状态容器,如果想迁移MySQL还需要挪动磁盘。

无状态:可以随时动态扩缩容的容器。单纯的程序,可以在不同服务器进行扩张和缩减其副本数,不需要做任何操作,比如SpringBoot程序是经典的无状态容器

十一、知识点

1、网站调用接口(在执行js操作的时候),或者拉取静态资源的时候,两种方式、第一种是相对路径,采用浏览器地址栏中的地址,第二种是绝对路径,不管地址是什么,都掉相同的

2、当输入一个sql的时候(当输入一个docker命令的时候),mysql是怎么查询出结果的?

SQL → 连接 → 解析 → 优化(最重要) → 执行计划 → 存储引擎取数据 → Server 层再加工 → 返回客户端。

3、主从架构当中,主从节点的个数一般都是奇数。半数选举机制。3个节点(1主2从)5个节点(1主4从,3个从节点)。redis(主从)

4、pod和node的区别。pod是K8s最小调度单元(一个个的微服务容器),Node是我的服务器

5、K8s调用链路

Service:Pod集群对外暴露的统一域名,被Ingress调用。(4层协议,只管传输层,tcp、udp) Ingress:实际开放的端口。(七层协议,到应用层。http、https)

6、配置中心

springCloud 有个配置中心(nacos),k8s也有配置中心。

一般情况下,k8s的配置中心一般配置和系统有关系的,用来配置环境变量,springboot的配置文件等等

nacos的配置中心一般配置和业务有关系的比较灵活的,折扣比例等等

更多推荐