gpt4 book ai didi

c - 以太网数据包中的 MAC 地址与 TCP/IP 数据包有何关联?

转载 作者:行者123 更新时间:2023-11-30 19:03:29 25 4
gpt4 key购买 nike

我当时正在做一个实验,编写了一个 C 程序来读取所有 AF_PACKET SOCK_RAW 数据包 - 意味着 OSI 第 2 层以太网帧。该程序记录以太网 header (MAC 地址)、IP header 、TCP header 等内容。

这就提出了一个问题 - 如果以太网层是物理层之前的最低层,那么 IP 地址层以下的层中的 MAC 地址是如何解析的?例如,如果我在加利福尼亚的机器向您在纽约的机器发送 TCP/IP 数据包,则以太网 header 中的 MAC 地址是否对应于我们的实际 MAC 地址,或者只是我们单独的计算机及其各自路由器之间的 MAC 地址?

我知道有一个事务,其中一台机器通过路由器的 MAC 地址来识别自己,并获得一个 IP 地址,但每个以太网数据包都有一个源和目标 MAC 地址,我很困惑这些 MAC 地址与哪些机器相关联,因为在第一次通过 IP 地址联系您的机器之前,我的机器不可能获得您机器的 MAC 地址。

最佳答案

他们根本不相关。 MAC地址一般是硬件设备自带的,IP地址是由网络管理员(或网络提供商)选择的。

要将一种协议(protocol)转换为另一种协议(protocol),需要使用两种网络协议(protocol):

  • ARP((A)地址(R)解析(P)协议(protocol))是几乎所有基于以太网的安装中强制实现的协议(protocol)。它允许您获取高级 IP 本地网络地址的匹配 MAC 地址。它基于广播,通常在您(尚)不知道连接到本地网络的主机的以太网地址时使用。对于远程主机,您不需要它们的 MAC 地址,而是需要将数据包驱动到这些目标的网关地址。
  • RARP((R)反向 ARP)安装不那么频繁。它允许从 MAC 地址获取 IP 地址。它通常在实现自动配置的网络中实现。您通常使用它来获取您自己的 IP 地址(通常有一种简单的方法来获取您的硬件 MAC 地址,但如果您尚未将其存储在永久存储中,则没有如此简单的方法来获取您的 IP 地址) ) 该协议(protocol)的使用率非常低,因为它已被 DHCP 或 BOOTP 协议(protocol)取代,这些协议(protocol)不仅允许获取 IP 地址,还允许获取更多参数。

R/ARP 通常以相同的方式工作(两种协议(protocol)):查询主机向本地网络广播一个请求数据包,其中填充了映射的已知部分,未填充未知部分,并且具有所请求地址的主机(或 RARP 情况下的服务器(因为该协议(protocol)用于配置目的)应答请求。

为了不必使用这种昂贵的协议(protocol)(广播在网络中移动大量事件,因为通常所有主机都会收到广播通知并代表它进行一些处理),ARP 客户端软件通常会维护一个缓存表MAC地址和IP地址之间的映射,避免在条目处于事件状态时重新广播(条目有一个生存时间,因此必须刷新,通常为15分钟。)

关于c - 以太网数据包中的 MAC 地址与 TCP/IP 数据包有何关联?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53956122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com