数据链路层ARP协议、NAT路由技术、代理服务器、内网穿透、内网打洞、交换机+集线器

@bit::Shadow
✧(≖ ◡ ≖✿

目录

与IP对比理解MAC地址

局域网的理解

数据帧

如何找到对方的MAC地址?

ARP协议各字段

ARP请求与应答

请求

首部

主体

应答

首部

主体

数据帧与网络传输的介质分析?【了解】

[1. 介质决定了数据帧的"封装格式"](#1. 介质决定了数据帧的“封装格式”)

[2. 介质决定了数据帧的"大小极限"](#2. 介质决定了数据帧的“大小极限”)

[3. 介质决定了数据帧的"传输方式"](#3. 介质决定了数据帧的“传输方式”)

[NAT技术 代理服务 网络穿透](#NAT技术 代理服务 网络穿透)

NAT技术

NAPT表

NAPT表项的生存【了解】

[1. 表项的创建是"按需触发"的(动态建立)](#1. 表项的创建是“按需触发”的(动态建立))

[2. 表项的寿命是"倒计时"的(动态老化/超时)](#2. 表项的寿命是“倒计时”的(动态老化/超时))

[3. 表项的公网端口是"临时占用"的(动态释放与回收)](#3. 表项的公网端口是“临时占用”的(动态释放与回收))

NAT技术的缺陷

代理服务器

正向代理

反向代理

校园网与云服务器的问题【了解】

[1. 为什么校园网不是"正向代理"?](#1. 为什么校园网不是“正向代理”?)

[2. 为什么腾讯云服务器不是"反向代理"?](#2. 为什么腾讯云服务器不是“反向代理”?)

[3. 那完整的实际通信流程是什么样的?](#3. 那完整的实际通信流程是什么样的?)

[4. 什么时候你的腾讯云服务器会变成"反向代理"?](#4. 什么时候你的腾讯云服务器会变成“反向代理”?)

终极总结

内网穿透

为什么需要内网穿透?(现实痛点)

内网打洞

为什么要"打洞"?(问题的根源)

交换机、集线器

交换机的两大核心功能(进阶)

集线器的核心工作逻辑:物理层"广播"


与IP对比理解MAC地址

  • IP地址描述的是路途总体的起点和终点。
  • MAC地址描述的是路途上的每一个区间的起点和终点。

局域网的理解

局域网是一个碰撞域,一个时刻只能发送一个数据帧。(局域网是共享资源)(实际上在网络中传播的是"数据帧"而非其他)

数据帧

数据帧(Frame)数据链路层(Layer 2) 的传输单元,它是网络数据在物理介质(如网线、光纤、WiFi)上传输的最终封装格式

如何找到对方的MAC地址?

通过ARP(地址解析协议)协议,将IP转换为MAC地址。

注意:ARP协议本身,就是为了"问出 "那个不知道的MAC地址而设计的、它不是一种可以"提前调用 "的转换工具,而是一个"现场询问"的通信过程。

ARP协议各字段

4*8比特

以太网目的地址、以太网源地址、帧类型为ARP的14位首部字段之后是28位字节应答/请求字段。

  • 硬件类型指链路层网络类型,1为以太网。
  • 协议类型指要转换的地址类型,0X0800对应IP地址。
  • 硬件地址长度对于以太网地址为6字节。
  • 协议地址长度对应IP地址为4字节。
  • op字段为1表示ARP请求,为2表示ARP应答。

ARP请求与应答

A端发送端 B端接收端

请求

首部

目的以太网地址;FFFF ... #广播地址,因为不知道目标MAC地址。

以太网源地址:A端MAC地址。

  • 帧类型:0x0806 指ARP协议。
主体
  • 硬件类型:1 指以太网
  • 协议类型:0x0800对应要转换的协议即IP协议。
  • 硬件地址长度:6 指以太网地址是6字节。
  • 协议地址长度:对应IP为4字节。

op:1 表示这是个请求报文。

发送端以太网地址:A端MAC地址。

目的以太网地址:FFFF .... 表示广播(因为当前未知目标MAC地址)

目的IP地址:被发送端报文填充内dst填充。

应答

B端应答A端的请求。

由于是"应答",就代表接收到了"请求"。此应答报文的目的地址明确了。

首部

以太网目的地址:即A端以太网地址。(请求端)

以太网源地址:即B端以太网地址。(应答端)

帧类型:0x0806 指ARP协议

主体
  • 硬件类型:1 指以太网。
  • 协议类型:0x00对应要转换的协议即IP协议。
  • 硬件地址长度:6指以太网地址是6字节。
  • 协议地址长度:对应IP协议为4字节。

op:2表示这是一个应答报文。

发送端以太网地址:即B端以太网地址。

发送端IP地址:即B端IP地址。

目的以太网地址:即A端以太网地址。

目的IP地址:即A段IP地址。

数据帧与网络传输的介质分析?【了解】

要理解数据帧和传输介质的关系,最核心的一句话是:数据帧是"逻辑上的快递包裹",而传输介质是"物理上的运输道路"。 包裹的设计(数据帧格式)必须适应道路的特性(介质特点),否则就无法顺利送达。

具体来说,它们的关系体现在以下三个层面:

1. 介质决定了数据帧的"封装格式"

不同的传输介质,其数据帧的格式(尤其是头部)是不同的。最典型的例子就是以太网帧Wi-Fi帧

  • 以太网(有线):工作在相对稳定、干扰小的环境中,帧结构相对简单,主要包含源/目的MAC地址、类型和校验码。

  • Wi-Fi(无线) :工作在干扰大、信号不稳定的环境中,帧结构要复杂得多。它除了包含基本的地址外,还增加了帧控制持续时间等字段,用于处理冲突避免、省电模式等问题。

这就好比公路运输的货车和海运的集装箱,虽然装的都是货物,但为了适应道路和风浪,其外形和结构必须不同。

2. 介质决定了数据帧的"大小极限"

这个极限就是最大传输单元(MTU)。数据帧的大小不能超过介质的MTU,否则就需要在IP层进行分片。

  • 传统以太网 的MTU通常是 1500字节

  • 千兆/万兆以太网 支持 Jumbo Frame(巨型帧) ,可以达到 9000字节 以上。

  • Wi-Fi 的MTU通常为 2304字节

这个差异很好理解:光纤和高速网线能轻松承载大块数据(像高速公路让重型卡车跑),而无线信号易受干扰,如果帧太大,传输中出错重传的成本太高,所以限制更严格。

3. 介质决定了数据帧的"传输方式"

数据帧在介质上如何"行走",方式也完全不同:

  • 有线介质(双绞线、光纤) :使用电信号光信号 传输,信道相对封闭,干扰小,可以实现全双工(同时收发)通信,几乎不冲突。

  • 无线介质(电磁波) :使用无线电波,信道是开放的,所有设备共享同一片空间,极易冲突。因此,Wi-Fi帧必须配合 CSMA/CA(载波侦听多路访问/冲突避免) 机制工作,在发送前先"监听"并随机退避,来减少碰撞。

总结:

1.即"帧"在数据传输中被分作"有线"与"无线"两种,"帧"只是传输的载体。

2."有线"较于"无线"实现了大数据/高效率传递,低成本重传。

NAT技术 代理服务 网络穿透

NAT技术

NAT技术是为了解决IP地址分配不足的问题。

NAT技术一种使用于路由器转接IP的转接技术,是一种"算法",直接决定了IP:port间转换。

  • NAT路由器将源地址从10.0.0.1替换为全局IP 202.244.174.27;
  • NAT路由器收到外部的数据时,又会把目标IP从202.244.174.37替换为10.0.0.1;
  • 在NAT路由器内部有一张自动生成的,用于地址+端口转换的表(NAPT);

NAPT表

如果局域网内,有多个主机访问同一个外网服务器,那么对于服务器返回的数据中,目的IP都是相同的,NAPT表使用IP+port来区分不同主机。

NAPT表项的生存【了解】
1. 表项的创建是"按需触发"的(动态建立)

NAPT表项不是提前配置好的,而是只有当内网设备主动向外发起连接时,路由器才会动态创建一条记录。

  • 体现 :当你打开浏览器访问百度时,路由器才会在那一瞬间生成一条映射:内网IP:端口(192.168.1.100:54321)<--> 公网IP:端口(120.1.1.1:55000)

  • 反例 :如果你把电脑关机,或者不访问任何外网服务,路由器的NAPT表里就完全没有关于这台电脑的任何记录。外部互联网根本不知道你的存在。

2. 表项的寿命是"倒计时"的(动态老化/超时)

这是NAPT动态性最直观的体现。每条表项都有一个"生存时间(Timeout)"计时器,像秒表一样倒计时。

  • 体现

    • 当数据包持续收发时,计时器会被重置(续命),保持活跃。

    • 当通信结束长时间无数据交互 (例如你刷完网页后发呆超过几分钟),计时器归零,这条表项就会被路由器自动删除(老化)

  • 不同协议时长不同:TCP连接通常老化时间较长(如5-30分钟),而UDP(无连接)老化时间很短(如30-60秒),因为UDP没有明确的"断开"信号。

3. 表项的公网端口是"临时占用"的(动态释放与回收)

NAPT表项中的公网IP和端口(TCP/UDP端口号)资源是有限的(端口只有65535个)。动态性确保了这些稀缺资源能被循环利用。

  • 体现

    • 连接结束释放端口 :当你关闭游戏或断开VPN,对应的表项迅速老化删除,它占用的那个公网端口(如55000)会立即回归"空闲池",供其他内网设备(比如你室友的手机)下次上网时复用。

    • 冲突避免:如果新连接恰好被分配了之前刚释放的端口,路由器会通过检测"五元组"是否完全一致来区分新旧会话,确保不会串线。

NAT技术的缺陷

由于NAT依赖这个转换表,所以有诸多限制:

  • 无法从NAT外部向内部服务器建立连接;
  • 转换表的生成和销毁都需要额外开销;
  • 通信过程中一旦NAT设备异常,即使存在热备,所有的TCP连接也都会断开;

代理服务器

正向代理

概述

正向代理(forward Proxy)是一种常见的网络🌐代理方式,它位于客户端和目标服务器之间,代表客户端向目标服务器发送请求。然后将请求转发给目标服务器,最后将目标服务器的响应返回给客户端。通过这种方式,正向代理可以实现多种功能,如提供访问速度、隐藏客户端身份、实施访问控制等。

工作原理

  • 客户端将请求发送给正向代理服务器。
  • 正向代理服务器接受请求,并根据配置进行处理,如缓存查找、内容过滤等。
  • 正向代理服务器将处理后的请求转发给目标服务器。
  • 目标服务器出来请求并将响应返回给正向代理服务器。
  • 正向代理服务器将响应返回给客户端。
  • Nginx(反向代理服务器的一种最常见类型)

功能特点

  • 缓存功能:正向代理服务器可以缓存经常性访问的资源,当客户端再次请求这些资源时,可以直接从缓存中获取,提高访问速度。
  • 内容过滤:正向代理可以根据预设的规则对请求或响应进行过滤,如屏蔽广告、阻止恶意网站等。
  • 访问控制:通过正向代理,可以实现对特定网站的访问控制,如限制员工在工作时间访问娱乐网址。
  • 隐藏客户端身份:正向代理可以隐藏客户端的真实IP地址,保护客户端的隐私。
  • 负载均衡:在多个目标服务器之间分配客户端请求,提高系统的可扩展性与可靠性。

反向代理

概述

反向代理服务器是一种网络架构模式,其作为Web服务器的前置服务器,接收来自客户端的请求,并将这些请求转发给后端服务器,然后将后端服务器的响应返回给客户端。这种架构模式可以提升网站性能、安全性、可维护性。

基本原理

反向代理服务器位于客户端和Web服务器之间,当客户端发起请求时,它首先会到达反向代理服务器。反向代理服务器会根据配置的规则将请求转发给后端的Web服务器,并将Web服务器的响应返回给客户端。在这个过程中,客户端并不知道实际与哪个Web服务器进行了交互,它只知道与反向的代理服务器进行了通信。

应用场景

  • 负载均衡:反向代理服务器可以根据配置的负载均衡策略,将客户端的请求分发给多个后端服务器上,已实现负载均衡。这有助于提升网站的整体性能和响应速度,特别在高并发场景下。
  • 安全保护:反向代理服务器可以隐藏后端Web服务器的真实IP地址,降低其被直接攻击的风险。同时它还可以配置防火墙、访问控制列表(ACL)等安全策略,对客户端的请求进行过滤和限制,以保护后端服务器的安全。
  • 缓存加速:反向代理服务器可以缓存回答Web服务器的响应内容,对于重复的请求,它可以直接从缓存中返回响应,而无需再次向服务端发起请求。这可以大大减少服务器的负载,提示网站的响应速度。
  • 内容过滤与重写:反向代理服务器可以根据配置的规则对客户端的请求进行过滤与重写,例如添加或删除请求头】修改请求路径等。这有助于实现一些特定的业务需求,如URL重写、用户认证等。
  • 动静分离:在大学网站中,通常需要将静态资源和动态资源分开处理。通过将静态资源部署在反向代理服务器上(常常是CDN),可以直接从反向代理服务器服务器返回静态资源的响应,而无需再次向后端服务器发送请求。这可以大大提升静态资源的访问速度。

校园网与云服务器的问题【了解】

如果我购买了腾讯云的服务器,使用校内校园网,我在进行访问时是否就是"正向代理服务器(校园网)"+"反向代理服务器"(云)?

这是一个非常典型且敏锐的思维碰撞!直接给你结论:不完全正确,你把这个结构想反了。

在你描述的这个具体场景(校内校园网 + 腾讯云服务器)下,严格来说:

  • 你的校园网不是正向代理服务器。

  • 你的腾讯云服务器不是反向代理服务器(除非你特意去配置它)。

如果非要套用"代理"的概念,你现在的访问模式最准确的称呼是**"客户端-服务器(C/S)直连模式"** ,或者叫**"普通的公网访问"**。

为了让你彻底分清,我们把这两个角色放到你的实际环境里重新"对号入座":

1. 为什么校园网不是"正向代理"?

你可能会想:"校园网不是很多人共用同一个公网IP出口吗?这不就是代理吗?"

关键区别在于"是否主动配置"

  • 正向代理 :需要你在浏览器或电脑系统里手动填写代理服务器的IP和端口 (比如填 proxy.school.edu.cn:8080)。代理服务器会代替你去拿数据,再把数据返回给你。

  • 校园网的NAT(网络地址转换) :你不需要 做任何配置,插上网线就能上网。它是路由器在底层自动帮你做地址替换 (把 192.168.x.x 换成公网IP)。

结论 :校园网只做"网络地址转换(NAT)",不做"代理(Proxy)"。NAT只改数据包的"收发室号(IP地址)",不改"信件内容";而正向代理会解析"信件内容(应用层数据)"。所以,校园网是 NAT网关,不是正向代理服务器。


2. 为什么腾讯云服务器不是"反向代理"?

腾讯云服务器默认就是一台放在机房的物理电脑(云主机)

  • 反向代理 :必须在服务器上额外安装特定软件(如 NginxHAProxy ),并配置规则,让它把收到的请求转发给后面的其他服务器(比如转发给内网的数据库服务器或另一台应用服务器)。

  • 你的云服务器现状 :如果你只是在服务器上部署了一个网站服务(如Tomcat、Node.js),用户直接访问的就是这个服务本身。这里没有"后端服务器"存在,所以不存在"反向"一说。

结论 :你的云服务器此时是 "源站(Origin Server)",不是反向代理服务器。


3. 那完整的实际通信流程是什么样的?

当你用校园网里的电脑,通过SSH或浏览器访问你的腾讯云服务器时,流程是这样的:

  1. 你的电脑(192.168.x.100) 发出请求。

  2. 校园网出口路由器 :执行 NAPT(源地址转换) ,把源IP替换成校园网的公网IP(比如 202.202.x.x)。(这里是NAT,不是代理

  3. 互联网骨干网:数据包经过路由转发,到达腾讯云机房。

  4. 腾讯云服务器(公网IP 110.110.x.x:网卡收到数据包,操作系统将数据交给监听端口的应用程序(比如Nginx或你的Java程序)处理。

  5. 原路返回 :服务器处理完数据,直接将响应包发回给你的校园网公网IP(202.202.x.x),校园网路由器再根据NAPT表项,还原成你的内网IP(192.168.x.100)发给你。


4. 什么时候你的腾讯云服务器会变成"反向代理"?

假设你现在有两台腾讯云服务器:

  • A服务器(公网):安装Nginx,配置反向代理规则。

  • B服务器(内网,无公网IP):部署真正的Java后端程序。

此时 ,用户访问A服务器的80端口,A服务器收到后,自动将请求转发给内网的B服务器。那么,A服务器 才正式扮演了反向代理服务器的角色。

终极总结
你的疑问 实际情况 正确答案
校园网是正向代理吗? 没有手动配置代理,是路由器自动换IP 不是,是NAT网关
云服务器是反向代理吗? 没有配置转发规则,直接处理请求 不是,是源站服务器
这种访问叫什么? 客户端直接访问公网服务器 标准的C/S(客户端/服务器)直连通信

简单记忆法:只有当你显式地在客户端填写了代理IP,或者显式地在服务器配置了转发规则,才算"代理"。否则,统统是"直连(经过NAT)"。

内网穿透

内网穿透,说白了就是解决"内网设备没有公网IP,外网设备怎么主动找过来"的问题

我们前面聊了NAPT(网络地址转换),它让内网设备能主动访问外网,但外网设备想主动连接内网设备(比如你人在公司,想访问家里电脑上的文件)时,就会撞上防火墙或NAT设备的"墙",直接被丢包。内网穿透就是在这堵墙上"打个洞",让外网能钻进来。

为什么需要内网穿透?(现实痛点)

  • 运营商不给公网IP:家庭宽带默认都是内网IP(NAT后的),别人没法直接连你。

  • 路由器防火墙拦截:即使有公网IP,家用路由器默认也会拦截所有从外网主动发起的连接。

  • 动态IP变化:就算有公网IP,运营商隔几天会变一次,你没法天天去记新IP。


内网打洞

不经过服务器转接,而仅通过网络路由实现对端通信。(薅运营商羊毛)

"内网打洞" (通常指 UDP 打洞 / NAT 穿透 )和我们刚才聊的 "内网穿透"亲兄弟,但分工不同

用一个比喻帮你秒懂区别:

  • 内网穿透(Frp/Ngrok) = "打电话给总机,总机转接"。所有数据都得经过中间的总机(云服务器),总机累了你就慢了。

  • 内网打洞(UDP Hole Punching) = "双方同时伸出头喊话,直接对上眼"。不需要总机传话,两人直接建立私聊通道。

"内网打洞"是"内网穿透"中最顶级、最高效的一种实现方式 ,目的是实现 P2P(点对点)直连 ,让数据不经过昂贵的云服务器中转,直接在两台内网设备之间传输。

为什么要"打洞"?(问题的根源)

我们之前讲过,NAT(网络地址转换)设备(家里的路由器)默认只允许内网主动发起的连接通过。

  • 设备 A(内网)想找设备 B(另一个内网):

  • A 发数据给 B 的公网 IP,路由器看到"目的地址是外网",放行。

  • B 的路由器 收到这个数据包时,发现"我内网没人主动找过这个 A",于是直接丢弃数据包(陌生人敲门不开门)。

打洞的目的:骗过 B 的路由器,让它以为"这个 A 是我内网设备主动找过的朋友",从而放行数据。


交换机、集线器

交换机的两大核心功能(进阶)

交换机优化了局域网内发生的频繁碰撞问题。

除了基本转发,交换机在现代网络中还有两个极其重要的功能:

功能一:隔离冲突域,提升性能

在早期的共享式网络中,同一时间只能有一台设备发送数据,否则会碰撞。交换机将每个端口划分为独立的冲突域,使得多台设备可以同时全速收发数据,互不影响。这是交换机取代集线器的根本原因。

功能二:VLAN(虚拟局域网)------逻辑隔离

这是交换机最重要的管理功能。你可以在一台物理交换机上,把端口划分为不同的逻辑组(VLAN),实现相互隔离。

  • 场景 :公司里,财务部和人事部虽然插在同一个交换机上,但通过VLAN配置,财务部的电脑无法直接访问人事部的打印机和文件服务器,除非经过路由器。

  • 好处:提升安全性、减少广播风暴、简化网络管理。

集线器的核心工作逻辑:物理层"广播"

集线器工作在OSI模型的第一层(物理层) ,它不理解MAC地址,也不理解IP地址。它的唯一功能就是**"复制电信号"**:

  • 收到信号:某个端口(比如连电脑A的端口)收到一个电信号。

  • 放大整形:把信号放大,以对抗线路传输中的衰减。

  • 群发所有端口把这个信号原封不动地发送给其他所有端口(除了接收端口)。

人话总结 :集线器就是一个**"多接口的电源插排"**。你在一端说话,它就把声音用电平的形式传到所有插着的设备上,不管这声音是不是喊给对面听的。

经典面试题:

从浏览器发起http请求,到得到网页的整个过程?(越详细越好)

感谢支持,长期连载

欢迎关注

相关推荐
青瓦梦滋1 小时前
Linux高级IO
linux·运维·服务器·网络·网络协议·tcp/ip
xieliyu.3 小时前
HTTPS 加密流程深度解析|从 HTTP 痛点到 TLS 握手全过程
网络·笔记·网络协议·计算机网络·http·https
张人玉3 小时前
基于 C# WinForms + .NET 8 + SQLite + TCP Socket 的多连接通讯调试工具——TCP通讯助手(TcpAssistant)
tcp/ip·sqlite·c#·.net
我爱cope3 小时前
【计算机网络 | 传输层5:TCP 如何实现可靠传输?滑动窗口、累计确认与重传机制】
网络·网络协议·学习·tcp/ip·计算机网络·传输层
蓝速科技3 小时前
固定涉外场景台式翻译机选型与落地指南
网络·人工智能·自然语言处理·语音识别·技术分享
Java小学生丶3 小时前
[开源自荐] ZTShell,一个使用 Tauri 2 + Rust 全程由 AI 开发的跨平台桌面 SSH 工具
linux·网络·centos7·云服务器·开发技巧·资源分享·个人私货
星 海5 小时前
【网络】VirtualBox网络模式
网络·虚拟机·virtualbox·vm
测试猿实操笔记11 小时前
DNS 通俗讲解:域名 ↔ IP 翻译
网络·网络协议·tcp/ip
zhengqweasd12 小时前
流量没跑满、带宽空闲,业务依然卡顿
运维·服务器·网络