PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MTU mittels sockets ermitteln?


freeze
27.08.2007, 11:31
Hey @all,

ich bräuchte irgendwie die möglichkeit die mtu zu ermitteln. Kann man sowas mit c/c++ hinbekommen und wenn ja wie?

bräuchte das für Windows (>= W2K) und Linux.

Hoffe mir kann diesbezüglich jemand helfen, bin über jede info dankbar

Vielen Dank im Voraus

Lg freeze


butterkeks
27.08.2007, 17:34
schau dir dazu mal die IP_MTU und IP_MTU_DISCOVER Flags von getsockopt() an... das sollte zumindest unter linux gehen

freeze
30.08.2007, 09:57
Danke vielmals, aber wie bekomme ich die mtu unter Windows? :(

Lg

mnemonic
30.08.2007, 10:32
Über die Registry, wie so ziemlich alles andere auch...

System Key: [HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\[Adapter ID]]
Value Name: MTU
Data Type: REG_DWORD (DWORD Value)
Value Data: Default = 0xffffffff

Quelle: http://www.pctools.com/guides/registry/detail/280/

Pukys
05.09.2007, 16:16
Hey @all,

ich bräuchte irgendwie die möglichkeit die mtu zu ermitteln. Kann man sowas mit c/c++ hinbekommen und wenn ja wie?

bräuchte das für Windows (>= W2K) und Linux.

Hoffe mir kann diesbezüglich jemand helfen, bin über jede info dankbar

Vielen Dank im Voraus

Lg freeze

Neben den bereits angesprochenen Varianten geht natürlich auch ein portabler Ansatz. Dazu mußt du schrittweise längere UDP-Pakete übertragen. Sobald die MTU überschritten wird, müssen zwei Pakete gesendet werden, die Antwortzeit bricht damit ein. Da das ein empirischer Ansatz ist, der von Paketwiederholung, Kollisionen und anderen Aspekten überlagert sein kann, muß die Messung natürlich mehrfach durchgeführt werden. Wenn der Messvorgang über mehrere Hops geht, bekommst du so maximal die *kleinste* beteiligte MTU heraus, mithin wird sich das über einen Messbereich verschmieren, so daß du real eher eine mittlere MTU plus einer mittleren Fehlerabweichung bestimmen wirst.