在以太网数据包中找到的MAC地址如何与TCP / IP数据包相关?

时间:2018-12-28 09:16:46

标签: c sockets networking

我正在做一个实验,并编写了一个C程序,该程序读取所有AF_PACKET SOCK_RAW数据包-表示OSI第2层以太网帧。该程序记录以太网头(MAC地址),IP头,TCP头等内容。

这提出了一个问题-如果以太网层是物理层之前的最低层,那么如何在IP地址层以下的层中解析MAC地址?例如,如果我在加利福尼亚的计算机将TCP / IP数据包发送到纽约的您的计算机,那么以太网报头中的MAC地址是对应于我们的实际MAC地址,还是仅仅是我们单独的计算机与它们各自的路由器之间的MAC地址?

我知道有一种交易,其中机器通过向路由器的MAC地址标识自己并获得IP地址,但是每个以太网数据包都有源MAC地址和目标MAC地址,对此我感到困惑这些MAC地址与哪些机器相关联,因为在通过IP地址首先与您的机器联系之前,我的机器无法获得您机器的MAC地址。

1 个答案:

答案 0 :(得分:1)

它们根本不相关。 Mac地址通常随硬件设备一起提供,并且IP地址由网络管理员(或网络提供商)选择。

为了将一种转换为另一种,使用了两种网络协议:

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

R / ARP通常以相同的方式工作(两种协议):查询主机向本地网络广播一个请求数据包,其中映射的已知部分已填充,而未知部分未填充,而拥有请求地址的主机(或服务器(如果是RARP,则该协议用于配置)将响应请求。

不必使用这种昂贵的协议(广播会在网络中移动很多活动,通常所有主机都会收到广播的通知并代表广播进行一些处理),ARP客户端软件通常会维护一个缓存表MAC地址和IP地址之间的映射关系,避免在条目仍然存在的情况下重新广播(条目有一段存活的时间,因此必须刷新它们,通常需要15分钟。)