以太网报头中的源mac地址可以用来识别发送者吗?

网络工程 以太网 MAC地址 包分析
2022-03-02 16:11:07

我已经在 C/C++ 中编写了原始套接字程序来启动小任务,例如 TCP/IP 3 次握手、UDP、RTMP 等。但是我对 IP 下面的下一层感到好奇,我正在查看以太网标头Wireshark 并注意到有一个源 mac 地址。显然,对原始套接字的一种吸引力是 IP 欺骗。然而,即使在原始套接字中,您也不必指定以太网标头,因为操作系统会为您处理。那么既然它生成了源mac地址,这个源mac地址无论如何都可以用来识别发件人吗?

2个回答

对于使用 MAC 地址的协议(并非所有协议都使用 MAC 地址,有些是 48 位,有些是 64 位),MAC 地址对于具有该地址的主机所在的 LAN 来说是本地的。

第 3 层设备(例如路由器)将剥离第 2 层帧,包括源 MAC 地址和目标 MAC 地址,并丢弃它们。然后,路由器将根据数据包中的第 3 层地址路由第 3 层数据包。当路由器将数据包发送到下一个接口时,它将为新接口创建一个新帧,但它会在没有来自原始第 2 层帧的信息的情况下执行此操作。


显然,对原始套接字的一种吸引力是 IP 欺骗。

这当然不是上诉,而且在许多情况下是非法的。

如果欺骗数据包的接收者与发送者“在线”连接并且安装了合适的软件,则原则上可以记录源 MAC 地址。在实践中,这是不太可能的。

如果您想自己构建完整的以太网数据包(FCS 除外),您可以使用“AF_PACKET”原始套接字。这将让您控制源 MAC 地址。