首页 > 解决方案 > 尝试在 Python 3 中使用原始套接字来盲目发送 IP 包,但不断获取 ARP 查找如何禁用

问题描述

我正在尝试在点对点网络上使用 Python 3 发送 IP 包 IE 主机和客户端通过静态 IP 直接相互连接。

我正在使用以下代码:

import socket

class Client:

    def __init__(self):
        self._sock = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_RAW)
        self._sock.bind(('192.168.1.10',0))

    def send(self, data):
        data_to_send = bytes([0x0,0x1C,0x23,0x17,0x4A,0xCB,0x00,0x50,0xB6,0x0D,0x35,0x9F,0x08,0x00,0x45,0x00,0x00,0x2E,0x00,0x00,0x40,0x00,0x40,0x00,0xB7,0x6A,0xC0,0xA8,0x01,0x0A,0xC0,0xA8,0x01,0x0B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00])
        self._sock.sendto(data_to_send, ('192.168.1.11', 0))

但是,每次我尝试发送包时,我总是会得到 ARP 查找(并且包永远不会被传输)。

1   0.000000    GoodWayI_0d:35:9f   Broadcast   ARP 42  Who has 192.168.1.11? Tell 192.168.1.10
2   0.981801    GoodWayI_0d:35:9f   Broadcast   ARP 42  Who has 192.168.1.11? Tell 192.168.1.10
3   1.981830    GoodWayI_0d:35:9f   Broadcast   ARP 42  Who has 192.168.1.11? Tell 192.168.1.10

如何避免这些查找并盲目发送包裹?

看来我的搜索失败了,因为我找不到太多关于 Python 3 Sockets 的文档。

问候

标签: python-3.xsockets

解决方案


我确实通过将 IP/MAC 添加到 ARP 列表来解决这个问题

使用

netsh interface ip add neighbors "Ethernet 3" "192.168.1.11" "00-1C-23-17-4A-CB"

但是我希望能够在 python 中将其关闭

问候


推荐阅读