Wenn das Paket ankommt, generiert die NIC einen Interrupt und der Kernel übernimmt dann. Ich möchte die Zeit messen, zu der ein Paket eines bestimmten TCP-Flusses ankommt.
Wie mache ich das unter Linux? Das machen Tools wie tcpdump.
Akzeptierte Antwort:
tcpdump
versieht alle Pakete mit Zeitstempeln. Sie sollten also tcpdump verwenden können. Andernfalls könnten Sie Wireshark ausprobieren, das auch den Netzwerkverkehr überwacht, jedoch mit einer schönen und leistungsstarken GUI. Wenn Sie diesen Prozess nicht skripten müssen, würde ich sagen, dass Wireshark in dieser Situation Ihr Freund ist.
Weitere Informationen zur Verwendung von Wireshark finden Sie unter http://www.howtogeek.com/104278/how-to-use-wireshark-to-capture-filter-and-inspect-packets/.
Wenn Sie mehr daran interessiert sind, wie Sie dies selbst messen können, können Sie entweder tcpdump
untersuchen mit strace
oder, wie vorgeschlagen, die Quelle lesen. strace
gibt Ihnen eine Liste von Systemaufrufen, die Sie in Ihrer eigenen Anwendung verwenden können. Die einfachste Lösung wäre jedoch, tcpdump
auszuführen , und filtern Sie dann die Ausgabe durch awk
oder ein anderes Tool, das die Timestamp-Spalte herausfiltern kann.
Außerdem finden Sie weitere Informationen zur Verwendung von tcpdump
auf http://danielmiessler.com/study/tcpdump/