标签: icmp

ICMP套接字(linux)

是否可以在IP协议下使用ICMP套接字?也许是这样的:

socket(PF_INET, <type>, IPPROTO_ICMP)?

我应该在<type>字段中放入什么?我看到了一些使用SOCK_RAW的例子,但这不会阻止操作系统处理IP协议的工作吗?

另一件事.操作系统如何知道应该将ICMP数据报发送到哪个进程,因为该协议没有涉及端口?

sockets linux icmp

9
推荐指数
2
解决办法
2万
查看次数

收到icmp请求,但没有回复

我设置了3个CentOS服务器,将server2配置为192.168.1.0/24和30.0.0.0/24之间的路由器,但ping无法通过.

我尝试ping 192.168.1.62从server1,根据tcpdumpserver3,收到ICMP请求,但它不会生成ICMP响应.

23:36:06.436243 IP 30.0.0.2 > 192.168.1.62: ICMP echo request, id 23570, seq 2838, length 64
23:36:07.436212 IP 30.0.0.2 > 192.168.1.62: ICMP echo request, id 23570, seq 2839, length 64
Run Code Online (Sandbox Code Playgroud)

建立

服务器
  • server1的:

    • eth0 - 30.0.0.2
  • 服务器2:

    • eth0 - 192.168.1.61
    • eth0:0 - 30.0.0.1
  • server(服务器):

    • eth0 - 192.168.1.62
路由
  • server1上的路由信息​​:

    • 0.0.0.0 30.0.0.1
  • server3上的路由信息​​:

    • 30.0.0.0/24 192.168.1.61

linux networking router tcpdump icmp

9
推荐指数
2
解决办法
2万
查看次数

ICMP(ping)请求中包含哪些数据?

我知道ICMP请求包含IP地址.客户端MAC地址是否包含在ICMP请求中?ping请求中还包含哪些其他信息(如果有)?

ping icmp

9
推荐指数
1
解决办法
1万
查看次数

某个端口的跟踪路由

在说什么之前让我告诉你我在网络相关科目上没有受过良好教育.

我是一名软件开发人员,我已经在端口8000上编写并在HTTPS上公开了一个服务.现在我想知道,如果有任何类型的软件可以帮助我跟踪是否有任何类型的端口阻塞从一个站点到我的服务地点与阻止主机的信息.

我已经尝试过像Wintrace这样的Tracerout软件,但所有这些都使用ICMP协议,并且没有选项提供端口号.

此外,我喜欢在防火墙中为Windows Server 2003 Windows防火墙中的传入ICMP协议添加例外但我无法在例外情况下看到任何广告协议选项,而只有选项来广告程序或广告端口的udp或tcp.

请帮忙问候

port networking traceroute windows-firewall icmp

8
推荐指数
1
解决办法
3万
查看次数

如何仅使用标准套接字库在Ruby中实现ICMP ping?

应该可以使用Ruby套接字库发送和接收ICMP数据包,但我没有看到任何关于此的良好文档.

我不想使用net-ping,icmp,ping和所有这些因跨平台问题而失败的其他库,需要devkit和自定义构建,在构建过程中失败,被忽略且尚未更新很长一段时间,和/或只是一般的马车.

有没有人有关于如何做到这一点的任何好文件?我想发送ICMP回应回复,而不是TCP或UDP数据包.

ruby ping icmp

8
推荐指数
1
解决办法
4290
查看次数

如何在Azure上启用Ping(ICMP)

在Windows Azure角色中,我无法ping通

D:\Users\foglight>ping www.google.com

Pinging www.l.google.com [209.85.143.104] with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.

Ping statistics for 209.85.143.104:
 Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
Run Code Online (Sandbox Code Playgroud)

我谷歌它,并发现一些建议运行下面的命令,但即使运行它,我仍然无法ping出来

netsh advfirewall firewall add rule name="ICMPv6" dir=in action=allow enable=yes protocol=icmpv6
Run Code Online (Sandbox Code Playgroud)

请有人告诉我原因以及如何解决.

firewall ping azure icmp

8
推荐指数
1
解决办法
2万
查看次数

如何使用C套接字ping

  • 编译器:Code :: Blocks(GNU GCC)
  • 平台:Windows(x86)
  • 包括:winsock.h winsock2.h(ws2_32也链接)

我目前正在尝试编写一个程序,该程序将读取包含IP地址列表的文本文件,并分别ping每个IP地址.如果主机响应ping,则主机的IP地址将被复制到用户指定的借调文件中.不经意的是,这是我第一次使用C的套接字库,我找不到关于如何使用C进行ping的好教程.据我所知,我找到了几个教程.我需要在IP数据报中包含一个ICMP头,它是一个包含ICMP类型,代码和校验和的结构.但我不知道该怎么做,我应该自己声明结构还是在头文件中声明?我假设它在一个标题中但是教程相互矛盾的确切地说明了它的位置.我厌倦了包括icmp.h和netinet/icmp.h,但我的编译器抱怨它们不存在所以我创建了自己的结构.

    struct echo_request
    {
        char type; // Type
        char code; // Code
        short checksum; // Checksum
        short id; // Identification
        short seq; // Sequence
        int time; // Time
        char data[16]; // Data
    };
Run Code Online (Sandbox Code Playgroud)

我认为我可能能够逃脱它,但我甚至无法编译我的程序,因为我的编译器说in_cksum()(校验和生成器)是未定义的.

总结我的问题,我应该包括哪些头文件,如何创建ping数据包,我使用正确的校验和生成器函数,ping是否应该指向端口80,我使用的套接字应该是RAW还是DGRAM?

这是我到目前为止,请注意我故意遗漏了错误检查.

    int socket_descriptor = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP);

    struct sockaddr_in address; //Initialize address struct
    memset(&address, 0, sizeof(address)); //Clear address struct

    //Declare address
    address.sin_family = AF_INET;
    address.sin_addr.s_addr = inet_addr(ipaddress);
    address.sin_port = htons(80);

    //Bind socket to address
    bind(socket_descriptor, (struct sockaddr *)&address, …
Run Code Online (Sandbox Code Playgroud)

c sockets windows ping icmp

8
推荐指数
1
解决办法
1万
查看次数

请求icmp_seq超时

当我尝试sudo ping -f (URL)在mac终端上使用该命令时,我收到消息:

请求icmp_seq超时作为回复.

我怎样才能解决这个问题?

terminal timeout ping icmp

8
推荐指数
1
解决办法
5万
查看次数

MacOS 上 icmp_seq 请求超时

这一切都始于我尝试连接到 GCP 上仅用于 SFTP 的虚拟机设置时。每次我尝试在这台计算机上检查 SSH 或设置 SFTP 时,它都会变得无法访问(同时在我朋友的笔记本电脑上可以访问并且连接良好)。

Ping <ip address>
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Run Code Online (Sandbox Code Playgroud)

我可以 ping 其他虚拟机,也可以通过 SSH 连接到它们。

我认为问题可能出在我的路由器上。所以我使用手机 HOTSPOT 连接到互联网并再次尝试。但还是没用。此外,令我惊讶的是,当我 ping www.google.com 时,我也遇到了同样的超时(奇怪,因为我可以通过 chrome 浏览器使用互联网)。

其他详情:

  • MacBook Pro,高塞拉
  • Airtel 宽带/沃达丰(热点)
  • 防火墙已关闭。

其他人似乎也遇到了类似的问题(但我在这些链接中找不到任何令人满意的答案):

ping icmp macos-sierra

8
推荐指数
1
解决办法
3万
查看次数

Rust OSError 22,将有效数据写入套接字时参数无效

我很难理解为什么我的程序中在网络上发送 ICMP 回显请求的部分会出现此错误。最重要的是,我可以通过让套接字处理 IP 标头来使其工作,但是当我设置 IP_HDRINCL 选项并为其提供有效的 IP 标头时,它会返回 EINVAL 错误:

initialize
using interface en0 with ip 192.168.1.126 and mac a4:83:e7:43:40:81.
Input start ip/scan range: 192.168.1.1
[45, 0, 0, 1c, 20, 1, 40, 0, 40, 1, 97, 10, c0, a8, 1, 7e, c0, a8, 1, 1, 8, 0, 22, 2a, 97, 3e, 3e, 97]
[69, 0, 0, 28, 32, 1, 64, 0, 64, 1, 151, 16, 192, 168, 1, 126, 192, 168, 1, 1, 8, 0, 34, 42, 151, 62, …
Run Code Online (Sandbox Code Playgroud)

sockets ip icmp rust

8
推荐指数
0
解决办法
2414
查看次数