我正在做一个实验,并编写了一个C程序,该程序读取所有AF_PACKET
SOCK_RAW
数据包-表示OSI第2层以太网帧。该程序记录以太网头(MAC地址),IP头,TCP头等内容。
这提出了一个问题-如果以太网层是物理层之前的最低层,那么如何在IP地址层以下的层中解析MAC地址?例如,如果我在加利福尼亚的计算机将TCP / IP数据包发送到纽约的您的计算机,那么以太网报头中的MAC地址是对应于我们的实际MAC地址,还是仅仅是我们单独的计算机与它们各自的路由器之间的MAC地址?
我知道有一种交易,其中机器通过向路由器的MAC地址标识自己并获得IP地址,但是每个以太网数据包都有源MAC地址和目标MAC地址,对此我感到困惑这些MAC地址与哪些机器相关联,因为在通过IP地址首先与您的机器联系之前,我的机器无法获得您机器的MAC地址。
答案 0 :(得分:1)
它们根本不相关。 Mac地址通常随硬件设备一起提供,并且IP地址由网络管理员(或网络提供商)选择。
为了将一种转换为另一种,使用了两种网络协议:
R / ARP通常以相同的方式工作(两种协议):查询主机向本地网络广播一个请求数据包,其中映射的已知部分已填充,而未知部分未填充,而拥有请求地址的主机(或服务器(如果是RARP,则该协议用于配置)将响应请求。
不必使用这种昂贵的协议(广播会在网络中移动很多活动,通常所有主机都会收到广播的通知并代表广播进行一些处理),ARP客户端软件通常会维护一个缓存表MAC地址和IP地址之间的映射关系,避免在条目仍然存在的情况下重新广播(条目有一段存活的时间,因此必须刷新它们,通常需要15分钟。)