如何从船首发送和接收开始计算时间?

问题描述 投票:0回答:1

我在Scapy中编写了这样的代码以进行简单的ping-没什么特别的,但是看起来很有希望。

def ping(ip):
    answer = sr1(IP(dst=ip) / ICMP())

我如何测量从头到尾从发送到接收的旅行时间。问题很简单,但学习起来也必不可少。我在Internet和文档中搜索了一些解决方案,但没有效果。

您能帮上忙吗?

完整的代码看起来像这样,但是测量ping太长。

import time

from scapy.layers.inet import ICMP, IP
from scapy.sendrecv import sr1, sr


def ping(ip):
    packet = IP(dst=ip) / ICMP()
    t0 = time.perf_counter()
    answer = sr1(packet)
    t1 = time.perf_counter()
    print(t1 - t0)

    answer.show()
    answer[ICMP].show()

ping('192.168.1.1')

t1 - t0 = 0.12669169999999985s的结果。ping.exe = 4ms出了点问题。

ip scapy icmp
1个回答
0
投票

您应该使用sent_time参数。例如,如果您使用的是sr,则可以执行以下操作:

ans, unans = sr(IP(dst="www.google.com")/ICMP())
timestamp = ans[0][1].time - a[0][0].sent_time

在您的示例中:

packet = IP(dst=ip)/ICMP()
a = sr1(packet)
timestamp = a.time - packet.sent_time

也可以使用

© www.soinside.com 2019 - 2024. All rights reserved.