想象一下,用户坐在以太网连接的PC上.他打开了一个浏览器.他在地址栏中输入"www.google.com"并点击进入.
现在告诉我在以太网上出现的第一个数据包是什么.
我在这里找到了这个问题:关于套接字编程和多线程的访谈问题
由于我不是网络专家,我想听听答案(我认为这是"它取决于";)).
使用像Wireshark这样的工具,我显然可以检查自己的计算机行为.我想知道我看到的数据包(例如ARP,DNS,VRRP)在每个以太网配置中是否相同(它依赖于操作系统?驱动程序?浏览器甚至:)?)以及哪些条件它们出现了.在数据链路层,它是否可能依赖于物理网络(连接到集线器/交换机/路由器)?
我试图在Linux中的ARP表中添加ARP绑定,我的arp表看起来像这样:
IP address HW type Flags HW address Mask Device
192.168.3.12 0x1 0x6 00:0c:29:89:c5:cc * eth1
192.168.3.100 0x1 0x6 00:0c:29:89:c5:c8 * eth1
192.168.43.2 0x1 0x2 00:50:56:e1:65:76 * eth0
192.168.3.111 0x1 0x6 00:11:22:33:44:55 * eth1
192.168.43.139 0x1 0x6 00:0c:29:89:c5:cc * eth0
Run Code Online (Sandbox Code Playgroud)
这是我想要做的,但我得到以下错误:
arp -s 192.168.43.138 00:00:22:33:33:33
SIOCSARP: Invalid argument
Run Code Online (Sandbox Code Playgroud)
任何其他IP地址工作正常,只是这一个导致错误任何想法这里有什么问题?(这可能不是mac地址的问题,我尝试了很多其他地址)
我有一个简单的问题,但由于缺乏C#经验,我无法实现它.
当我打开cmd并输入arp -a命令时,它会显示所有接口和IP地址都是路由.
所以,我的目标是在C#中实现上述过程并获取ip,mac等...有人可以帮我解决这个问题吗?我将不胜感激.谢谢
你好,我是一名 ios 开发人员,我正在尝试编写网络套接字程序。首先,我试图找到一种获取 arp 表和 icmp 操作(例如 ping)的方法。我在苹果应用商店找到了很多好的网络扫描仪,但我真的不知道应该从哪里开始。
我所担心的只是应用商店的拒绝。
谢谢你的关心!
我需要帮助,自 2 天前起我尝试解决这个问题,但没有成功,我是 python 新手,请更改代码并解释:
这是它的代码,通过 scapy 进行 arp 扫描,它从 scapy 扫描中获取结果并将扫描结果( ip 和 macaddress )保存到 linux 机器中的 txt 文件中
然后通过以下命令运行名为( doublepulsar-detection-script )的外部 python 脚本: os.system("python detector_doublepulsar_smb.py --file last.txt")
last.txt = 文件包含 scapy 扫描结果
但扫描完成后我收到此错误:
回溯(最近一次调用最后一次):文件“test.py”,第 116 行,在 lena = int(raw_input(“输入数字:”)) ValueError:关闭文件上的 I/O 操作
这是完整的代码:
logging.basicConfig(format='%(asctime)s %(levelname)-5s %(message)s', datefmt='%Y-%m-%d %H:%M:%S', level=logging.DEBUG)
logger = logging.getLogger(__name__)
def long2net(arg):
if (arg <= 0 or arg >= 0xFFFFFFFF):
raise ValueError("illegal netmask value", hex(arg))
return 32 - int(round(math.log(0xFFFFFFFF - arg, 2)))
def to_CIDR_notation(bytes_network, bytes_netmask):
network …Run Code Online (Sandbox Code Playgroud) 我正在尝试将IP地址转换为MAC地址,然后将其转换为字节数组.我陷入了第一部分而不确定如何做到这一点.我看到一些搜索结果在谈论System.Net.NetworkInformation.NetworkInterface但不确定如何使用它.
这是我需要MAC字节数组的代码.这该怎么做?
[DllImport("iphlpapi.dll", ExactSpelling = true)]
public static extern int SendARP(int DestIP, int SrcIP, byte[] pMacAddr, ref uint PhyAddrLen);
private void Ping(IPAddress address)
{
byte[] macAddr = new byte[6];
uint macAddrLen = uint.Parse(macAddr.Length.ToString());
if (SendARP(int.Parse(address.ToString()), 0, macAddr, ref macAddrLen) == 0)
{
//SUCCESS!
}
}
Run Code Online (Sandbox Code Playgroud) 我想使用Python从Windows系统获取arp表。我看到该库python_arptable仅与 Linux 兼容,我不想使用该arp -a命令。有没有任何 python 库可以让我提取它?或者也许使用 ctypes?
我在Linux下创建了一个udp套接字,以发现网络上的另一个系统。创建udp套接字并分配src IP,src Port,dst端口(我知道正确的值)和dst IP(广播)后,应用程序将UDP数据包发送到另一端。目的是使另一台计算机发回UDP数据包,以便我的计算机推断出目标IP地址。另一端以包含其IP,端口以及我的IP和端口的ARP消息进行响应。
虽然,我正在使用的套接字是数据报,但我的应用程序声明发现另一端并可以获得其IP。看来我正在使用的udp套接字已收到另一端发送的ARP消息,这让我感到困惑。
请任何人解释发生的情况。
非常感谢你。
我知道并非所有设备都响应ICMP或ping,因此最合适的方式似乎是向LAN上可能的所有IP发送ARP请求,从192.168.0.0到192.168.255.255,但这意味着请求超过65000个IP这花了很多时间.我想找到我的程序的另一个实例,以便同步他们的内容,但我不满意ARP方法.到目前为止,我在SO中找到了这些优秀的代码:
[DllImport("iphlpapi.dll", ExactSpelling = true)]
public static extern int SendARP(int DestIP, int SrcIP, byte[] pMacAddr, ref uint PhyAddrLen);
static void Main(string[] args)
{
List<IPAddress> ipAddressList = new List<IPAddress>();
for (int i = 0; i <= 255; i++)
{
for (int s = 0; s <= 255; s++)
{
ipAddressList.Add(IPAddress.Parse("192.168." + i + "." + s));
}
}
foreach (IPAddress ip in ipAddressList)
{
Thread thread = new Thread(() => SendArpRequest(ip));
thread.Start();
}
}
static void SendArpRequest(IPAddress dst)
{
byte[] macAddr …Run Code Online (Sandbox Code Playgroud)