【问题标题】:What happens if the SEQ Number in the ARP protocol Packet is more than 65536?如果 ARP 协议报文中的 SEQ Number 大于 65536 会怎样?
【发布时间】:2022-01-01 09:44:26
【问题描述】:

根据the documentation,SEQ Number的长度是16位...65536;那么,如果我发送一个 65536 ICMP Request (Ping)...会发生什么?

【问题讨论】:

  • 6553_5_ 表示为 1111 1111 1111 1111,不能用 16 位数字表示 6553_6_ 或更高。
  • 序列重置,可能是一个。真的没有其他选择,除非终止操作。
  • 好的,但是每次 ping 主机时 SEQ 都会增加...
    如果我在 CMD 上使用此行: ping -n 65536 192.168.1.0...请考虑 192.168.1.0是我的路由器网关...最后一个数据包会发生什么?
  • @ahmeddeeb:如果您阅读了 RFC 的全部内容,实际上并没有要求序列号是连续的。它们可能是具有非单位步长的等差数列 (1, 7, 13, 19, ...),甚至可能是几何数列 (1, 2, 4, 8, 16, ...)。目的只是为了允许匹配对请求的回复。

标签: ping icmp


【解决方案1】:

唯一的要求是回复中的序列号与请求中的序列号匹配。这是为了帮助匹配对请求的回复。

事实上,我不确定是否要求序列号是连续的(a)。如果它们连续的,那么最可能的情况是它会从65535 环绕到0(或者如果要避免为零,则可能是1(b).

您可能认为序列号要求连续的数字,但存在具有该属性的序列:

  • 非酉算术序列,例如1, 5, 9, 13, 17, ...
  • 几何序列如1, 7, 49, 343, 2401, ...;甚至
  • PI 的非重复数字,3, 1, 4, 5, 9, 2, 6, ... (back to 3)

(a) RFC 声明(我的重点):

标识符和序列号可能被 echo 发送者用来帮助匹配回复与 echo 请求。例如,标识符可能被用作TCP或UDP中的端口来标识会话,而序列号可能 在每个发送的回显请求上递增。 echoer 在 echo 回复中返回这些相同的值。

诸如“shall”、“must”、“may”和“might”之类的词在标准文档中具有非常具体的含义,后两者更具建议性而非强制性。


(b) 请记住,目的是匹配对请求的回复。循环通过 65000 多个 ICMP 数据包并从前一个循环中获得回复的机会非常渺茫。每秒 ping 一次(虽然这也不是严格要求的,而是大多数 ping 程序似乎都在做的事情),大约需要 18 小时。

我希望超时或 TTL 属性在此之前long

【讨论】:

    【解决方案2】:

    在我的 android 手机上使用 termux 在 localhost 127.0.0.1 上 ping 自己 3 天后,结果它变成了 0...是的,ICMP MESSAGE 中的 SEQ NUMBER 可以在这种情况下...

    【讨论】:

      猜你喜欢
      • 2021-05-23
      • 1970-01-01
      • 1970-01-01
      • 2021-05-13
      • 2022-01-01
      • 2010-11-12
      • 2011-05-30
      • 2011-06-06
      • 1970-01-01
      相关资源
      最近更新 更多