首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当我在boost asio icmp示例中的icmp请求包中设置了一个小ttl时,icmp应答包中的标识符为零

在boost asio icmp示例中,当你设置了一个小的TTL(Time to Live)值时,ICMP应答包中的标识符为零。

ICMP(Internet Control Message Protocol)是一种网络协议,用于在IP网络中传递控制消息和错误报告。在网络通信中,当一个主机发送一个ICMP请求包时,它会在包头中设置一个标识符字段,用于唯一标识这个请求。当目标主机收到请求后,会生成一个ICMP应答包,并将标识符字段设置为与请求包相同的值,以便发送方可以将应答与请求进行匹配。

然而,在boost asio icmp示例中,当你设置了一个小的TTL值时,可能会导致ICMP应答包中的标识符为零。这是因为TTL值是IP包头中的一个字段,用于限制数据包在网络中的传输跳数。当TTL值减少到零时,路由器会丢弃该数据包并发送一个ICMP超时消息给发送方。在这种情况下,ICMP应答包中的标识符可能会被设置为零,因为发送方并没有收到完整的ICMP请求包。

为了解决这个问题,你可以尝试增加TTL值,或者使用其他工具或库来发送ICMP请求包并接收应答包,以确保标识符字段的正确性。

腾讯云提供了一系列与云计算相关的产品和服务,包括云服务器、云数据库、云存储等。你可以访问腾讯云官方网站(https://cloud.tencent.com/)了解更多关于这些产品的详细信息和使用指南。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

给我图解一下ping的工作原理!

ICMP 回送请求和回送应答报文 相比原生的 ICMP,这里多了两个字段: 标识符:用以区分是哪个应用程序发 ICMP 包,比如用进程 PID 作为标识符; 序号:序列号从 0 开始,每发送一次新的回送请求就会加...ICMP 原点抑制消息的目的就是为了缓和这种拥堵情况。 当路由器向低速线路发送数据时,其发送队列的缓存变为零而无法发送出去时,可以向 IP 包的源地址发送一个 ICMP 原点抑制消息。...主机 B 会构建一个 ICMP 回送响应消息数据包,回送响应数据包的类型字段为 0,序号为接收到的请求数据包中的序号,然后再发送出去给主机 A。 ?...比如,将 TTL 设置 为 1,则遇到第一个路由器,就牺牲了,接着返回 ICMP 差错报文网络包,类型是时间超时。...接下来将 TTL 设置为 2,第一个路由器过了,遇到第二个路由器也牺牲了,也同意返回了 ICMP 差错报文数据包,如此往复,直到到达目的主机。

2.2K10

ICMP报文类型

大家好,又见面了,我是你们的朋友全栈君。 日常开发中,我们经常会碰到查询网络是否畅通以及域名对应 IP 地址等小需求,这时候用的最多的应该就是 ping 命令了。...,最常用的类型是主动请求,代码为 8,主动请求的应答,代码为 0。...应答数据包的类型字段为 0,顺序号为接收到的请求数据包中的顺序号。 将应答数据包发给主机 A。     在规定的时间内,源主机如果没有接到 ICMP 的应答包,则说明目标主机不可达。...将 TTL 设置成 1 时,表示这个数据包的 MP 为 1,碰到第一个“拦路虎”(通常是路由器或一个其它类型的关卡)就会阵亡了,然后就会返回一个 ICMP 包,这个包就是 网络差错包,类型是时间超时。...如果中间遇到窄的关卡就会被卡主,返回 ICMP 网络差错包,类型是“需要进行分片但设置了不分片”。就这样,每次收到ICMP“不能分片”差错时就减小分组的长度,从而确定整个路径中的 MTU。

66220
  • ping(8) command

    3.选项说明 -4 只使用 IPv4 -6 只使用 IPv6 -A 探测包发送间隔自适应往返时间,这样网络中存在的未应答的探测请求一般不会超过一个 -a   每次发送数据时发出鸣响(Audible...为请求包分配一个 20 比特的 flow label。如果 FLOW_LABEL 为 0,内核会随机分配 -f   采用洪泛模式大量且快速地向目标发送数据包。...只有超级用户可以将间隔设置为小于0.2 秒的值 -L 抑制组播报文回送,只适用于 ping 的目标为一个组播地址 -l PRELOAD 在没有接受到回复报文之前能发送的最多报文。...PMTUDISC_OPT 取值可以为 do(不允许分段,甚至不允许在本地分段)、want(找出 PMTU,在如果包太大就在本地分段) 或 dont(不要设置 IP 包首部中的 DF 位,即允许分段) -...当我们在使用 ping 命令时,返回结果里会带一个 TTL 值。

    35340

    ICMP报文分析

    应答系统收到请求报文时填写接收时间戳,在发送应答时填写发送时间戳。大多数的实现是把后面两个字段都设成同样的值。 3>主机使用ICMP地址掩码请求报文可向子网掩码server得到某个接口的地址掩码。...系统广播它的ICMP请求报文。ICMP报文中的标识符和序列号字段由发送端随意选择设定,这些值在应答中将被返回,这样,发送端就能够把应答与请求进行匹配。...3.ICMP回显请求和回显应答报文格式: 1>Unix系统在实现ping程序时把ICMP报文中的标识符字段置成发送进程的ID号。...当应答返回时,用当前时间减去存放在ICMP报文中的时间值,即是往返时间。 4>当返回ICMP回显应答时,要打印出序列号和TTL,并计算往返时间。TTL位于IP首部的生存时间字段。...ping程序通过在ICMP报文数据段中存放发送请求的时间值来计算往返时间。当应答返回时,用当前时间减去存放在ICMP报文中的时间值,即是往返时间。

    1.3K10

    ICMP协议分析-ping和traceroute

    ,不同的类型有不同的代码,最常用的类型是主动请求,代码为 8,主动请求的应答,代码为 0。...同理,主动请求的回复,称为ICMP ECHO REPLY。比起原生的 ICMP,这里面多了两个字段,一个是标识符,另一个是序号。...应答数据包的类型字段为 0,顺序号为接收到的请求数据包中的顺序号。 将应答数据包发给主机 A。     在规定的时间内,源主机如果没有接到 ICMP 的应答包,则说明目标主机不可达。     ...将 TTL 设置成 1 时,表示这个数据包的 MP 为 1,碰到第一个“拦路虎”(通常是路由器或一个其它类型的关卡)就会阵亡了,然后就会返回一个 ICMP 包,这个包就是 网络差错包,类型是时间超时。...如果中间遇到窄的关卡就会被卡主,返回 ICMP 网络差错包,类型是“需要进行分片但设置了不分片”。就这样,每次收到ICMP“不能分片”差错时就减小分组的长度,从而确定整个路径中的 MTU。

    84900

    用户空间协议栈设计和netmap综合指南,将网络效率提升到新高度

    CRC 校验和,包括数据在内的整个 ICMP 数据报的检验和 ID 标识符,将发送进程的 ID 号放置在标识符字段,这样即使在主机上运行了多个 ping 程序,ping 程序也可以识别出返回的信息。...向目的服务器发送回显请求,目的服务器发送回显应答;计算发送回显请求数据包的时间与接收到回显应答数据包的时间差,就是数据包一去一回所需要的时间。 (2)traceroute命令。...1.8、TTL概念 TTL,全称Time To Live,即存活时间;指一个数据包可传递的最长距离(跃点数)。 当一个数据包经过一个路由器时,TTL减一;当TTL=0时路由器就会取消数据包的转发。...bpf、ebpf等 4.2、零长数组 零长数组,顾名思义,就是长度为零的数组。一般在GUN C中使用,其他编译器使用可能会报错或警告。 零长度数组的一个特点是它不占用内存存储空间。...-I /netmap/sys/ 4.5、协议栈实现代码示例 示例简单实现了arp、icmp、udp的协议栈;其他协议的实现类似。

    12100

    计算机网络:ICMP协议(Internet控制消息协议)介绍

    路由重定向:可以通知主机或路由器更优的路由路径,提高网络传输效率。 三、ICMP协议报文格式 ICMP报文封装在IP数据报中,IP报头在ICMP报文的最前面。...TTL值为0时,路由器会丢弃该数据包并发送超时报文。...接收回显应答报文:目标主机收到回显请求报文后,构造一个ICMP回显应答报文(Type 0),并将其封装在IP数据报中发送回发送方主机。 3....发送ICMP报文:发送方主机发送一个带有TTL值为1的ICMP报文(通常是回显请求报文),当该报文到达第一个路由器时,TTL值减为0,路由器丢弃该报文并发送一个超时报文(Type 11)回给发送方。...记录路径信息:发送方记录第一个路由器的IP地址,然后发送一个带有TTL值为2的ICMP报文,重复上述过程,直到数据包到达目标主机或达到最大TTL值。 3.

    21120

    计算机网络面试题整理

    TTL的最大值是255,TTL的一个推荐值是64 3.TTL原理 虽然TTL从字面上翻译,是可以存活的时间,但实际上TTL是IP数据包在计算机网络中可以转发的最大跳数。...TTL字段由IP数据包的发送者设置,在IP数据包从源到目的的整个转发路径上 每经过一个路由器,路由器都会修改这个TTL字段值,具体的做法是把该TTL的值减1,然后再将IP包转发出去。...如果在IP包到达目的IP之前,TTL减少为0,路由器将会丢弃收到的TTL=0的IP``包并向IP包的发送者发送ICMP 发送超时报文。...B电脑应答ARP请求,向A电脑发起单向应答,告诉A电脑自己的MAC地址为90:A4:DE:C2:DF:FE 知道了MAC地址后,开始进行真正的ping请求,由于B电脑可以根据A电脑发送的请求知道源MAC...ICMP协议是一种面向无连接的协议,它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。ICMP是一个网络层协议。

    46730

    ICMP 协议分析

    3.1 ICMP 差错报文的类型分析: 1、ICMP 目标不可达消息:IP 路由器无法将 IP 数据报发送给目的地址时,会给发送端主机返回一个目标不可达 ICMP 消息,并在这个消息中显示不可达的具体原因...3、ICMP 超时消息:IP 数据包中有一个字段 TTL(Time to live,生存周期),它的值随着每经过一个路由器就会减 1,直到减到 0 时该 IP 数据包被丢弃。...ICMP 回显请求和 ICMP 回显应答报文是配合工作的。当源主机向目标主机发送了 ICMP 回显请求数据包后,它期待着目标主机的回答。...目标主机在收到一个 ICMP 回显请求数据包后,它会交换源、目的主机的地址,然后将收到的 ICMP 回显请求数据包中的数据部分原封不动地封装在自己的 ICMP 回显应答数据包中,然后发回给发送 ICMP...其原理很简单,开始时发送一个 TTL 字段为 1 的 UDP 数据报,而后每次收到 ICMP 超时后,按顺序再发送一个 TTL 字段加 1 的 UDP 数据报,以确定路径中的每个路由器,而每个路由器在丢弃

    1.5K10

    网络诊断工具:ICMP、Ping 和 Traceroute 的原理与应用

    可变字段:这部分的内容根据ICMP消息的类型和代码不同而有所不同。例如,在回显请求和回显应答中,这部分包含了一个标识符和序列号。...需要进行分片但设置了不分片位(Code 4):数据包太大,需要分片,但IP头部的不分片(DF)标志被设置。...代码字段设置为 0。 校验和字段,用于错误检测。 标识符和序列号,用于标识回应的请求。 可选的数据部分,通常包含时间戳和额外的填充数据,以帮助测量往返时间。...处理应答:如果目标设备可达并正确配置,它将接收到 ICMP 回显请求,并发送一个 ICMP 回显应答消息回来。这个应答消息的类型字段设置为 0(表示回显应答)。...它通过发送一系列ICMP回显请求消息,每个消息的生存时间(TTL)逐渐增加,从1开始。每当数据包经过一个路由器,其TTL减1,当TTL减至0时,路由器会丢弃该包并发送一个ICMP超时响应回原始发送者。

    51120

    ICMP报文详解

    应答系统收到请求报文时填写接收时间戳,在发送应答时填写发送时间戳。大多数的实现是把后面两个字段都设成相同的值。 3>主机使用ICMP地址掩码请求报文可向子网掩码服务器得到某个接口的地址掩码。...系统广播它的ICMP请求报文。ICMP报文中的标识符和序列号字段由发送端任意选择设定,这些值在应答中将被返回,这样,发送端就可以把应答与请求进行匹配。...3.ICMP回显请求和回显应答报文格式: 1>Unix系统在实现ping程序时把ICMP报文中的标识符字段置成发送进程的ID号。...当应答返回时,用当前时间减去存放在ICMP报文中的时间值,即是往返时间。 4>当返回ICMP回显应答时,要打印出序列号和TTL,并计算往返时间。TTL位于IP首部的生存时间字段。...ping程序通过在ICMP报文数据段中存放发送请求的时间值来计算往返时间。当应答返回时,用当前时间减去存放在ICMP报文中的时间值,即是往返时间。

    2.6K30

    一文吃透ICMP协议:网络诊断与故障排查的关键利器

    例如,当主机发送多个回显请求时,每个请求的标识字段都可以设置为不同的值,这样在收到回显应答时,就可以根据标识字段来确定该应答对应的是哪个请求 。...发送方每发送一个回显请求,序列号就会递增,接收方在返回回显应答时,会将接收到的序列号原样返回。这样,发送方可以根据序列号来判断是否所有的请求都得到了正确的回应,以及检测是否存在丢包等情况 。...例如,当网络中存在路由环路时,数据包会在环路中不断转发,导致 TTL 值不断减少直至为 0,此时路由器就会发送超时报文 ;二是分片重组超时,当一个大的 IP 数据包被分片后,在目标主机进行重组时,如果在规定时间内没有收到所有的分片...例如,当我们在命令行中输入 “ping www.baidu.com” 时,系统会向百度服务器发送 ICMP 回显请求报文,百度服务器收到后会返回 ICMP 回显应答报文。...在复杂多变的网络环境中,ICMP 协议为网络的稳定运行和性能优化提供了有力保障。

    17110

    所谓 ICMP,不过将军与士卒而已

    地址,而主机 B 都关机了自然也就无法应答这个请求报文了。...ping 也并不是啥事也没做,它在 ICMP 报文格式中又添加了两个字段:标识符和序号。这俩其实很好理解: 1)标识符用来区分是哪个应用程序发 ICMP 包。...设置 IP 包生存周期的主要目的,是为了在路由控制遇到问题发生循环状况时,避免 IP 包无休止地在网络上被转发。...比如说,将 TTL 设置 为 1,那么遇到第一个路由器的时候,这个 IP 数据报就会被丢弃,接着返回 ICMP 差错报文,类型是 ICMP 超时消息。...接下来将 TTL 设置为 2,第一个路由器过了,遇到第二个路由器时这个 IP 数据报就会被丢弃,接着返回ICMP 差错报文。 ...... 这样,traceroute 就拿到了所有路由器 IP。

    45820

    HCNP学习笔记之ICMP协议与ping原理以及用Python实现ping

    由数据链路层所能发送的最大数据帧,即MTU(Maximum Transmission Unit)为1500,计算易知ICMP协议在实际传输中数据包为:20字节IP首部 + 8字节ICMP首部+ 1472...这个往返时间的计算方法是:ping命令在发送ICMP报文时将当前的时间值存储在ICMP报文中发出,当应答报文返回时,使用当前时间值减去存放在ICMP报文数据中存放发送请求的时间值来计算往返时间。...ping返回接受到的数据报文字节大小、TTL值以及往返时间。 Unix系统在实现ping程序时是把ICMP报文中的标识符字段置成发送进程的 ID号。...的 UDP(后面就 知道 UDP 是什么了)数据包,而经过的第一个路由器收到这个数据包以后,就自动把 TTL 减1,而 TTL 变为0以后,路由 器就把这个包给抛弃了,并同时产生 一个主机不可达的...在未到达超时时间之前socket处于阻塞状态一直等待响应,当有数据传回时就接受响应,然后提取包含标识符ID的ICMP报文首部和包含发送时间值的ICMP内容部分,计算请求-响应的延时间隔。

    1.5K40

    Icmp protocol

    我们可以用tcpdump来抓取icmp的数据包就可以看到整个数据的本来面目了。 1.ICMP协议: ICMP经常被认为是IP层的一个组成部分,它传递差错报文以及其他需要注意的信息。...(一般发送时间戳和接收时间戳一般设成相同的值) 往返时间rtt(round trip time)是应答时间-发送时间 生存时间ttl(time to live)是IP首部中的一个字段,指的是报文能够在网络中存活的时间...每经过一个路由器时,ttl值就减1,当减到0时,这个数据包就被路由器抛弃了。...在UNIX 中ICMP报文中的会把标识符字段设置为发送进程的id号,这样的话可以在同一台主机上同时运行多个ping程序。 客户程序在应答和请求之间进行匹配是通过序列号字段实现的。...当数据报到达目的端时,IP地址清单都会被复制到ICMP回显应答中,这样用户就可以通过ping的输出信息查看目的主机的IP了。

    1.3K10

    网络协议 5 - ICMP 与 ping:投石问路的侦察兵

    ICMP 报文有很多的类型,不同的类型有不同的代码,最常用的类型是主动请求,代码为 8,主动请求的应答,代码为 0。从大的方面看可以分为 查询报文类型和差错报文类型。...同理,主动请求的回复,称为ICMP ECHO REPLY。比起原生的 ICMP,这里面多了两个字段,一个是标识符,另一个是序号。...应答数据包的类型字段为 0,顺序号为接收到的请求数据包中的顺序号。 将应答数据包发给主机 A。     在规定的时间内,源主机如果没有接到 ICMP 的应答包,则说明目标主机不可达。     ...将 TTL 设置成 1 时,表示这个数据包的 MP 为 1,碰到第一个“拦路虎”(通常是路由器或一个其它类型的关卡)就会阵亡了,然后就会返回一个 ICMP 包,这个包就是 网络差错包,类型是时间超时。...如果中间遇到窄的关卡就会被卡主,返回 ICMP 网络差错包,类型是“需要进行分片但设置了不分片”。就这样,每次收到ICMP“不能分片”差错时就减小分组的长度,从而确定整个路径中的 MTU。

    1.1K31

    听说你 ping 用的很 6 ?给我图解一下 ping 的工作原理!

    ICMP 回送请求和回送应答报文 相比原生的 ICMP,这里多了两个字段: 标识符:用以区分是哪个应用程序发 ICMP 包,比如用进程 PID 作为标识符; 序号:序列号从 0 开始,每发送一次新的回送请求就会加...ICMP 时间超过消息 此外,有时可以用 TTL 控制包的到达范围,例如设置一个较小的 TTL 值。...主机 B 会构建一个 ICMP 回送响应消息数据包,回送响应数据包的类型字段为 0,序号为接收到的请求数据包中的序号,然后再发送出去给主机 A。 ?...比如,将 TTL 设置 为 1,则遇到第一个路由器,就牺牲了,接着返回 ICMP 差错报文网络包,类型是时间超时。...接下来将 TTL 设置为 2,第一个路由器过了,遇到第二个路由器也牺牲了,也同意返回了 ICMP 差错报文数据包,如此往复,直到到达目的主机。

    80820

    你知道ping命令是如何工作的吗?

    在选项数据中,ping 还会存放发送请求的时间值,来计算往返时间,说明路程的长短。 五、差错报文 根据什么是ICMP?ICMP如何工作?...是为原点抑制。 11-ICMP超时 为了限制IP数据包在计算机网络中的存在的时间,我们给数据包设计一个值TTL,能够避免IP包在网络中的无限循环和收发,节省了网络资源。...Traceroute 的第一个作用为故意设置特殊的 TTL,来追踪去往目的地时沿途经过的路由器。...思路很骚啊~我给你慢慢道来: 先设置TTL为1,数据包到第一个路由器就嗝屁,临死前把第一个路由器的IP搞到手了。返回时间超时的ICMP差错报文。...然后设置TTL为2,数据包到第二个路由器嗝屁,临死前把第二个路由器的IP搞到手。 再设置TTL为3… 以此类推,直到到达目的主机,如此就拿到了线路上所有路由器的IP。

    40330

    ICMP 协议「建议收藏」

    原因是,在通信途中的某处的一个路由器由于不能处理所有的数据包,就将数据包一个一个丢弃了。或者,虽然到达了对方,但是由于搞错了端口号,服务器软件可能不能接受它。...响应请求 我们日常使用最多的ping,就是响应请求(Type=8)和应答(Type=0),一台主机向一个节点发送一个Type=8的ICMP报文,如果途中没有异常(例如被路由器丢弃、目标不回应ICMP或传输失败...而且在选项数据字段里,将填入原先数据包的IP 首部和ICMP 的开始8 字节。正如ping 命令的时候看到的,ICMP 回送请求的先头8 字节里包含了标识符和序号字段。...,对整个网络的影响非常少; 第二种方法就是在主机上设置ICMP数据包的处理规则,最好是设定拒绝所有的ICMP数据包。...设置ICMP数据包处理规则的方法也有两种: 一种是在操作系统上设置包过滤; 另一种是在主机上安装防火墙。

    2K41

    Linux 命令(109)—— ping 命令

    3.选项说明 -4 只使用 IPv4 -6 只使用 IPv6 -A 探测包发送间隔自适应往返时间,这样网络中存在的未应答的探测请求一般不会超过一个 -a   每次发送数据时发出鸣响(Audible...为请求包分配一个 20 比特的 flow label。如果 FLOW_LABEL 为 0,内核会随机分配 -f   采用洪泛模式大量且快速地向目标发送数据包。...只有超级用户可以将间隔设置为小于0.2 秒的值 -L 抑制组播报文回送,只适用于 ping 的目标为一个组播地址 -l PRELOAD 在没有接受到回复报文之前能发送的最多报文。...PMTUDISC_OPT 取值可以为 do(不允许分段,甚至不允许在本地分段)、want(找出 PMTU,在如果包太大就在本地分段) 或 dont(不要设置 IP 包首部中的 DF 位,即允许分段) -...当我们在使用 ping 命令时,返回结果里会带一个 TTL 值。

    15.7K22
    领券