Хочу заранее отрегулировать размер посылаемых пакетов, так, чтобы размер пакета не превышал MTU того пути, который ведет к заданному хосту в сети.
Подскажите, пожалуйста, как можно определить MTU для заданного Destination IP ?
Здравствуйте, Vladimir Davydov, Вы писали:
VD>Хочу заранее отрегулировать размер посылаемых пакетов, так, чтобы размер пакета не превышал MTU того пути, который ведет к заданному хосту в сети.
Надо узнать тип сети назначения. А лучше пользоваться тем, что наптсано в стандарте по протоколу конкретному.
Но гарантии не будет. Пакет может пройти по другой сети, в которой MTU будет еще меньше, чем там, куда ты шлешь.
Re[2]: Определить MTU для заданного Destination IP
Здравствуйте, old->*Plutonia_Experiment(), Вы писали:
OE>Здравствуйте, Vladimir Davydov, Вы писали:
VD>>Хочу заранее отрегулировать размер посылаемых пакетов, так, чтобы размер пакета не превышал MTU того пути, который ведет к заданному хосту в сети.
OE>Надо узнать тип сети назначения. А лучше пользоваться тем, что наптсано в стандарте по протоколу конкретному. OE>Но гарантии не будет. Пакет может пройти по другой сети, в которой MTU будет еще меньше, чем там, куда ты шлешь.
А как тогда функция sendto() при посылке через RAW-сокет узнает, "Message too long" или "не too long" ? Ведь она же откуда-то берет размер MTU, чтобы сравнить его с размером посылаемого пакета ?
Re[3]: Определить MTU для заданного Destination IP
Здравствуйте, Vladimir Davydov, Вы писали:
OE>>Надо узнать тип сети назначения. А лучше пользоваться тем, что наптсано в стандарте по протоколу конкретному. OE>>Но гарантии не будет. Пакет может пройти по другой сети, в которой MTU будет еще меньше, чем там, куда ты шлешь.
VD>А как тогда функция sendto() при посылке через RAW-сокет узнает, "Message too long" или "не too long" ? Ведь она же откуда-то берет размер MTU, чтобы сравнить его с размером посылаемого пакета ?
А она узнает потому, что RAW — это IP. Для него стандарт — 576 байт. Для ETHERNET можно 1500.
Все протоколы имеют поддержку в виде провайдера своего.
Этот провайдер определяется не по типу пакета, а по типу сокета, в который ты пихаешь пакет.
И на совести провайдера лежит передача пакета более низкоуровневому протоколу