跨网段把包交给网关,为什么目标IP不是网关?用隔离实验看清IP与MAC

ARP 协议工作原理(同网段及跨网段) 一、ARP简介 ARP全称是“Address Resolution Protocol”(地址解析协议),ARP作用于以太网的环境之中,以太网环境之中数据的传输依赖的是MAC地址并不是我们所熟悉的IP地址,每个电脑都有一个IP地址记以及一个MAC地址(全球唯一),二者缺一不可,将我们所知道熟悉的IP地址转换为MAC地址就是ARO协议的工作 二、ARP协议在同网段工作原理 在同网段也就是在同一个局域网之中同一个广播域之中,以下统称为局域网,在局域网中,网络传输 在局域网中,网络中实际传输的是 阅读详情

跨网段把包交给网关,为什么目标IP不是网关?用隔离实验看清IP与MAC

学网络时,我经常看到一句话:同网段直接发送,跨网段交给网关。

如果真的把包交给网关,目标地址是不是就该填网关?网关又怎么知道我最终想访问谁?

这个疑问来自两个“目标”混在一起:IP包的最终目标,和当前这段链路上以太网帧的接收者。

这次不改家庭路由器。我们在 Ubuntu 的隔离网络里建一台主机 A、一台路由器 R、一台远端主机 B,抓到两处实际帧,再用一个断路对照确认网关的作用。

1. 先搭一张没有互联网的网络

环境为 WSL 的 Ubuntu-24.04,内核 5.15.167.4-microsoft-standard-WSL2,iproute2 6.1.0。

三个网络命名空间只用虚拟网线 veth 相连,没有物理上联,也没有 NAT。地址使用文档示例网段,不需要公网或家里的宽带账号。

节点接口地址默认网关
A / eth0192.0.2.2/24192.0.2.1
R / left192.0.2.1/24本实验不需要
R / right198.51.100.1/24本实验不需要
B / eth0198.51.100.2/24198.51.100.1

R 只在自己的命名空间里开启 IPv4 转发。B 的返回路由也必须配置好,否则 A 的请求能到达 B,回复却未必能回到 A。

隔离实验拓扑与两处实际帧的对照

Linux 网络命名空间隔离网络接口、路由等资源。这里的删路由操作只作用于新建的 A,不触及 WSL 宿主或 Windows 网络。network_namespaces 手册

2. 掩码怎样帮助判断“同网段”?

192.0.2.2/24 的 IPv4 掩码是 255.255.255.0。地址与掩码按位与,得到网络前缀:

192.0.2.2      & 255.255.255.0 = 192.0.2.0
192.0.2.1      & 255.255.255.0 = 192.0.2.0
198.51.100.2   & 255.255.255.0 = 198.51.100.0

所以在这张简单网络里,A 到 R 的左侧地址属于本地直连网络;B 则不在其中。

但真实系统不是每次只拿自己的掩码做一个“同/不同”的判断。配置地址后,系统会有相应的直连路由;发送时还要查询路由表,可能存在更具体的路由和其他策略。

掩码解释直连网络的范围,路由表决定这次发送的下一跳。 不要把入门口诀当成忽略全部路由配置的规则。

3. 先看系统怎么选,再看实际怎么发

实验脚本内部,a 保存新建的 A 命名空间名称。下面这些命令在命名空间存活期间执行,不是在实验退出后直接照抄变量名。

ip -n "$a" route get 192.0.2.1
ip -n "$a" route get 198.51.100.2

实际输出的关键字段是:

192.0.2.1 dev eth0 src 192.0.2.2
198.51.100.2 via 192.0.2.1 dev eth0 src 192.0.2.2

第一条没有额外的 via,属于直连选路;第二条明确指定经由 192.0.2.1。ip route get 查询的是内核对这个目标的路由解析结果,并不等于已经成功通信。ip-route 手册

接下来真正发送一次 ICMP Echo Request,并分别在 A 的 eth0 出口、R 的 right 出口观察。两处记录如下,MAC 是实验手动配置的本地管理地址,不是家里设备的地址。

字段A发出时R向B转发时
帧的源MAC02:00:00:00:00:10,A02:00:00:00:00:20,R右侧
帧的目标MAC02:00:00:00:00:11,R左侧02:00:00:00:00:21,B
IP源地址192.0.2.2192.0.2.2
IP目标地址198.51.100.2198.51.100.2
TTL6463
ICMP序号11

这次没有 NAT,所以 IP 源、目标地址都没有被转换。R 仍然会减小 TTL、更新 IPv4 头校验和;“IP目标不变”不等于“IP头所有字段都不变”。校验和更新属于协议机制说明,本次采集器没有把它列为验证字段。

4. 原来“交给网关”发生在这一层

A 的 IP 包里保留最终目标 B:

IP目标:198.51.100.2

但 A 当前只能在自己的链路上发送以太网帧。路由结果告诉它:下一跳是 R 的左侧接口。因此这一跳的帧以 R 左侧的 MAC 为目标。

R 收到后,根据包里的最终目标查询自己的路由,从 right 接口发送另一帧。这一段链路直接连着 B,帧的目标 MAC 就变成 B。

可以把两层理解为:

IP目标:最终要送到哪里?
当前帧目标:这一段链路先交给谁?

以太网上的 IPv4 通信通常通过 ARP 获取下一跳对应的 MAC。本次 A 的邻居表只出现了网关 192.0.2.1 -> 02:00:00:00:00:11,没有出现远端 B 的 MAC。ARP规范 RFC 826

注意证据边界:邻居表证明缓存了这个映射;采集器没有保存 ARP 请求/应答,不能说我们已经展示了完整 ARP 交换过程。IPv6 也不能照搬这部分,它使用邻居发现机制而非 ARP。

5. 删除默认路由,为什么局域网还通?

有了前面的认识,可以做一个有明确预测的实验:

只删 A 的默认路由,直连路由保留。A 还能访问同网段的 R,但不能再访问另一个子网的 B。

在 A 命名空间内部执行:

ip -n "$a" route del default
ip netns exec "$a" ping -c 1 -W 2 192.0.2.1
ip -n "$a" route get 198.51.100.2
ip netns exec "$a" ping -c 1 -W 2 198.51.100.2

实际结果:

操作结果
ping同网段R1发1收,成功
查询到B的路由Network is unreachable
ping Bconnect: Network is unreachable

这里不是“B收到了但没有回复”,也不是“已经发出然后超时”。A 当前就没有可用于这个目标的路由。

排障时可以先把失败位置分开:本次删路由得到的是“发送前就找不到路径”;DHCP错误网关实验则保留了路由,但下一跳地址不存在,邻居解析停在 INCOMPLETE。两者都可能让人觉得“网络不通”,却需要检查不同的配置。这里是对两组已有实验的比较,不是新增抓包结论。

恢复 A 的默认路由后,再 ping B,得到 1 发 1 收。这组成功、失败、恢复的对照,比单次 ping 更能说明默认路由在这张拓扑里的作用。

隔离实验真实日志的节选排版

图片是实验日志节选的排版,不是终端窗口截图。它展示的虚拟链路延迟不用于判断家庭宽带速度。

6. 验证程序为什么这样设计?

我们没有在家里的 LAN 上制造故障,而是把故障限制在三个新建命名空间里。命名空间名称带随机标识,脚本只清理本次创建的资源,不删除别人的环境。

脚本做三层验证:

  1. 选路验证:比较直连目标和跨网段目标的 ip route get。
  2. 帧字段验证:对两处出站 ICMP 请求做断言,检查 IP目标不变、MAC目标改变、TTL减1。
  3. 因果对照:删默认路由,确认直连可达而远端失败;恢复后再次确认可达。

Ubuntu 里没有预装 tcpdump,所以这次使用 Python 标准库的 AF_PACKET 原始套接字,只监听隔离实验接口。采集器限定出站 IPv4 ICMP Echo Request 和目标 B,保存首个符合条件的帧字段。

它不是通用抓包工具:只适合这个没有 VLAN、没有隧道的实验,不能拿去解析任意网络流量。需要广泛协议分析时应使用成熟工具,而不是不断扩展这个小程序。

为了避免“刚启动采集器就发送,结果没抓到”的时序问题,采集器在绑定接口后写就绪标记,主脚本看到两处标记才发送请求。采集完成等待进程退出,异常时同样执行清理。

完整源码、依赖准备和运行命令放在文末附录。正文中的命名空间变量由编排脚本创建,不需要在真实网卡上手动制造故障。

7. 把口诀补全

“同网段直接发,跨网段交给网关”可以帮助入门,但最好继续追问:

  • 这次匹配的是哪条路由?是否还有更具体的路由?
  • IP最终目标是谁?当前链路的下一跳是谁?
  • 反方向有没有路由?中间设备有没有转发和过滤规则?

这篇实验说明:把包交给网关,不需要把IP最终目标改成网关;下一跳与最终目标属于两个层次。

我们验证的是没有 NAT 的两个子网之间的 IPv4 转发,不是所有网络配置的验收,也不证明家庭光猫、OpenWrt 或外网入口已经配置正确。

附录:完整源码与复现

以下是完整文件,不需要先下载仓库。环境限定为 Ubuntu 24.04 amd64(本次为 WSL2),需要 Bash、iproute2、ping、Python 3、sysctl、timeout 和 dpkg-deb;不能把 Windows PowerShell 当成 Bash。实验需要 root 和创建网络命名空间的权限,普通受限容器可能无法运行。不要在生产路由器上运行。

在 Linux 中建立任意工作目录,例如:

mkdir -p ~/network-lab-next-hop/scripts
cd ~/network-lab-next-hop

将下面每个代码块按标题文件名放入 scripts 目录,使用 UTF-8 和 LF 换行。脚本按自身位置寻找文件,不依赖我的 D 盘路径。本篇不需要 dnsmasq、BusyBox、nftables 或 conntrack,只使用系统已有工具与 Python 标准库。

文件:scripts/verify-network-next-hop.sh

#!/usr/bin/env bash
set -euo pipefail
base=$(cd -- "$(dirname -- "$0")/.." && pwd)
out="$base/data/verification/network-next-hop-$(date +%Y%m%d-%H%M%S)"
mkdir -p "$out"
exec > >(tee "$out/stdout.txt") 2>&1
for tool in ip ping python3; do command -v "$tool" >/dev/null; done
test "$(id -u)" = 0
token=$(cat /proc/sys/kernel/random/uuid)
a="bl-${token:0:8}-a"
r="bl-${token:0:8}-r"
b="bl-${token:0:8}-b"
created=()
pids=()
cleanup() {
  for pid in "${pids[@]}"; do kill "$pid" 2>/dev/null || true; wait "$pid" 2>/dev/null || true; done
  for ns in "${created[@]}"; do ip netns del "$ns"; done
}
trap cleanup EXIT
for ns in "$a" "$r" "$b"; do ip netns add "$ns"; created+=("$ns"); ip -n "$ns" link set lo up; done
# All veth endpoints live in new namespaces, never on the host network.
ip -n "$a" link add eth0 type veth peer name left netns "$r"
ip -n "$r" link add right type veth peer name eth0 netns "$b"
ip -n "$a" link set eth0 address 02:00:00:00:00:10 up
ip -n "$r" link set left address 02:00:00:00:00:11 up
ip -n "$r" link set right address 02:00:00:00:00:20 up
ip -n "$b" link set eth0 address 02:00:00:00:00:21 up
ip -n "$a" addr add 192.0.2.2/24 dev eth0
ip -n "$r" addr add 192.0.2.1/24 dev left
ip -n "$r" addr add 198.51.100.1/24 dev right
ip -n "$b" addr add 198.51.100.2/24 dev eth0
ip -n "$a" route add default via 192.0.2.1
ip -n "$b" route add default via 198.51.100.1
ip netns exec "$r" sysctl -qw net.ipv4.ip_forward=1
echo '=== Versions ==='
uname -r
ip -V
echo '=== Same-subnet route ==='
ip -n "$a" route get 192.0.2.1
ip netns exec "$a" ping -c 1 -W 2 192.0.2.1
echo '=== Remote-subnet route ==='
ip -n "$a" route get 198.51.100.2
ip netns exec "$a" python3 "$base/scripts/capture-lab-icmp.py" eth0 "$out/a-frame.json" "$out/a.ready" &
pids+=("$!")
ip netns exec "$r" python3 "$base/scripts/capture-lab-icmp.py" right "$out/r-frame.json" "$out/r.ready" &
pids+=("$!")
for attempt in $(seq 1 100); do
  if test -f "$out/a.ready" && test -f "$out/r.ready"; then break; fi
  sleep 0.05
done
test -f "$out/a.ready"
test -f "$out/r.ready"
ip netns exec "$a" ping -c 1 -W 2 198.51.100.2
for pid in "${pids[@]}"; do wait "$pid"; done
pids=()
echo '=== A neighbor table ==='
ip -n "$a" neigh show
echo '=== Remove only A lab default route ==='
ip -n "$a" route del default
ip netns exec "$a" ping -c 1 -W 2 192.0.2.1
if ip -n "$a" route get 198.51.100.2; then echo 'Unexpected remote route'; exit 1; fi
if ip netns exec "$a" ping -c 1 -W 2 198.51.100.2; then echo 'Unexpected remote reachability'; exit 1; fi
ip -n "$a" route add default via 192.0.2.1
ip netns exec "$a" ping -c 1 -W 2 198.51.100.2
python3 - "$out" <<'PY'
import json
import sys
from pathlib import Path
p = Path(sys.argv[1])
a = json.loads((p / 'a-frame.json').read_text())
r = json.loads((p / 'r-frame.json').read_text())
assert a['ethernet_destination'] == '02:00:00:00:00:11'
assert r['ethernet_destination'] == '02:00:00:00:00:21'
assert a['ip_source'] == r['ip_source'] == '192.0.2.2'
assert a['ip_destination'] == r['ip_destination'] == '198.51.100.2'
assert a['icmp_sequence'] == r['icmp_sequence']
assert a['ttl'] == r['ttl'] + 1
(p / 'result.json').write_text(json.dumps({'passed': True, 'a_frame': a, 'router_frame': r,
    'scope': 'isolated Linux namespaces, no NAT, no host routing changes'}, indent=2))
print('ASSERTIONS PASSED: IP destination unchanged, next-hop MAC changed, TTL decreased by one')
PY
echo "Evidence: $out"

文件:scripts/capture-lab-icmp.py

import json
import socket
import struct
import sys
from pathlib import Path

interface, output, ready = sys.argv[1:]
with socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(3)) as sock:
    sock.bind((interface, 0))
    sock.settimeout(10)
    Path(ready).touch()
    while True:
        frame, metadata = sock.recvfrom(65535)
        if metadata[2] != socket.PACKET_OUTGOING or len(frame) < 42:
            continue
        if frame[12:14] != b'\x08\x00' or frame[23] != 1:
            continue
        header_length = (frame[14] & 15) * 4
        if frame[14 + header_length] != 8:
            continue
        destination = socket.inet_ntoa(frame[30:34])
        if destination != '198.51.100.2':
            continue
        result = {
            'interface': interface,
            'ethernet_destination': ':'.join(f'{x:02x}' for x in frame[:6]),
            'ethernet_source': ':'.join(f'{x:02x}' for x in frame[6:12]),
            'ip_source': socket.inet_ntoa(frame[26:30]),
            'ip_destination': destination,
            'ttl': frame[22],
            'icmp_sequence': struct.unpack('!H', frame[14 + header_length + 6:14 + header_length + 8])[0],
        }
        Path(output).write_text(json.dumps(result, indent=2), encoding='utf-8')
        print(json.dumps(result))
        break

运行与结果判断

在上述工作目录执行:

sudo bash scripts/verify-network-next-hop.sh

输出保存在工作目录的 data/verification 下,以运行时间命名。正常完成会显示断言通过;还应检查本次目录的 result.json 中 passed 为 true。预设的失败对照属于实验内容,不意味着脚本整体失败;依赖缺失、权限不足或断言失败则不能算通过。不要使用 python -O 或 PYTHONOPTIMIZE 禁用断言。

脚本只修改自己新建的随机名称网络命名空间,正常退出及普通错误退出会执行清理。断电、强制终止或 kill -9 不能保证清理;可用 ip netns list 检查,只处理确认属于本次实验的资源,不要批量删除其他命名空间。输出中的地址来自隔离实验,不需要填写家庭账号、真实设备地址或认证信息。

【计算机网络】——ARP协议工作过程(跨网段) 请简要说明ARP的作用; 结合上图叙述ARP协议的工作过程(PC1→PC2) ARP的作用:完成主机或路由器的IP地址到MAC地址的映射。 ARP协议工作过程(简述): ①PC1要向PC2发数据,数据封装成帧时发现没有PC2的MAC地址;判断出PC1和PC2不在同一网段,PC1查询ARP缓存表看是否有网关的MAC地址,发现没有;PC1以广播的形式在本网段发送ARP请求帧,R1收到请求,先把PC1 IP地址和PC1 MAC地址写入自己的ARP缓存表,然后把自己的MAC地址封装在ARP应答帧中,以单播的形 阅读详情

相关推荐

ARP跨网段广播

ARP跨网段广播 如果源主机和目的主机不在同一网段,ARP请求的广播帧无法穿过路由器,源主机如何与目标主机实现通信? 补充一下问题,避免因问题不完整而出现误解。 ----------------------------------------------------------------------------------------------不同网段的主机通信...

c1sdn19的专栏 1406

有了 IP 地址,为什么还要用 MAC 地址?

我认为,IP地址和MAC地址可以类比生活中寄快递的过程。 在整个网络中数据被封装成数据报文进行发送,就像我们生活中寄快递时将物品放进包裹中。而数据在路由器之间的跳转也可以看作是不同地区快递小哥对物流的交接。 IP地址 ip地址等价于快递包裹上的收件人地址。 快递员通过收件人地址将包裹在出发地到目的地之间连出一条线,然后通过不同地区之间的物流中转最后将包裹送到收件人的手中。 从上图的粗箭头所描述的路径便可达到目的地址,陕西省-西安市-xx县-xx街道-…。 同理,ip地址也具备此功能,通过IP地址的网络位

专注于C/C++/Linux领域创作 3万+

计算机网络实验二 ARP协议以及IP地址和MAC地址关系

计算机网络实验二 ARP协议以及IP地址和MAC地址关系

gui_bjyxszd的博客 4009

ARP的工作过程(同网段和跨网段时ARP分别都如何工作的,以及二层和三层设备的MAC地址表,ARP表和路由表)

当我们需要转发数据的时候除了需要对方的目的IP地址,还需要知道对方的MAC地址,那么正常情况下我们优先会在本地ARP表中查看是否有目的IP对应的MAC地址。是交换机等网络设备记录MAC地址和端口的映射关系,代表了交换机从哪个端口学习到了某个MAC地址,交换机把这个信息记录下来,后续交换机需要转发数据的时候就可以根据报文的目的MAC地址去根据MAC地址表转发数据,先把这些信息添加在本地的ARP表中(交换机本地有MAC地址表,路由器和PC等三层设备是ARP表,路由器特有的是路由表),

tianwei2125的博客 7705

VINS-Mono 时延估计论文翻译

Online Temporal Calibration for Monocular Visual-Inertial Systems 摘要 精确的状态估计是机器人导航、自主驾驶、虚拟现实和增强现实等各种智能应用的基础模块。视觉惯性融合是近年来流行的六自由度状态估计技术。记录不同传感器测量值的时刻对系统的鲁棒性和准确性至关重要。在实践中,每个传感器的时间戳通常会受到触发和传输延迟的影响,从而导致不同传感器之间的时间偏差(时间偏移)。这种时间偏移严重影响传感器融合的性能。为此,我们提出了一种标定视觉和

weixin_39061796的博客 1255

光模块的封装工艺有哪些?

COB封装传统的单路10Gb/s或25Gb/s速率的光模块采用SFP封装将电芯片和TO封装的光收发组件焊接到PCB板上组成光模块。但对于40G及以上速率的高速光模块,受激光器速率限制(多为25G),主要通过多通道并行实现,如40G由4×10G实现,而100G则由4×25G实现。蝶形封装:壳体通常为长方体,结构及实现功能通常比较复杂,可以内置制冷器、热沉、陶瓷基块、芯片、热敏电阻、背光监控,并且可以支持所有以上部件的键合引线。BOX封装属于蝶形封装的一种,用于多通道并行封装。

WaytoICT- Explore ICT Technology, Build Your Tech Path 3804

跨网段通信过程

第一章:实验准备 第一节:TOP准备 第二节:IP地址规划表 第二章:正式实验 步骤一:PC1发出ARP的请求包 步骤二:路由器从F0/0发出的ARP回应包 步骤三:PC1发出的ICMP的请求包 步骤四:路由器发出的ARP request包 步骤五:PC2发出的ARP request包 步骤六:PC1成功封装并发出的第二个ICMP请求包 步骤七:路由器从F0/1重新封装并转发请...

智慧云工具箱的博客 8798

C语言入门—初识C语言

一、C语言概述 1、什么是C语言 语言是用来交流沟通的,有一方说,有一方听。必须要两方参与。(自言自语的除外) 语言是人与人交流,而C语言是人与机器交流 语言有独特的语法规则和定义,双方必须遵循这些规则和定义才能实现真正的交流。 接下来首先了解下计算机的组成: 2、计算机介绍 2.1、计算机结构组成 2.2、计算机系统组成 2.3、程序的指令 指令是对计算机进行程序控制的最小单元 计算机的指令系统是指所有指令的集合 程序是指为完成某一项特定任务而用某种言语编写的一组指令序列 3、C语言发展历程 3.

jun319817的博客 1033

验证跨网段通信中,目标主机的网关配置对数据包接收的影响

验证跨网段通信中,目标主机的网关配置对数据包接收的影响 验证跨网段通信中目标主机的网关配置对数据包接收的影响 前言 准备实验环境 将Linux主机配置为路由器 hostA主机的网络配置 hostB主机的网络配置 hostC主机的网络配置 不在同一物理网段内的跨网段通信 目标主机正确配置了网关数据包的接收情况 目标主机没有配置网关数据包的接收情况 目标主机随意配置网关数据包的接收情况 在同一物理网段内

sxy2475的博客 1057

从零构建EtherCAT从站:SSC工具配置与TwinCAT3 PDO/SDO调试实战

本文详细介绍了从零构建EtherCAT从站的完整流程,重点讲解SSC工具配置与TwinCAT3 PDO/SDO调试实战。通过解析EtherCAT通信机制、PDO与SDO的核心概念,提供SSC工具配置技巧、XML文件生成与校验方法,以及TwinCAT3环境下的调试经验,帮助开发者高效完成EtherCAT从站开发与优化。

weixin_42520573的博客 336

Visio 2013安装遇阻?手把手教你搞定注册表权限错误1402(附64位系统特殊处理)

本文详细解析了Visio 2013安装过程中常见的注册表权限错误1402问题,特别是在64位系统下的特殊处理方法。通过分步指导如何修改注册表权限、处理Wow6432Node分支以及使用高级工具如subinacl,帮助用户顺利完成安装并避免常见连带问题。

t8u9v0w1x的博客 540

同网段及跨网段主机间通信原理

在当今的以太网络通信中,在IP数据包中有两个必不可少的地址,那就是IP地址和网卡地址(即MAC地址),在数据包中,无论是IP地址还是MAC地址,都有源地址和目标地址,因为通信是双方的,所以就必须同时拥有双方的地址!在同一IP网络中通信,将会发生以下事件: 1、同网段主机间通信 主机A与主机B通信,这时主机A肯定首先要封装这些需要发给主机B的数据包,那么对于主机A来说,自己的IP地址和MAC自己肯定能够轻易得到,对于主机B的IP地址这时主机A也应该知道,要不然它就不清楚...

qq_36570733的博客 1万+

Vim 入门到够用:Linux 文本编辑器的三种模式、常用操作与实战技巧

i 进入编辑模式Esc 退出编辑模式回到命令模式: 从命令模式进入底行模式编辑,不一定非得“打开就直接打字”。一旦你接受了“模式”这件事,后面很多操作都会顺起来。学 Vim,不要追求一次学全,先把“命令模式—编辑模式—底行模式”这条主线练熟。只要这条主线通了,后面的复制、删除、搜索、替换,都是顺手补上去的能力。

Web安全工具库 797

为什么有了 IP 地址,还要配置默认网关?

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部前阵子一个客户说,新装的服务器IP配好了,同VLAN的设备都能通,但就是访问不了数据库和互联网。我一看,IP和子网掩码都对,唯独没配默认网关。加上ip route-static 0.0.0.0 0.0.0.0 192.168.10.1,秒通。就这么一条命令,卡了他半天。。今天,咱不讲术语,就用“寄快递”的逻辑,把IP地址和默认网关的关系给你讲透。说到IP地址,来分享一个干货满满的pdf学习资源,也涵盖了子网划分。

1171

FFmpeg + Qt 实现摄像头采集与 MP3 背景音乐 RTSP 推流

在直播或视频监控场景中,我们经常需要将摄像头画面与背景音乐混合后推送到 RTSP 服务器。本文将详细介绍如何使用Qt框架结合摄像头实时采集(Windows 下使用dshow,Linux 使用v4l2视频预览(显示为 QImage)视频 H.264 编码 + RTSP 推流从 MP3 文件读取音频,重采样为 AAC 编码并推流循环播放音频文件解决中文文件路径打开失败的问题文章将剖析每个技术环节的关键代码,并给出完整的类实现。

weixin_45397344的博客 504

深入解析雪球网股票行情数据爬取:基于WebSocket与API的实时数据获取技术实践

本文详细介绍了如何使用Python爬虫技术获取雪球网的股票行情数据,涵盖了WebSocket实时数据连接和RESTful API接口调用两种主要技术方案。完整的WebSocket客户端,支持实时行情订阅和数据处理功能丰富的API客户端,支持多种数据类型的获取数据存储和管理系统,使用SQLite进行数据持久化实时监控和预警系统,支持自定义预警规则技术指标计算,提供基本的数据分析功能。

2201_76125261的博客 1252

ARP协议工作原理[同网段及跨网段]

一、ARP在同个网段下的工作原理         首先,每台主机都会在自己的ARP缓冲区中建立一个 ARP列表,以表示IP地址和MAC地址的对应关系。当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP列表中是否存在该 IP地址对应的MAC地址,如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP

believe的专栏 9523

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

IP跨网段协议转换网关WTGNet-NAT

WTGNet-NAT协议转换网关采用多路通讯设计,实现数据共享具备1个RS485串口、1个两口以太网交换机接口和一个以太网通讯接口。不对原系统做任何硬件和软件修改,不影响原系统通讯,可以设备的IP地址和通讯端口的转换。

望天观科技_lookskys 1700

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

arp 已知mac找ip_ARP协议在同网段及跨网段下的工作原理

前言:ARP协议是在链路层通讯中,已知目标IP地址,但是,仅有IP 地址是不够的,因为IP数据报必须封装成帧才能通过数据链路进行发送,而数据帧必须要有目的MAC地址,每一个网络设备在数据封装前都需要获取下一跳的MAC地址。IP地址由网络层提供,MAC地址通过ARP协议来获取。ARP协议是TCP/IP协议簇的重要组成部分,它能够通过目的IP地址获取目标设置的MAC地址,从而实现数据链路层的可达性。一...

weixin_35853975的博客 1308

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

有了IP地址为什么还要有MAC地址?这篇文章为你解惑

我们前面讲过IP地址,说IP地址能够让我们在网络世界里找到我们的目标主机,但是有了IP地址为什么还要MAC地址呢?IP地址和MAC地址又有什么差别呢? 我认为IP地址和MAC地址可以类比生活中寄快递的过程。 我们知道数据存在封装和解封装的过程,当一个应用层数据经过传输层、网络层、数据链路层、物理层的封装就到达了我们的主机,主机经过解封装又成为了我们可以识别的数据,就像我们生活中寄快递时将物品放进包裹中,包裹经过快递小哥一次次的转接到达我们的手中,而数据在路由器之间的跳转也可以看作是不同地区快递小哥对物流

最铁头的网工博客 5626

php跨网段获取mac地址吗,局域网IP地址和MAC地址绑定,跨网段IP-MAC绑定。

局域网的IP地址和MAC地址绑定,一般选择在交换机或者路由器上进行配置。交换机的IP-MAC地址绑定一般是基于端口的。主要用于绑定各个交换机端口的IP地址/MAC地址。支持该功能的交换机不多,配置和维护比较复杂,一般不推荐。路由器的IP-MAC绑定比交换机要方便些。可以直接和路由器的DHCP服务结合,给绑定的MAC地址分配固定IP。但是路由器最大的问题就是无法进行跨网段绑定。一个有效的IP-MAC...

weixin_32866237的博客 1016

数据包跨网段旅行记,IP 不变 MAC 变

很多小伙伴想要一窥网络安全整个体系,这里我分享一份打磨了4年,已经成功修改到4.0版本的《平均薪资40w的网络安全工程师学习路线图》对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。压箱底的好资料,全面地介绍网络安全的基础理论,包括逆向、八层网络防御、汇编语言、白帽子web安全、密码学、网络安全协议等,将基础理论和主流工具的应用实践紧密结合,有利于读者理解各种主流工具背后的实现机制。注意这里的关键点:虽然最终要去的是西天,但第一跳的物理目的地必须是路由器。则是脚下每一步实际行走的道路。

2501_90744270的博客 282

ARP协议在同网段及跨网段下的工作原理

一、ARP在同个网段下的工作原理          首先,每台主机都会在自己的ARP缓冲区中建立一个 ARP列表,以表示IP地址和MAC地址的对应关系。当源主机需要将一个数据包要发送到目的主机时,会首先检查自己 ARP列表中是否存在该 IP地址对应的MAC地址,如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址。此ARP请求数据包里包括源主机的I

weixin_42815846的博客 1460

计算机网络实验:(四)ARP协议以及IP地址和MAC地址关系

本实验通过构建包含两个网络的互联环境,深入研究了ARP协议的工作机制。实验重点观察了同网段和跨网段通信时的ARP请求/应答过程,记录了数据包中源/目的IP与MAC地址的变化。结果表明:ARP协议仅在局域网内有效,跨网段通信需通过路由器转发;在PC0向PC4的ICMP通信中,源/目的IP保持不变,而MAC地址在经路由器后发生转换。实验验证了ARP协议实现IP-MAC地址解析的关键作用,同时揭示了路由器在网络互连中的核心功能,深化了对网络分层通信原理的理解。

L18633789665的博客 918
上一篇: 插入排序为什么这样写?从腾位置到二分,再到希尔排序
下一篇: 简单选择排序:交换很少,为什么还是O(n²)?
咔_
博客等级 码龄4年 948粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值