ping 没有端口号, 如何保证数据的正确接收?

VSole2023-06-28 09:37:23

ping 使用 ICMP 协议, ICMP 工作在 IP层所以无端口号, 当多个进程使用ICMP 的时候, 怎么判断该 ICMP Message 属于哪个进程?

不像其他应用层的协议如http, 直接监控80端口, ping 若直接使用 ICMP, 那它怎么知道来的数据包就是属于它的呢?

负责接收处理Ping报文(ICMP Echo

Request)的进程是唯一(Unique)的,且是一个系统进程,所以压根不会有那么多的烦恼。

这个系统进程,位于TCP/IP协议栈的IP栈,所以一旦IP栈发现这是发给自己的(目的IP == self,且protocol number == 1),直接就把这个Ping报文扔给这唯一的进程处理。

可能与读者想象的不一样,Ping 1.1.1.1报文的接收方,处理起来特别简单,只要把收到的Ping报文几乎原始模样反弹(Echo Reply)回去即可。

几乎的意思是,主机=1.1.1.1 需要做几个简单操作:

  • ICMP type =0 修改为8
  • 重新计算ICMP checksum
  • 将原始报文的Source IP(你的IP)、Destination IP (1.1.1.1)对调
  • TTL重置为本地设置
  • 重新计算IP checksum

做完以上操作,即可委托IP路由将Ping

Echo Reply报文发出。毕竟echo的原始意义就是反弹、回音的意思,简单哇?

同学们可能注意到ICMP报文头的“Identifier”、“Sequence Number”,接收方压根没有触碰。既然接收方根本不处理,为何还要画蛇添足呢?

因为 “Identifier” + “Sequence Number” 这个黄金搭档,不是给接收方用的,而是给发送方(题主)用的。准确地说,是当Ping报文的返回报文(Echo Request),题主主机的操作系统将根据“Identifier”定位是哪个用户进程的报文,然后把这个报文deliver给对应进程。该进程再根据“Sequence Number”匹配本地发出的Echo Request的“Sequence Number”。如果匹配成功,将该“Sequence Number”对应的定时器熄灭,计算往返时间Round Trip Time,并时间统计打印到屏幕上。

如果在定时器响之前,没有匹配的echo reply,Ping的统计为失败, timeout默认 = 2秒。

定时器响了之后,如果收到了对应的“Sequence Number” 的echo reply,直接丢弃处理,因为已经没有任何意义了。

通常“Identifier”为用户进程号,这样处理起来直观便利。如果不是直接映射,题主的主机有方法根据Identifier的值,找到对应的用户进程前来处理。总之一句话,不能造成混淆或者无法找到合适的进程处理的现象,这就是协议存在的意义!

ping端口号
本作品采用《CC 协议》,转载必须注明作者和本文链接
ping 使用 ICMP 协议, ICMP 工作在 IP层所以无端口号, 当多个进程使用ICMP 的时候,
当网络出现故障时,用户可以使用Tracert确定出现故障的网络节点。以上过程不断进行,直到目的端收到源端发送的UDP报文后,判断出目的IP地址是本机IP地址,则处理此报文。
Linux下的TCP测试工具
2021-12-08 07:36:31
测量到远程主机的网络延迟的一种常用方法是使用ping应用程序。该ping工具依赖 ICMP ECHO 请求和回复数据包来测量远程主机的往返延迟。但是,在某些情况下,ICMP 流量可能会被防火墙阻止,这使得该ping应用程序对于受限制的防火墙后面的主机毫无用处。在这种情况下,你将需要依赖使用 TCP/UDP 数据包的第 3 层测量工具,因为这些第 3 层数据包更有可能绕过常见的防火墙规则。
需求配置vps一台域名CDNCobalt Strike4.0?0x02. 服务器设置禁ping服务器禁ping从某种意义上来说,算是不存活的主机,但nmap是依然能够扫描出来的。设置禁ping命令:vim /etc/sysctl.conf 打开后按i进入编辑模式,在任意位置新增以下内容。0x03. 修改Cobalt Strike默认端口号在服务端的teamserver文件末尾处修改修改之后再次启动teamserver的时候即可看到端口已经更改。修改证书标准并应用> keytool -importkeystore -srckeystore cobaltstrike.store -destkeystore cobaltstrike.store -deststoretype pkcs12
Web网管利用设备内置的Web服务器,为用户提供图形化的操作界面。用户通过Web网管,可以在图形界面下非常直观地管理和维护设备。 用户需要从终端通过HTTPS登录到设备,才能利用Web网管对设备进行管理和维护。
判断内网的连通性是指判断机器能否上外网等。需要综合判断各种协议及端口通信的方式。
修改 ssh 登陆配置打开 ssh 配置文件vim?#更改SSH端口,最好改为10000以上,别人扫描到端口的机率也会下降。防火墙要开放配置好的端口号,如果是阿里云服务器,你还需要去阿里云后台配置开发相应的端口才可以,否则登不上哦!
VSole
网络安全专家