Articles of networking

我可以从一个已知的MAC地址确定当前的IP吗?

我有一个shell脚本,它使用etherwake来唤醒本地networking上的一台机器。 机器清醒后,我不确定IP地址。 在试图回答我自己的问题时,我想到了: ip=$(ping -c 1 hostname | head -1 | awk '{print $3}' | sed 's/[()]//g') 这个解决scheme规定,我知道远程机器的主机名,这并不麻烦。 如果我知道的是MAC地址,有没有办法获得IP?

使用Recv-Q和Send-Q

netstat命令输出中使用Recv-Q和Send-Q列什么时候我们在实时场景中使用它? 在我的系统中,两列总是显示为零。 这是什么意思?

UDP IP分片和MTU

我试图了解在发送UDP数据包的上下文中看到的一些行为。 我有两个小Java程序:一个传输UDP数据包,另一个接收它们。 我在两台通过一台交换机连接的计算机之间的networking上本地运行它们。 两个networking适配器上的MTU设置(由/ sbin / ifconfig报告)均为1500。 如果我发送大小<1500的数据包,我收到它们。 预期。 如果我发送1500 <size <24258的数据包,我收到它们。 预期。 我已经通过wireshark确认IP层将它们分段。 如果我发送大小> 24258的数据包,则会丢失。 不期望。 当我在接收端运行wireshark时,我没有看到任何这些数据包。 我能够看到类似的行为与ping -s。 ping -s 24258 hostA可以工作 ping -s 24259 hostA失败。 有没有人了解可能发生的事情,或者有我应该寻找的想法? 这两台电脑都运行CentOS 5 64位。 我使用1.6 JDK,但我不认为这是一个编程问题,这是一个networking或操作系统的问题。

获取Linux内核中的networking设备列表

我一直在通过net / core / dev.c和其他文件来查看如何获取当前configuration的networking设备列表,这certificate有点难以find。 最终目标是能够使用dev.c中的dev_get_stats获取networking设备统计信息,但是我需要知道当前的接口,所以我可以抓取net_device结构来传入。我必须在内核中执行此操作,因为我写了一个模块,它添加了一个新的/ proc /入口,这涉及到一些来自当前networking设备的统计信息,所以从我能收集到的信息必须在内核中完成。 如果有人能指点我如何获得接口,将不胜感激。

包除了iptables的包改造工具?

我正在寻找一个Linux实用程序,可以根据一组规则来改变networking数据包的有效载荷。 理想情况下,我会使用iptables和netfilter内核模块,但是它们不支持通用的有效负载模式: iptables将会改变不同的头域(地址,端口,TOS等),并且可以匹配一个数据包中的任意字节,但它显然无法改变数据包内的任意数据。 内核模块将是一个很大的优势,因为效率是一个问题,但我很乐意探索任何可以完成工作的其他选项。 感谢您的想法! 姗姗来迟的更新: 我们select使用NFQUEUE模块,这是Robert Gamblebuild议的QUEUE模块的最新实现。 它似乎相当简单,让我们的代码在用户而不是内核空间中运行,这是一个安全奖金。 如果我们只是想改变有效载荷而不改变它的大小,那么实现将几乎是微不足道的。 在这种情况下,我们将定义一个iptables规则来为我们select“有趣的”数据包,并向它们发送一个NFQUEUE目标。 我们将编写一个callback函数来检查来自NFQUEUE的数据包,根据需要修改数据,并重新计算TCP和IP头中的校验和。 但是,我们的用例涉及在数据stream中注入更多字符。 这在TCPstream中增加了相应的SEQ / ACK号码的副作用比较明显,混淆了conntrack模块的副作用并不明显,完全打破了NAT。 经过大量的研究,头部划伤和实验,最NOTRACK解决scheme是禁用这些特定数据包的连接跟踪(在raw表中使用NOTRACK目标),并在我们的callback中处理。 保存你的西红柿和讨厌的邮件; 我一点都不骄傲让你置身事外,但在下一个冰河世纪之前,这是唯一可以获得可靠产品给客户的方法。 这是一个很好的故事。 但我真的很感激,并分享你的衷心的感受。 版本2将利用我们新发现的启示,通过用自定义NAT和/或conntrack助手来replace我们的callback和多个iptables规则。 我们相信,目前的练习已经给了我们足够的经验来创build一个内核模块,它将有机地融入到netfilter体系结构中来解决我们遇到的问题。 再次感谢您的关注和build议!

我如何使用EPOLLHUP

你们能给我提供一个很好的示例代码,使用EPOLLHUP进行死对等处理吗? 我知道这是一个信号,以检测用户断开连接,但不知道如何在代码中使用这个..预先感谢..

拉撒路:如何列出系统上所有可用的networking连接?

我正在使用Lazarus IDE在Linux系统上编写程序。 程序应该连接到Internet或Intranet。 所以,我想向用户列表显示所有可用的networking连接,如果系统上有两个活动的网卡,它们可以用来连接到Internet或Intranet,那么这个程序应该显示它们的可用连接。 目前,我不知道从哪里开始或使用什么工具。 任何提示,线索或build议将不胜感激。

如何检查C中的networking设备状态?

我想检查一个networking设备状态,例如promiscous模式。 基本上像ip显示一个命令。 也许有人能把我推向正确的方向? 我想在Linux中做这个,所以linux特定的头文件可用。

我如何接收错误的以太网帧并禁用CRC / FCS计算?

我在运行Linux的两台PC之间生成一个stream量(通过发送以太网帧),目标是捕获一些错误帧。 问题是什么时候Phy层检测到一个帧的错误(如果CRC或FCS无效)帧被丢弃,我不能在我的程序接收它。 是否有任何方法来接收错误的框架(禁用在物理层的下降,并收到一个指示,表明这个帧是错误的,例如),我怎么可以咨询统计的NIC卡(滴数…等)。

我如何使python程序检查linux服务

我想制作简单的python脚本,我可以在cron作业上运行。 我只想看看这些服务是否正在运行或停止 Httpd mysql 我应该如何检查他们与python。 我需要parsingnetstat -tlnp的输出