ping neukazuje time pro -s menší než 8

ping neukazuje time pro -s menší než 8
« kdy: 25. 12. 2021, 10:32:59 »
čistě ze zajímavosti, proč (linuxový) ping neukazuje v odpovědích time pro -s 1 až 7
Kód: [Vybrat]
icmp_seq=1 ttl=54 time=19.3 ms # -s 8
icmp_seq=1 ttl=54 #-s 7


vcunat

  • ***
  • 129
    • Zobrazit profil
    • E-mail
Re:ping neukazuje time pro -s menší než 8
« Odpověď #1 kdy: 25. 12. 2021, 11:32:04 »
Odhadem, nespolehlivost přiřazení příchozí odpovědi k odpovídajícímu dotazu?

Re:ping neukazuje time pro -s menší než 8
« Odpověď #2 kdy: 25. 12. 2021, 12:49:19 »
Do packetu se musí vejít "timestamp", z kterého se po návratu odečte ten čas.
Pokud je packet příliš malý (viz kód), čas se nepočítá (timing = 0).
Kód: [Vybrat]
// iputils-20180629, ping.c
if (datalen >= sizeof(struct timeval))  /* can we time transfer */
                timing = 1;

U mě je tedy sizeof(struct timeval) rovno 16, takže ping -s 16 čas ukazuje, ale ping -s 15 už ne.

RDa

  • *****
  • 2 567
    • Zobrazit profil
    • E-mail
Re:ping neukazuje time pro -s menší než 8
« Odpověď #3 kdy: 25. 12. 2021, 12:50:29 »
8B potrebujes na ulozeni presneho timestampu (4B je jenom s rozlisenim sekund).

A jestli se to dela takto, tak si muzes pohrat s payloadem na routru, aby vykazoval nizsi nebo vyssi ping :-)