Проверка времени задержки в запросе

Я заинтересован в том, чтобы иметь возможность определять определенные параметры, используя время загрузки, которое потребовалось для запроса, с момента его отправки до момента, когда он попал на сервер. Запрос, о котором я говорю, представляет собой пакет SYN в трехстороннем рукопожатии. Как я могу это сделать? С нетерпением жду вашего ответа! Конечно, какой язык мне следует использовать... Сейчас я тестирую Python + Scapy.


person user2634624    schedule 06.07.2014    source источник


Ответы (1)


Если вы хотите использовать Scapy (что кажется разумным выбором для того, что вы хотите сделать), вам нужно использовать атрибут Packet.time. Вот простой пример:

>>> def measure_delay(packet):
...     ans, _ = sr(packet, verbose=False)
...     if ans:
...         return reduce(lambda x, y: y.time - x.time, ans[0])
... 
>>> measure_delay(IP(dst='192.168.1.254')/TCP(dport=80))
0.07259798049926758

Из командной строки Unix вы также можете использовать hping3 и искать значение rtt=:

# sudo hping3 --syn 192.168.1.254 -p 80 -c 1
HPING 192.168.1.254 (wlan0 192.168.1.254): S set, 40 headers + 0 data bytes
len=44 ip=192.168.1.254 ttl=64 DF id=0 sport=80 flags=SA seq=0 win=14600 rtt=3.1 ms

--- 192.168.1.254 hping statistic ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 3.1/3.1/3.1 ms
person Pierre    schedule 06.07.2014
comment
Спасибо!! Но что вы думаете об использовании опции pkt.time? - person user2634624; 07.07.2014
comment
Я не понимаю вашего вопроса. Использование атрибута Packet.time — это хороший способ делать то, что вы хотите в Scapy, я упоминаю только решение hping3 для записи. - person Pierre; 07.07.2014