Подтвердить что ты не робот

Пакет TCP не будет доставлен из России в Канаду, когда данные начинаются с '1c'

У нас есть протокол TCP-потока, где мы префикс нашей полезной нагрузки данных по размеру. Таким образом, данные могут быть должным образом декодированы при их получении. Довольно стандартный материал.

Это отлично работает для тысяч людей. К сожалению, у нас есть, по крайней мере, 4 случая, когда у клиентов возникли проблемы с подключением, все в отдаленных странах. Клиент в России смог помочь нам провести множество тестов и сузить проблему. Если мы отправим пакет, в котором размер префикса будет равен 0, то весь пакет выполнит его. Если пакетные данные начинаются с 1c, пакет не пройдет.

У меня есть две бок о бок, которые Wireshark захватывает со своего компьютера, которые показывают это:

Working
-------
Russia -> Toronto [SYN]
Toronto -> Russia [SYN, ACK]
Russia -> Toronto [ACK]
Russia -> Toronto [PSH,ACK] <- data is sent here
00000000000000001c0000000000000000000000000000000000000000000000
Toronto -> Rusion [PSH,ACK] <- server in toronto got the data, sent a reply!


Not-Working
--------
Russia -> Toronto [SYN]
Toronto -> Russia [SYN, ACK]
Russia -> Toronto [ACK]
Russia -> Toronto [PSH,ACK] <- data is sent here
1c000000000000001c0000000000000000000000000000000000000000000000
Russia -> Toronto [PSH,ACK] <- TCP Retransmission
Russia -> Toronto [PSH,ACK] <- TCP Retransmission
Russia -> Toronto [PSH,ACK] <- TCP Retransmission
Russia -> Toronto [PSH,ACK] <- TCP Retransmission

Server in Toronto never gets the packet from Russia!

Фактический клиент и серверы используют IOCP, но мое тестовое приложение использует С# TcpListener и TcpClient без каких-либо флажков пользовательских опций.

Not actual code
--------------
var client = new TcpClient()
client.Connect(host, port)
client.GetStream().Write()
client.GetStream().Read()

var listener = new TcpListener(port);
listener.Start();
var serverClient = listener.AcceptTcpClient();
serverClient.GetStream().Read()
serverClient.GetStream().Write()

Есть ли какие-либо дополнительные тесты, чтобы рекомендовать получить дополнительную информацию/решить эту проблему? Моя догадка заключалась в том, что его оборудование/драйверы повреждены, но он утверждает, что у него нет проблем с каким-либо другим приложением или интернетом в целом.

4b9b3361

Ответ 1

Может ли быть, что одна из конечных ссылок связана с мобильным носителем?

У меня больше нет данных, но, поскольку мы находимся в сфере спекуляций, я помню аналогичную проблему с итальянским мобильным оператором некоторое время назад: по-видимому, определенная последовательность бит над соединением данных снизилась бы перевозчика. Смутно похож на старый трюк +++ ATH0.

Не могли бы вы попытаться отправить аналогичную последовательность (1c0000000....) через другой носитель, скажем, поток netcat?