UDP Proxy Server mit Python?

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
antaeus
User
Beiträge: 48
Registriert: Dienstag 19. September 2006, 10:10

Hallo zusammen,

ist jemandem von euch zufällig ein Code Beispiel für einen UDP Proxy Server über den Weg gelaufen?

Ich muss in den nächsten Wochen einen SIP Proxy Server entwickeln und stehe gerade etwas hilflos vor der Aufgabe...

___

Falls es keine Code-Beispiele für UDP Proxies gibt, dann wäre mir mit einem sehr einfach zu verstehenden HTTP Proxy schon mal geholfen um zu sehen, wie man generell eine Proxy aufbaut. Ich habe gesehen, dass es diverse HTTP Proxy Implementierungen in Python gibt. Die sind aber meist ziemlich umfangreich und aufgebläht. Ich brauche sozusagen den einfachst möglichen Proxy!

Grüße
BlackJack

Einen "UDP Proxy" gibt's nicht, weil das kein Anwendungsprotokoll sondern ein Transportprotokoll ist. Das heisst Du brauchst Informationen über das Protokoll, das die Anwendung in die UDP Pakete hineinsteckt.

Ganz grundsätzlich ist so ein Proxy ein "Man in the middle".

Mal ganz einfach gesprochen (ich kenne das SIP Protokoll nicht im Detail) kommt bei Deinem Proxy ein Paket von einer Anwendung mit einer Telefonnummer an, der Proxy schickt dieses Paket an ein "echtes" SIP Gateway, bekommt eine Antwort, z.B. "besetzt", und muss diese Antwort dann an die Anwendung senden.

Die meisten Proxies bieten nicht nur einfach so eine Weiterleitung, sondern noch zusätzlich Funktionalität. Bei SIP werden zum Beispiel am Anfang Parameter wie Audiocodecs ausgehandelt. Da könnte ein Proxy eine Umkodierung anbieten oder eine Möglichkeit die Audiodaten nicht nur weiterzuleiten sondern auch mitzuschneiden. Oder wenn auf beiden "Seiten" ein Proxy steht, dann könnten diese beiden die Pakete zusätzlich verschlüsseln etc.

Der erste Schritt ist also das SIP Protokoll zu verstehen.
dev
User
Beiträge: 49
Registriert: Montag 23. Januar 2006, 09:52
Kontaktdaten:

Hi,
antaeus hat geschrieben: Ich muss in den nächsten Wochen einen SIP Proxy Server entwickeln
na dann viel Spaß. ;-) scnr

In welchem Zusammenhang brauchst Du das?

Wie BlackJack ja schon angedeutet hat wäre die korrekte abstrakte Bezeichnung "Application Level Gateway".

Und ein SIP Proxy und folgende hat spezielle Aufgaben, für die er das Protokoll kennen muß.

Die klassische Aufgabe ist z.B. die, stellvertretend für SIP UAs (Telefone), welche private Adressen haben, über eine public IP erreichbar zu sein.

In Perl geschrieben findest Du etwas in der Art hier.

Für Python würde ich Dir empfehlen Shtoom (svn) und eventuell Sine anzuschauen.

Und natürlich das RFC 3261 durchzulesen.

Ciao,
dev
Antworten