Как найти путь MTU между соединениями? Мне нужно это, чтобы определить размер пакета моего UDP-соединения. Есть ли в .Net такие вещи, как Path MTU Discovery?
Обнаружение MTU пути в C#
Ответы (3)
Взято из здесь:
winsock не поддерживает сообщение об обнаруженном MTU, хотя другие стеки TCP/IP поддерживают (например, AIX через параметр сокета IP_GETPMTU). Поскольку winsock не может сообщить об этом, .NET не может предоставить API (который должен быть поверх winsock).
person
bitbonk
schedule
10.11.2010
Я нашел способ (обходной путь), чтобы найти путь mtu для udp на С#. просто попробуйте отправить пакет udp с параметром udpclient.dontfragment, установленным в true. если он выдает исключение, уменьшайте размер пакета до тех пор, пока исключение не будет выброшено. если кто-то хотел бы увидеть какой-то образец, просто спросите.
person
Syaiful Nizam Yahya
schedule
11.11.2010
Меньший MTU может быть вдоль пути. Таким образом, вы не получаете исключение, пакет отправляется, но не принимается. Вы должны отправить некоторые размеры пакетов и сделать другую конечную точку, чтобы отправить вам несколько пакетов ACK обратно, чтобы выполнить обнаружение MTU.
- person xmedeko; 18.10.2018
Любое устройство на пути, чей MTU меньше, чем пакет, будет отбрасывать такие пакеты и отправлять обратно сообщение ICMP Destination Unreachable (Datagram Too Big), содержащее его MTU. en.wikipedia.org/wiki/
- person aminhotob; 30.10.2018
Вы пробовали использовать libpcap с C#? Существует библиотека SharpPCap, которую можно использовать для поиска PMTU.
person
isyi
schedule
06.02.2012
Кроме того, могу ли я получить ваш пример кода для использования Udpclient для определения Path MTU без libpcap?
- person isyi; 07.02.2012