问题标签 [icmp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby - 如何检查 ICMP Ping / Echo 中的返回数据包内容?
在验证 ping 回显时,实用程序/库似乎通常只检查数据包的校验和,而实际上并没有确认发出的有效负载与返回的有效负载相匹配。例如,Wireshark 的 ICMP 解析器只检查错误的校验和,而这也是 Ruby 的net-ruby检查的全部内容。
我正在调试一个低级网络驱动程序问题,我需要确认收到的数据没有被破坏,所以我想使用ICMP Echo之类的低级请求来测试我的驱动程序。但是,我现有的 Ping 工具是不够的,因为我担心校验和可能与回显响应中包含的数据匹配,而回显响应中的数据与回显请求中的数据不匹配。因此,即使它们都有有效的校验和(校验和代码中没有错误),数据接收部分也存在错误,因此我的驱动程序没有收到主机认为它正在发送的内容。
我如何检查回显有效负载以确认它与我发送的内容相同?如果我可以使用独立的“偏执 ping”实用程序,那也很好——我只需要能够改变 ping 的长度和频率,因为我只在网络泛滥时才看到问题。
我更喜欢 Ruby 库/片段的形式,但任何语言或独立应用程序都是可以接受的,只要我可以将它硬塞到在 Windows 上运行。
谢谢!
c# - 在 C# 中侦听 ICMP 数据包
我有一个需要发送 UDP 数据包来设置 SIP 呼叫的 SIP 应用程序。SIP 有一个超时机制来处理交付失败。我想做的另一件事是检测 UDP 套接字是否已关闭,以便必须等待 SIP 使用的 32 秒重传间隔。
我所指的情况是尝试发送到 UDP 套接字导致远程主机生成 ICMP 目标不可达数据包。如果我尝试向启动但端口未侦听的主机发送 UDP 数据包,我可以看到带有数据包跟踪器的 ICMP 消息返回,但问题是如何从我的 C# 代码中访问它?
我正在玩原始套接字,但还不能让我的程序接收到 ICMP 数据包。即使 ICMP 消息到达我的 PC,下面的示例也不会收到数据包。
下面是一个 Wireshark 跟踪,显示了 ICMP 响应进入我的 PC 的尝试,该响应是从我知道它没有在侦听的端口上尝试从 10.0.0.100(我的 PC)到 10.0.0.138(我的路由器)发送一个 UDP 数据包。我的问题是如何利用这些 ICMP 数据包来实现 UDP 发送失败,而不是仅仅等待应用程序在任意时间后超时?
c# - 在 2008 的服务上下文中接收 ICMP 数据包
当我们从 udp 端口发送数据包时,如果网络返回无法访问的 ICMP 主机,我们会收到异常。该异常没有告诉我们任何有用的信息(例如 ICMP 数据包的内容)。
没问题,我们将只监听 ICMP,这将为我们提供所需的信息,同时忽略 UDP 端口上的异常。因此,打开一个原始套接字,侦听 ICMP 数据包并从那里开始。
在开发(Win XP)中工作正常,但在服务器 2008 上的生产中,似乎运行 exe 的安全上下文必须具有管理员权限才能打开原始套接字。这对于服务是没有用的。如果我理解微软在说什么,那么我们可以做我们想做的唯一方法就是在具有管理员权限的帐户下运行我们的服务。感觉有点像花生的大锤,更不用说在管理员帐户下运行面向网络的服务带来的潜在安全漏洞。
我真的希望我在这里错了,但我似乎找不到任何与上述内容相矛盾的东西。
有人有任何意见/提示或同情吗?
c# - C# 中的 ICMP,SocketException - 被访问权限禁止
我正在尝试让此处找到的 ICMP 代码正常工作。但是在这一行:
我得到 SocketException:“试图以访问权限禁止的方式访问套接字”(本机错误代码:10013)
以管理员模式运行是一种(不好的)解决方案,但由于我希望我的程序在用户级别上运行,你会建议什么?也欢迎其他 ICMP 方法。
我一直在尝试使用“ClickOnce”安全设置,但没有帮助。
icmp - 在 ICMP 套接字上接收数据
在 ICMP 套接字上接收时(SOCK_RAW 和 IPPROTO_ICMP),由于 ICMP 协议中没有“端口”的概念,应用程序如何确定接收到的数据包不是其他 TCP/UDP/任何套接字传输的一部分是否也在同时发生?
例如,假设您有一个具有 2 个线程的应用程序。线程 1 建立一个 TCP 服务器套接字,并不断地从连接的客户端接收数据。线程 2 使用 ICMP 套接字不断向同一个客户端发送回显请求数据包 (ping),然后接收回显回复。什么是阻止线程 2 接收 TCP 数据包之一呢?
python - python非特权ICMP
在试图找出从 python 中 ping (ICMP) 的最佳方法时,我遇到了以下问题:
答案通常归结为“使用具有 root 权限的第三方模块”或“使用系统的 ping 命令并解析输出”。在本地方法中,icmplib和M. Cowles 和 J. Diemer 的 ping.py明确提到了对 root 权限的需求,scapy 手册也是如此。
因此,从这方面来看,在没有特殊权限的情况下本地发送 ICMP ping 似乎是不可能的。system ping 命令确实以某种方式管理,但它的手册页没有说明如何进行。另一方面, icmp的手册页似乎说这是可能的:
因此,至少根据 icmp,这似乎是允许的。那么为什么所有的python工具都无法做到这一点呢?python 工具是否过于通用并期望特权套接字上的任何工作都具有特权?是否可以在 C 中编写一个无需 root 权限即可 ping 的 ping 函数,并以此扩展 python?有人做过吗?我只是误解了这个问题吗?
windows - 什么类型的网络流量在 Windows 中不使用 Winsock?
我正在开发一些低级的东西 (LSP) 并发现 SMB 流量不通过 LSP,因为 SMB 不使用 Winsock。MSDN 中有一段关于它的内容,但这是 MSDN 中专门针对 Windows CE 的一部分。那么,是否有任何不通过 Winsock 的整体流量的综合列表?MSDN 对此有点混乱。
我现在发现:
- 中小企业
- ICMP
linux - 嵌入式 Linux 设备检测 Internet 连接的智能方法
我们的团队正在开发基于 Linux 2.6 的 Internet 媒体设备。目前,我们通过 ping www.google.com 检测是否建立了 Internet 连接(通过有线以太网 i/f)
我们测试过的某些网络不支持 ICMP 数据包转发,因此我们的应用程序代码错误地将 Internet 报告为在这种情况下不可用。
有谁知道一种更精细的方法来推断是否可以通过 /dev/eth0 获得 Internet 连接,而无需求助于 ping 知名服务?
c# - 在 C# 中测量网络性能工具
我即将开发一个网络测量工具。目标是制作一个工具,可以测量客户端和服务器机器(从客户端)之间的响应时间。它是主应用程序的副应用程序 - 如果主应用程序遇到来自服务器的响应时间超过某个阈值,则该工具将被激活,并执行网络连接测试,以确定客户端服务器连接是否稳定(它可能不稳定,由于网络是无线等)
我需要执行的测试不仅仅是 ping 操作,还要传输不同大小的包。
然而,我在通信技术方面的经验很少。
ICMP协议是要走的路吗?如果是,是否可以发送不同大小的包(以衡量网络是否能够在合理的时间内传输例如 2 MB 的数据)?
我还有第二个担心。关于防火墙,我应该注意什么?开发一个在我的本地网络上运行良好的应用程序将是一种耻辱,但是一旦它在现实生活中被使用,它就会失败,因为测试被防火墙阻止了。
我希望我的问题不是太无聊,但知道任何帮助都是非常感谢的。
一切顺利
/萨吉
c++ - IcmpSendEcho 和设置 MTU 大小?
有谁知道在发送 ICMP 回显数据包(使用 IcmpSendEcho)时是否可以调整 MTU?
我正在尝试使用 IcmpSendEcho() 函数在 Windows 下执行此操作。