, Интересно, если какой-то уровень сетевого программного обеспечения предполагает, что что-то меньшее является неправильно сформированным RTP-пакетом, и выбрасывает его?

трял в проблеме, о которой никогда не слышал раньше.

Я делаю онлайн-игру, которая использует UDP-пакеты в определенных действиях персонажа. После того, как я разработал модуль UDP, кажется, работает нормально. хотя у большинства членов нашей команды нет проблем, но человек, который является моим начальником, сказал мне, что что-то не так с этим модулем.

Я исследовал проблему и, наконец, обнаружил тот факт, что ... на его ПК, если размер пакета udp меньше 12, пакет никогда не доставлялся на другой хост.

Ниже приведена дополнительная информация:

Пакеты udp 1 ~ 11 байтов отбрасываются, пакеты в 12 байтов и более 12 байтов в порядке.O / S: Microsoft Windows Vista BusinessСетевая карта: Attansic L1 Gigabit Ethernet контроллер 10/100 / 1000Base-TWSASendTo возвращает TRUE.loopback пакет udp работает нормально.

как вы относитесь к этой проблеме? и что вы думаете ... в чем причина этой проблемы? что я должен сделать для следующего шага по делу?

PS. я не хочу дополнения, которое делает длину всех пакетов до 12 байтов.

 XAder11 янв. 2011 г., 09:20
Вы проверили с Wireshark, если кадры выходят?
 soulseekah11 янв. 2011 г., 09:01
Это может помочьisoc.org/inet97/proceedings/F3/F3_1.HTM
 Simone11 янв. 2011 г., 09:35
Работающие ПК поставляют одну и ту же карту NIC?
 waan11 янв. 2011 г., 09:38
рабочий ПК это не та же карта NIC. и я скоро попробую проволочную акулу. Спасибо!
 MSalters11 янв. 2011 г., 09:15
Это около 14 лет. Вряд ли будет актуальным сегодня.

Ответы на вопрос(5)

из его ПК: Во-первых, запустите анализатор пакетов на проблемном ПК, чтобы увидеть, поступит ли он на NIC. Если это произойдет, возможно, проблема в драйвере NIC или NIC.

Затем проверьте, работает ли какое-либо программное обеспечение брандмауэра. Попробуйте отключить его и посмотрите, что произойдет.

Если это не сработает, удалите всех поставщиков услуг Winsock Layered сnetsh winsock catalog reset.

Если это не сработает, я в тупике :)

Наконец, вы, вероятно, найдете других клиентов с такой же проблемой; вы можете все равно подумать об этом обходном пути. Попробуйте отправить несколько UDP-пакетов небольшого размера при подключении, и, если они постоянно не проходят, включите обходной путь заполнения. Для хостов, через которые проходят пробные пакеты, вам не нужно их дополнять.

Показывает ли журнал пакет udp, покидающий его машину? Он показывает, что он прибывает на целевой компьютер?

Какое оборудование маршрутизатора или коммутаторы находятся между его ПК и местом назначения? Можете ли вы удалить их и связать их с помощью перекрестного кабеля? (или замените пункт назначения ноутбуком и подключите его к своему компьютеру с помощью перекрестного кабеля?)

Вы удалили или хотя бы перечислили на своем компьютере все антивирусные продукты и продукты брандмауэра и все, что устанавливает Winsock LSP?

Выпадут ли ВСЕ 12 байтов или меньше пакетов или только некоторые, можете ли вы генерировать пакеты со случайным содержимым и посмотреть, не является ли это размером, а не размером, который вызывает проблему.

 Len Holgate12 янв. 2011 г., 09:21
Справедливо, рад, что вы решили проблему, и я узнал что-то новое :)
 waan12 янв. 2011 г., 05:39
этот ответ также очень полезен для меня. Я ценю это. но есть более точный ответ. так что я не могу не принять этот ответ. прости за это. ;-)

антивирус, сетевой брандмауэр, вторжение в сеть. прочитай это

Для UDP-пакета ethernet_header (14 байт) + IPv4_header (минимум 20 байт) + UDP_header (8 байт) = 42 байта
Теперь, так как он меньше 64 байтов или 60 в Linux, сетевой драйвер будет заполнять пакет нулями (64-42 = 22), чтобы сделать его 60 байтов перед отправкой пакета.

это минимальная длина для пакета UDP.
теоретически вы можете отправить 0 байтов данных, но еще не пробовали.

Что касается вашей проблемы, это должна быть проблема ОС. проверьте руководство по эксплуатации вашей сети или обратитесь к производителю. потому что это не должно случиться.

REF: HTTP: //www.freesoft.org/CIE/Course/Section4/8.htm
REF: HTTP: //en.wikipedia.org/wiki/User_Datagram_Protocol

Чистая гипотеза: RTP, который является очень распространенным пакетом для отправки по UDP, определяет12-байтовый заголовок, Интересно, если какой-то уровень сетевого программного обеспечения предполагает, что что-то меньшее является неправильно сформированным RTP-пакетом, и выбрасывает его?

Решение Вопроса

возможно, разгрузка контрольной суммы UDP нарушена на этой карте, то есть пакеты отправлены, но отброшены получателем?

Вы можете проверить это, просмотрев полученные пакеты с помощью Wireshark.

 waan11 янв. 2011 г., 11:07
я проверил ошибочные пакеты с wireshark с обеих сторон конечной точки. и я выяснил, что контрольная сумма отправки UDP-пакета нарушена. и я слышал о некоторых NIC, способных к TCP Offload Engine, с ошибкой контрольной суммы раньше. я отключил опцию TCP Offload, которая изначально включена. Теперь это работает правильно. спасибо вам всем!
 waan11 янв. 2011 г., 11:12
и остающаяся проблема ... заставить пользователя, пострадавшего от такого рода проблемы, знать о решении. или я должен обойти это? дайте мне подумать об этом ...

Ваш ответ на вопрос