网络与后端技术总结:从域名到 K8s、Nginx
一、什么是域名?什么是DNS劫持?DNS劫持有哪些
域名是互联网中用于标识计算机或计算机组的易记名称,是 IP 地址的 “别名”。
由于 IP 地址是一串难以记忆的数字(如180.101.50.212),域名通过域名系统(DNS) 实现 “域名→IP 地址” 的解析,方便用户访问网络资源。例如www.baidu.com就是一个域名,用户通过它可访问百度服务器。
二、浏览器输入www.baidu.com后经历的操作
从输入网址到看到页面,经历了DNS 解析、TCP 连接建立、HTTP 请求发送、服务器响应、页面渲染等关键步骤:
- DNS 解析:浏览器先查本地 DNS 缓存,若没有则向本地 DNS 服务器(如运营商提供)发起递归查询,最终得到
www.baidu.com对应的 IP 地址。 - 建立 TCP 连接:浏览器与目标 IP 的 80 端口(HTTP 默认端口)进行TCP 三次握手(SYN→SYN+ACK→ACK),建立可靠连接。
- 发送 HTTP 请求:浏览器构造 HTTP 请求报文(包含请求方法、路径、头部等),通过 TCP 连接发送给服务器。
- 服务器处理并返回响应:百度服务器接收请求,处理后生成 HTTP 响应报文(包含状态码、响应头、网页内容等),返回给浏览器。
- 浏览器渲染页面:浏览器解析 HTML、CSS、JavaScript 等资源,渲染出页面;同时还会请求图片、字体等资源,最终呈现完整界面。
三、localhost和127.0.0.1的区别
| 对比项 | 127.0.0.1 |
localhost |
|---|---|---|
| 本质 | IPv4 的回环 IP 地址 | 指向本地的域名 |
| 解析方式 | 直接作为 IP 使用 | 先查本地hosts文件(通常解析为127.0.0.1或::1),再查 DNS(一般不会到公网 DNS) |
| 功能 | 用于本机内部网络通信,可被ping |
逻辑上标识 “本地主机”,侧重服务访问 |
127.0.0.1是IP 层面的本地回环,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 / 反向代理服务器,以轻量、高并发、高性能著称,核心作用如下:
- 反向代理:隐藏后端服务器真实 IP,增强安全性。例如,用户访问 Nginx 服务器(IP:
192.168.0.1),Nginx 通过配置转发请求到真实后端(IP:192.168.0.2),用户无需感知后端细节。 - 负载均衡:将请求分发到多台后端服务器,提升性能与可用性。常见策略:
- 轮训:依次分发请求到每台服务器。
- 按权重:根据服务器资源 / 性能设置权重(如资源好的服务器承担更多请求,支持灰度发布)。
- 按客户端 IP:同一客户端请求固定分发到某台服务器(适用于会话保持场景)。
- 自动剔除不可用的应用:当容器中有一个应用一直出现报错,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的配置中心一般配置和业务有关系的比较灵活的,折扣比例等等
更多推荐
所有评论(0)