有人能告诉我"测试ICMP"究竟是如何工作的吗?(检测本地网络中的嗅探的方法之一)
我一直在Windows上使用jedie的python ping实现.我可能是错的,但是当从不同的线程ping两台计算机(A和B)时,ping将返回它收到的第一个ping,无论源是什么.
因为它可能是jedie's fork的一个问题,所以我回到了之前的版本.(这是我将在下面探讨的版本)
我添加了一行代码receive_one_ping:(第134行或类似)
recPacket, addr = my_socket.recvfrom(1024) # Existing line
print "dest: {}, recv addr: {}.".format(dest_addr, addr) # New line
Run Code Online (Sandbox Code Playgroud)
这允许我们查看我们正在接收的ping的地址.(应该与目标IP相同,对吧?)
测试:
ping1()ping一个已知的脱机IP(1.2.3.4),
ping2()ping一个已知的在线IP(192.168.1.1 - 我的路由器)
>>> from ping import do_one
>>> def ping1():
print "Offline:", do_one("1.2.3.4",1)
>>> ping1()
Offline: None
>>> def ping2():
print "Online:", do_one("192.168.1.1",1)
>>> ping2()
Online: dest: 192.168.1.1, recv addr: ('192.168.1.1', 0).
0.000403682590942
Run Code Online (Sandbox Code Playgroud)
现在,如果我们一起做:(使用Timer来简化)
>>> from threading import Timer
>>> t1 = Timer(1, ping1)
>>> t2 = …Run Code Online (Sandbox Code Playgroud) 你好,我是一名 ios 开发人员,我正在尝试编写网络套接字程序。首先,我试图找到一种获取 arp 表和 icmp 操作(例如 ping)的方法。我在苹果应用商店找到了很多好的网络扫描仪,但我真的不知道应该从哪里开始。
我所担心的只是应用商店的拒绝。
谢谢你的关心!
我正在尝试将UDP数据包发送到生存时间为1的路由器,然后收到ICMP时间超限答复。到目前为止,我已经能够发送数据包,但是当我的程序进入执行的recv部分时,它只是挂起。我对recvfrom进行了错误检查,但甚至没有做到这一点。我的计算机正在接收请求。我知道这是因为我在运行程序时运行Wireshark,并为ICMP请求筛选。每次我运行程序时,都会收到答复。recvfrom我在做什么错?
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <errno.h>
#define UNSPEC_PROTO 0
int main(int argc, const char *argv[])
{
if (argc != 2) {
printf("usage: routetracer <ip address or hostname>\n");
return -1;
}
struct addrinfo hints; //params for ret val of getaddrinfo
struct addrinfo* ret; //return value of getaddrinfo
struct sockaddr* reply_addr;
char ipv4[INET_ADDRSTRLEN];
char* msg = "THE PORT IS OVER 9000!!!!";
int status = 0;
int ttl = 0;
int src_sock …Run Code Online (Sandbox Code Playgroud) 如果IPv4有问题并且我想从std :: istream中提取IP和ICMP头,首先我得到最初的20个字节,然后检查IPv4头中提供的头长度是否大于20个字节以便提取任何选项.下一个字节是ICMP数据包.使用IPv4标头内携带的标头长度值,我可以看到IP标头的预期大小.
但是如何获得IPv6标头的确切大小?IPv6标头内部有一个有效负载值,包括标头扩展的大小以及更高级别的数据,如ICMP.我需要知道IPv6头的大小,包括头扩展但没有更高级别的数据,以便知道ICMPv6头在std :: istream中的起始位置.
谢谢!
我使用了traceroute命令并ping了我的亚马逊实例.这是我回来的结果:
traceroute to 10.250.19.146 (10.250.19.146), 30 hops max, 60 byte packets
1 ip-10-8-145-1.us-west-2.compute.internal (10.8.145.1) 0.996 ms 1.234 ms 3.698 ms
2 100.70.166.213 (100.70.166.213) 0.855 ms 1.179 ms 100.70.166.117 (100.70.166.117) 0.860 ms
3 100.70.175.66 (100.70.175.66) 0.925 ms 100.70.175.174 (100.70.175.174) 0.771 ms 100.70.175.238 (100.70.175.238) 0.811 ms
4 100.70.173.157 (100.70.173.157) 0.811 ms 100.70.172.193 (100.70.172.193) 0.866 ms 100.70.173.69 (100.70.173.69) 0.849 ms
5 100.70.164.46 (100.70.164.46) 4.411 ms 100.70.163.206 (100.70.163.206) 4.655 ms 4.915 ms
6 ip-10-250-19-146.us-west-2.compute.internal (10.250.19.146) 0.563 ms 0.267 ms 0.267 ms
Run Code Online (Sandbox Code Playgroud)
使用这些数据,我如何计算平均RTT时间?
我想编写一个python脚本,该脚本应检查特定IP地址是否可访问.我是python编程的新手,不知道代码的外观.帮忙
正如标题,我如何 ping 我的机器来进行一些基本的网络测试?我创建了一个新的虚拟机,但 ping 它的公共地址返回请求超时。