Wie teste ich eine benutzerdefinierte TCP-Implementierung unter Linux?

8

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 ..

    
sinan 28.08.2017, 07:00
quelle

3 Antworten

3

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"

    
sibnick 05.09.2017 07:24
quelle
1

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.

C-Sockel

C RAW-Sockets

C TCP-Implementierung

    
Emanuele Giona 07.09.2017 08:17
quelle
0

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.

    
Alex Bod 01.09.2017 17:51
quelle

Tags und Links