Für Lernzwecke implementiere ich TCP (im Moment nur RFC 793), aber ich habe keine
Idee, wie man es testet. Die meisten TUN / TAP-Sachen im Internet sind veraltet (z.B.
Linux-API-Aufrufe funktionieren nicht mehr) und erklärt einfach nicht genug. Außerdem habe ich
Fühlen Sie sich wie ein Gerät erstellen und Pakete weiterleiten etc. sind nicht der beste Weg
zu Lernzwecken. Zum Beispiel würde ich nur socket()
überschreiben,
listen()
, connect()
, accept()
, send()
, recv()
etc. in einem Programm eher
als Weiterleitung alle Ethernet-Datenverkehr an ein Gerät / Programm, das das tut
Buchhaltung für das ganze System und nicht für ein einzelnes Programm.
Ich frage mich, ob das möglich ist. Wenn nicht, würde ich gerne den einfachsten Weg wissen Testen Sie eine TCP-Implementierung unter Linux.
Da ich RFC 793 befolge, wäre es großartig, wenn ich eine IP (Internet Protokoll wie in der RFC-API in meiner Anwendung erwähnt. Ist das möglich oder möglich? Ich muss mich mit TUN / TAP-Sachen anlegen?
Danke ..
Wenn wir über Forschung sprechen, empfehle ich Ihnen, Engineering mit Logic: Rigorous Test-Oracle zu lesen Spezifikation und Validierung für TCP / IP und die Sockets-API
Es enthält einen Abschnitt zum Testen der TCP / IP-Implementierung: "EXPERIMENTELLE VALIDIERUNG: TEST INFRASTRUKTUR"
Sie könnten versuchen, zwei Peers einzurichten, von denen einer einen RAW-Socket und der andere einen TCP-Socket verwendet.
Wenn sie kommunizieren können und Pakete tatsächlich auf die gleiche Weise wie TCP bereitgestellt / wiederhergestellt werden, wissen Sie, dass Ihre benutzerdefinierte Implementierung erfolgreich ist.
Alles, was Sie brauchen, ist, alle tcp-Pakete mit Bits (syn, ack, fin usw.) abzufangen, die Ihre Anwendung gesendet hat und um zu sehen, ob sie richtig funktioniert:
Es könnte einfach mit Drahthai oder anderen Schnüfflern gemacht werden. Beim Testen sehen Sie alle TCP-Pakete mit Bits, die Sie gesendet haben.
Damit Sie Linux-Systemaufrufe sehen können, die Ihre Anwendung aufruft, können Sie GDB oder einen anderen Debugger verwenden.
Tags und Links linux networking tcp