Определение максимального размера пакета - PullRequest
0 голосов
/ 26 марта 2010

Я работаю над проектом, связанным с сетью, и использую DTLS (TLS / UDP) для защиты связи.

Читая спецификации для DTLS, я заметил, что DTLS требует установки флага DF (Не фрагментировать).

В моей локальной сети, если я пытаюсь отправить сообщение размером более 1500 байт, ничего не отправляется. Это имеет смысл. В Windows sendto () сообщает об успехе, но ничего не отправляется.

Я, очевидно, не могу сбросить флаг DF вручную, поскольку он является обязательным для DTLS, и я не уверен, что лимит в 1500 байт (MTU?) Может измениться в некоторых ситуациях. Я думаю, что это возможно.

Итак, мой вопрос: "Есть ли способ открыть этот предел?" используя API?

Если нет, то какое будет наименьшее возможное значение?

Мое программное обеспечение работает под ОС UNIX (Linux / MAC OSX) и Windows, поэтому приветствуются различные решения для каждой ОС;)

Большое спасибо.

Ответы [ 2 ]

3 голосов
/ 26 марта 2010

Существует минимальный MTU, который должен поддерживаться - 576 байтов, включая заголовки IP. Поэтому, если вы держите свои пакеты ниже этого уровня, вам не нужно беспокоиться о PMTU-D (это то, что делает DNS).

0 голосов
/ 26 марта 2010

вам, вероятно, нужно «автоматически настроить» его, отправив целому диапазону размеров пакетов и посмотреть, какие из них поступят. думаю, что двоичный_поиск ...

...