Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Strict 模式下的 Ping Error 的 Bug #1

Open
leonardodalinky opened this issue Nov 24, 2020 · 3 comments
Open

Strict 模式下的 Ping Error 的 Bug #1

leonardodalinky opened this issue Nov 24, 2020 · 3 comments

Comments

@leonardodalinky
Copy link

不知道我是否理解出错。
对 Ping Error 的检验逻辑中,因为 ping 的是无效地址(192.168.2.3),因此不会收到回复包。
但在 strict_mode == True 的情况下,会判定结果的 seq 序列错误,而事实上其并无 seq 的属性。
希望改进 test_ping 函数中的逻辑。
运行结果如下:

client ping 192.168.2.3
Icmp Seq not correct!
PING 192.168.2.3 (192.168.2.3) 56(84) bytes of data.

--- 192.168.2.3 ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3065ms
@jameslahm
Copy link
Member

ping 不存在的ip应该返回目标不可达的icmp消息?所以这里可以检测icmp序列?

@leonardodalinky
Copy link
Author

最好是能返回 icmp 消息,但在有默认路由表项(0.0.0.0)的情况下,不一定会回复 unreachable,而且在 RFC 792 标准下的 unreachable 的 icmp 协议头里亦没有 seq 这一项的属性,这里还是不应该检验错误包的 seq。

根据日常经验,ping 工具最常见的应该是请求超时,我觉得路由器直接舍弃这个错误地址的包也没啥问题(

@jameslahm
Copy link
Member

嗯嗯 你说的有道理 但是针对这个不可达ip,考虑到文档要求及助教要求,暂时还是保留这个测试,主要是为了检测是否回复目标不可达的消息。实际输出的seq序列我猜测应该是跟icmp包里面的seq序列是无关的,可能是按照到达时间输出的,按照协议规定假设第二个32位unused,输出的序列应该是按照顺序的~

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants