IP пакет / тайм-аут / интервал управления - PullRequest
0 голосов
/ 14 октября 2010

Без романа я постараюсь объяснить и надеюсь, что это имеет смысл.

У нас есть приложение, которое обрабатывает отправку данных на сервер по простому HTTPS, без проблем все работает нормально.ОДНАКО, если пакеты отправляются через спутниковый телефон, задержка передачи намного больше, чем типичные миллисекунды, обрабатываемые при стационарном высокоскоростном доступе к сети.Таким образом, те же самые отправляемые пакеты автоматически разбиваются через Windows API, когда выполняются следующие функции:

DECLARE INTEGER InternetOpen IN WININET.DLL
DECLARE INTEGER InternetCloseHandle IN WININET.DLL
DECLARE INTEGER InternetConnect IN WININET.DLL
DECLARE INTEGER HttpOpenRequest IN WININET.DLL
DECLARE INTEGER InternetQueryOption IN WININET.DLL
DECLARE INTEGER InternetSetOption IN WININET.DLL
DECLARE INTEGER HttpSendRequest IN WININET.DLL
DECLARE INTEGER HttpQueryInfo IN WININET.DLL
DECLARE INTEGER InternetReadFile IN WININET.DLL

Я специально не контролирую «пакеты», просто собираю весь запрос и отправляю его иполучить ответ.

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

Итак, теперь вопрос ... Есть ли способ, которым я могу конкретносообщить Windows, чтобы замедлить частоту отправки пакетов в HELP, чтобы предотвратить проблемы с задержкой?Поскольку у нас нет доступа к спутниковой системе, мы не можем доказать, что это проблема, но похоже, что они получают пакеты, просто не собирайте их вместе в правильной последовательности.

Спасибо.

1 Ответ

1 голос
/ 30 сентября 2012

Как уже упоминалось в комментариях, вы не можете контролировать маршрутизацию пакетов TCP. TCP как протокол разделит данные на более мелкие куски (даже если на компьютере с Windows размер ~ 20 КБ, TCP разделит эти данные на пару пакетов, несмотря на то, что максимальный размер пакета в Windows составляет около 60 КБ).

Вы можете попробовать установить настройку «MTU», которую использует Windows. Вы можете сделать это в реестре. Это позволяет вам установить меньший размер «максимального блока передачи», так как у вас соединение с высокой задержкой. Попробуйте установить MTU на 500 или меньше.

Если ничего из этого не удовлетворяет вашим потребностям, вы также можете взглянуть на RFC, чтобы узнать о написании собственных заголовков пакетов TCP, чтобы настроить дальнейшую обработку пакетов. Посмотрите здесь RFC, непосредственно решающий эту проблему: http://tools.ietf.org/html/rfc1072

...