# RMI und UDP



## Azge (18. Nov 2009)

Hallo zusammen!

Ich hätte da ein paar Fragen zu oben genannten Protokollen. Vielleicht könnt ihr mir ja die ein oder andere beantworten - wäre super! 

1. Wird bei RMI eine Nachricht auch garantiert zugestellt? (bzw die Funktion wirklich aufgerufen bzw der Rückgabewert gesendet)

2. Bei UDP ist das ja nicht der Fall. Was sind die Hauptgründe dafür? Gibt es da irgendwelche "Pattern" die beim Senden von Nachrichten auftreten?

Erstmal soweit 
Danke,
Azge


----------



## HoaX (18. Nov 2009)

1) Ja, oder  es fliegt eine Exception dass die Verbindung abgebrochen ist afaik.
2) UDP ist eben Verbindungslos, da geht das nicht. Wenn du es dennoch brauchst, dann musst du dich selbst darum kümmern und den Empfang der Pakete quittieren.


----------



## tuxedo (19. Nov 2009)

Azge hat gesagt.:


> 1. Wird bei RMI eine Nachricht auch garantiert zugestellt?



RMI benutzt TCP. Und das TCP Protokoll stellt das gesicherte zustellen der Pakete sicher. RMI muss sich da um nix kümmern. 



> 2. Bei UDP ist das ja nicht der Fall. Was sind die Hauptgründe dafür?



Wie schon erwähnt wurde ist UDP verbindungslos/zustandlos. Ein Paket verlässt den Quellrechner  und wandert einzeln und für sich auf unbestimmten Weg zum Zielrechner. Dabei darf es vorkommen dass ein Paket sein Ziel nicht erreicht.
Hinzu kommt, dass prinzipiell jedes Paket über einen anderen Weg zum Zielrechner kommen kann. Das eine wird von A nach Z über B, C, D, E, F, G, ..., Y geroutet. Das nächstewird Von A nach Z über B, C und D geroutet. Trotz dass Paket 1 zuerst raus ging wird Paket 2 vor Paket 1 eintreffen da der Weg einfach kürzer war. Das hat zur Folge dass du, wenn du UDP benutzt und ein sichere, reihenfolge richtige Übertragung haben willst, die ganzen Kontrollmechanismen (die TCP schon drin hat) selbst implementieren musst (oder du findest eine Lib die dir das abnimmt). Aber dann stellt sich unweigerlich die Frage: Wieso nicht gleich TCP benutzen?



> Gibt es da irgendwelche "Pattern" die beim Senden von Nachrichten auftreten?



Das kommt auf den Anwendungsfall an. Im groben liegt der unterscheid TCP zu UDP ja nur in diesen Punkten:

- Fragmentierung
- Reihenfolge
- Mögliche Paketverluste

Je nachdem mit welchen Punkt du leben kannst ist die vorgehensweise unterschiedlich... 

Vielleicht lässt sich das eine oder andere "Empfehlen" wenn man wüsste was du übertragen willst?!

Gruß Alex


----------

