Назад | Перейти на главную страницу

Почему блокируются некоторые UDP-пакеты?

В нашей организации есть две тестовые машины под управлением Windows XP. Пытаясь протестировать собственный сервер UDP-сообщений roll-my-own, я обнаружил, что оба могут нормально получать небольшие сообщения (до 2k). Однако, когда я тестирую отправку больших пакетов на обе эти машины, одна получает их нормально, а другая не может их получить вообще. На обеих машинах установлен пакет обновления 3 (SP3), и на обоих отключен брандмауэр Windows, но один все еще не работает. Может ли кто-нибудь сказать мне, где искать что-нибудь, что может блокировать или ограничивать размер пакета на машине Windows? Спасибо.

Посмотрите с Wireshark на обоих концах.

Кроме того, посмотрите настройки драйвера сетевой карты и, возможно, документацию по сетевой карте. Не каждая сетевая карта позволяет принимать пакеты размером 64 КБ, у некоторых возникают проблемы с пакетами всего 6 КБ (которые также считаются «кадрами большого размера»).

Общий совет: если вы пробуете что-то «новое», постарайтесь, чтобы остальная часть настройки соответствовала стандартам, насколько это возможно, чтобы избежать накопления мелких ошибок различных компонентов. В вашем случае это будет означать обеспечение MTU равным 1500 байтам, пока вы не убедитесь, что понимаете поведение вашего приложения при отправке и получении.

Обе системы подключены к одному коммутатору? Если да, то капель быть не должно. Если они находятся на одном и том же коммутаторе, то системы, возможно, могут сами отслеживать / сниффать / wirehark на предмет возможных подсказок.

UDP - это протокол без установления соединения. Это примерно означает, что доставка не может быть гарантирована. Причины не приезда могут быть практически любыми. Возможно, вы просто достигли максимального размера окна, и ваши пакеты были брошены в «битовое ведро». Что вы используете для измерения размера пакета? (вы отправляете данные wchar вместо данных char? (2 байта против 1 байта на символ) обычно размер окна составляет около 4 КБ ... с которым вы столкнетесь с 2 КБ 2-байтовых символов ...

Если ничего не помогает ... раскопайте wirehark и посмотрите, что на самом деле происходит по проводам.