我在 python-3.5 中有这个简单的代码:
import socket
sock = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.ntohs(3))
raw_data, addr = sock.recvfrom(65536)
recvfrom() 在 raw_data 变量中返回在套接字上接收到的数据,并在 addr 变量中返回一个元组。
这个返回的元组(addr)有5个元素,我找不到不同元素的含义。
addr[0] 包含接收 raw_data 的接口的名称。
addr[1] 包含收到的以太网类型。
addr[4]包含发送者的第2层地址(据我所知)。
元素addr[2]和addr[3]中包含的值是什么?
第三个与您看到的发件人地址有某种关系:
('eth0', 2048, 4, 1, b'RT\x00\x96\x9d\x16')
('eth0', 2054, 1, 1, b'\x00\x10t"\x82|')
('eth0', 2048, 0, 1, b'l;k`g0')