部分重要协议或技术(DNS,ICMP,NAT,代理服务器)

发布时间:2026/5/18 3:47:52

部分重要协议或技术(DNS,ICMP,NAT,代理服务器) 目录一、​​​​​​DNS(Domain Name System)1. DNS 的技术背景2. 域名结构简介3. DNS 域名解析的完整过程(⭐⭐⭐)3.1 本地缓存查询递归查询3.2 全网迭代查询如果 Local DNS 也没有缓存二、ICMP 协议(网络的“听诊器”1. ICMP 的功能与定位2. ICMP 协议格式简述3. ping(⭐⭐⭐)4. traceroute (Windows 下叫 tracert)三、NAT 技术 (Network Address Translation)1. NAT 技术背景2. NAT IP 转换过程 (Basic NAT)3. NAPT (Network Address Port Translation)(⭐⭐⭐)4. NAT 技术的缺陷(⭐⭐⭐)四、代理服务器1. 正向代理 代表客户端的“代购”1.1 核心概念1.2 关键特征1.3 典型应用场景2. 反向代理 代表服务器的“前台客服”2.1 核心概念2.2 关键特征2.3 典型应用场景Nginx 是此领域的绝对霸主3. 正反向代理的核心差异(⭐⭐⭐)五、代理服务器 vs NAT1. 工作层次不同2. 处理开销不同一、​​​​​​DNS(Domain Name System)1. DNS 的技术背景虽然 IP 地址对于路由器和计算机来说非常高效直接进行二进制位运算但对于人类来说极度反人类。为了让人类能更直观地访问网络工程师发明了域名Domain Name。而DNS 协议的核心使命就是充当互联网的“通讯录”负责将人类可读的域名自动翻译成机器通信所需的 IP 地址。2. 域名结构简介域名并不是随便起的一个名字它是一个有着严格等级的树状树状结构。 一个完整的域名其实在最后都有一个“点”例如www.baidu.com..(根域名)全网最高管理节点全球只有13组根DNS服务器。.com(顶级域名 TLD)代表商业机构其他如.org,.cn,.edu。baidu.com(二级域名 SLD)企业或个人向域名提供商申请的专属名字。www(三级/主机名)企业内部自己划分的服务器名称比如mail.baidu.com。3. DNS 域名解析的完整过程(⭐⭐⭐)当你在浏览器输入www.baidu.com并按下回车时在发起 TCP 三次握手之前系统会先经历一次极其复杂的 DNS 解析长征。过程分为两大部分本地查询与网络查询。3.1 本地缓存查询递归查询浏览器缓存浏览器先看看自己有没有存过这个域名的 IP。操作系统缓存 (hosts 文件)查阅本地的/etc/hosts或 Windows 的hosts文件。路由器缓存询问家里的路由器有没有记录。本地域名服务器 (Local DNS)如果上面都没有电脑会向你的网络运营商电信/联通或者是你手动配置的8.8.8.8的 DNS 服务器求助。通常 90% 的查询在这里就能命中缓存并返回。3.2 全网迭代查询如果 Local DNS 也没有缓存Local DNS 服务器会代替你去互联网上进行“迭代查询”也就是挨个敲门问问根域名服务器Local DNS 问根服务器“你知道www.baidu.com吗”根服务器说“我不知道具体的但我知道.com的顶级域名服务器在哪你去问它。”问顶级域名服务器 (TLD)Local DNS 去问.com服务器。.com服务器说“我不知道具体 IP但这个域名是归baidu.com的权威域名服务器管的你去问它。”问权威域名服务器Local DNS 找到百度的权威服务器权威服务器查了下自己的表格给出准确答复“www.baidu.com的 IP 是39.156.66.10。”返回与缓存Local DNS 把结果告诉你的电脑并把这个结果缓存在自己这里方便下一个问的人。二、ICMP 协议(网络的“听诊器”IP 协议只负责“尽力而为”地发数据如果数据在半路路由器被丢弃了比如 TTL 耗尽、网络不可达发送方是完全不知道的。为了弥补这个缺陷ICMP (Internet Control Message Protocol互联网控制报文协议)诞生了。1. ICMP 的功能与定位功能用于在 IP 主机、路由器之间传递控制消息包括网络通不通、主机是否可达、路由是否可用等错误诊断信息。定位极易混淆ICMP 虽然是网络层的辅助协议但它的报文是封装在 IP 数据报的有效载荷中发送的IP 报头中的协议号为 1。2. ICMP 协议格式简述ICMP 报文的前 4 个字节是统一的8 位类型 (Type)标识这是什么类型的消息例如8代表请求0代表回显应答3代表目标不可达。8 位代码 (Code)进一步细化类型例如在“目标不可达”类型中代码0表示网络不可达代码1表示主机不可达代码3表示端口不可达。16 位校验和校验整个 ICMP 报文。3.ping(⭐⭐⭐)ping是基于 ICMP 协议开发的网络诊断工具。工作原理它向目标主机发送一个 ICMPEcho Request (类型 8)报文如果目标主机网络正常且没开禁 ping 防火墙就会返回一个 ICMPEcho Reply (类型 0)报文。通过计算一来一回的时间差就能判断网络延迟和丢包率。【面试必考点】ping命令是没有端口号的端口号是传输层TCP/UDP的概念而ping直接使用网络层的 ICMP 协议根本没到传输层。4.traceroute(Windows 下叫tracert)这个命令用来追踪数据包到达目标主机所经过的每一个路由器。它的实现原理巧妙利用 IP 报头的 TTL (生存时间)traceroute先发一个数据包故意把 IP 报头里的TTL 设置为 1。包到达第一个路由器时TTL 减为 0路由器把包丢弃并返回一个ICMP 超时Time Exceeded, 类型 11报文。这样我们就拿到了第 1 个路由器的 IP。接着发第二个包TTL 设置为 2。包经过第一个路由器TTL 减为 1到达第二个路由器时 TTL 归 0第二个路由器返回 ICMP 超时。我们拿到了第 2 个路由器的 IP。如此循环递增 TTL直到包最终到达目的主机目的主机返回端口不可达的 ICMP 报文追踪结束。三、NAT 技术 (Network Address Translation)1. NAT 技术背景IPv4 地址只有约 43 亿个早在多年前就被分配殆尽。为了让全球数百亿台设备都能上网工程师划分了“私有 IP”和“公网 IP”。NAT 技术应运而生它部署在路由器上负责在这两种 IP 之间进行无缝转换成功为 IPv4 续命了几十年。2. NAT IP 转换过程 (Basic NAT)最基础的 NAT 发生在家用路由器或企业网关上。 当内网主机如192.168.1.10向公网发数据时路由器会将 IP 报头中的源 IP替换为路由器 WAN 口的公网 IP如203.0.113.1并记录映射关系。等公网数据返回时路由器再根据映射表将目的 IP 替换回内网主机的私有 IP。3. NAPT (Network Address Port Translation)(⭐⭐⭐)基础 NAT 有个致命缺陷如果只有一个公网 IP内网十几台电脑同时上网路由器怎么区分返回的数据该给谁 这就需要NAPT网络地址端口转换它不仅转换 IP还转换传输层的端口号。内网主机 A (IP_A : 端口 1111) 访问百度。路由器将其转换为 (公网 IP :分配新端口 60001)。内网主机 B (IP_B : 端口 2222) 访问百度。路由器将其转换为 (公网 IP :分配新端口 60002)。百度返回数据给公网 IP 的60001端口时路由器一查表就知道这是属于主机 A 的数据。借助 65535 个端口NAPT 实现了“一个公网 IP 带动全公司上网”的奇迹。4. NAT 技术的缺陷(⭐⭐⭐)虽然 NAT 是救星但它也破坏了互联网设计的初衷破坏了端到端通信公网无法主动发起连接访问躲在 NAT 后面的内网主机。这给 P2P 下载、内网穿透、联机游戏带来了巨大的麻烦。性能开销路由器不仅要查路由表还要拆开传输层报头去修改端口号重新计算校验和消耗了设备性能增加了网络延迟。限制了某些协议某些协议如早期的 FTP会在应用层的数据载荷里包含自己的 IP 地址NAT 只改报头不管载荷就会导致通信失败。四、代理服务器代理服务器的本质是一个“中间商”。客户端不直接和目标服务器建立 TCP 连接而是先和代理服务器建连代理服务器再代替客户端去和目标服务器建连并拉取数据。根据“代理服务器究竟代表谁的利益”我们可以将其分为正向代理和反向代理。1. 正向代理 代表客户端的“代购”1.1 核心概念正向代理位于客户端和目标服务器之间。客户端为了向目标服务器发送请求必须先将请求发送给代理服务器代理再将请求转发给目标服务器最后将拿到的响应转交回客户端。在正向代理模型中代理服务器代表的是“客户端”。生活类比你想买一款国外的限量版球鞋但因为地域限制买不到。于是你找了一个海外“代购”。你把钱和需求给代购代购去店里买下来然后再寄给你。鞋店老板只知道代购来买鞋根本不知道背后真正的买家是你。1.2 关键特征隐藏了真实的客户端目标服务器如 Google 的服务器只能看到代理服务器的 IP无法获取真实客户端的 IP。主动配置通常需要客户端主动设置代理服务器的 IP 和端口例如在浏览器网络设置中配置或者使用某些客户端软件。1.3 典型应用场景突破访问限制由于某些原因客户端无法直接访问特定网站。通过一个能访问该网站的海外代理服务器就能实现间接访问。企业/校园上网行为管理公司内网所有电脑必须通过公司的正向代理服务器才能上网。网管可以在代理服务器上配置规则屏蔽游戏网站或视频网站甚至监控员工的上网记录。内容缓存节约带宽如果局域网内有多台主机都要下载同一个几百兆的软件更新包正向代理服务器可以在第一次下载时将其缓存在本地。后续其他主机再请求时直接从代理服务器拿极大节省了公网出口带宽。2. 反向代理 代表服务器的“前台客服”2.1 核心概念反向代理位于目标服务器的前端。对于客户端而言反向代理服务器就是目标服务器。客户端直接将请求发送给反向代理反向代理再根据某种路由规则将请求分发给背后的多台真实服务器处理最后将结果返回给客户端。在反向代理模型中代理服务器代表的是“服务端”。生活类比你拨打中国移动的 10086 客服热线。你并不知道也不关心电话背后接听的是哪一个具体的客服小姐姐。10086 这个总机号码就是“反向代理”它负责把你分配给目前空闲的某个客服人员。2.2 关键特征隐藏了真实的服务端客户端只能看到反向代理服务器的公网 IP根本不知道背后真正提供计算和数据的服务器集群可能是几十台内网机器的 IP 是多少。客户端无感知客户端不需要进行任何额外配置就像访问普通网站一样访问反向代理的地址。2.3 典型应用场景Nginx 是此领域的绝对霸主负载均衡 (Load Balancing)双十一期间淘宝的并发流量极大一台服务器根本扛不住。反向代理服务器如 Nginx 或硬件负载均衡 F5可以接收海量请求并使用轮询、IP 哈希等算法将流量均匀地分发给背后的 100 台业务服务器。安全防护与隐藏 (WAF)因为真实服务器的 IP 没有暴露在公网上黑客无法直接发起攻击。反向代理可以充当网络防火墙统一清洗恶意流量、拦截 DDoS 攻击。SSL/TLS 统一终结HTTPS 的加解密过程非常消耗 CPU。可以让反向代理服务器统一负责处理 HTTPS 证书和加解密解密后再用明文 HTTP 转发给后端的真实服务器从而大幅减轻后端服务器的计算压力。3. 正反向代理的核心差异(⭐⭐⭐)维度正向代理 (Forward Proxy)反向代理 (Reverse Proxy)代理对象客户端Client服务端Server部署位置靠近客户端所在的局域网或终端设备靠近服务端所在的机房或数据中心隐藏对象隐藏了真实的客户端隐藏了真实的服务端主要目的突破访问限制、上网行为管控、本地缓存负载均衡、安全防护、分担服务器压力客户端感知通常需要主动配置客户端明确知道代理的存在不需要配置客户端以为代理就是真实服务器典型代表软件VPN 客户端、SquidNginx、HAProxy、Apache五、代理服务器 vs NAT1. 工作层次不同NAT 工作在网络层和传输层它非常底层只是像个无情的流水线工人单纯地修改 IP 报头里的源/目的 IP以及修改 TCP/UDP 报头里的端口号。数据包本身的有效载荷它看都不看。代理服务器工作在应用层它是高层协议。代理服务器必须要彻头彻尾地参与 TCP 三次握手。客户端和代理建连代理再和目标服务器建连这里是两个完全独立的 TCP 连接。代理会解析应用层的数据如 HTTP 请求头根据里面的内容来决定下一步动作。2. 处理开销不同NAT 依靠路由器的硬件芯片转发速度极快开销极小代理服务器通常是运行在通用服务器如 Linux 机器上的软件需要占用大量的 CPU 和内存进行报文的重组和解析。

相关新闻