на школьную страницу...

Эффективная передача данных/TCP/Windows

Выпускная работа Ю.С.Гудовщиковой, 2011 г.

Научный руководитель: Евгений Викторович Соколов

При использовании протокола TCP данные передаются упакованными в TCP-сегменты, состоящие из заголовка и полезной нагрузки. TCP-сегменты в свою очередь упаковываются в IP-пакеты, а последние — в кадры Ethernet. Пакеты также содержат заголовки, а кадры — еще и концевики.

При передачи данных по сети передается и описанная служебная информация. В результате чего эффективность передачи данных может быть крайне мала.

Передача обычно осуществляется с помощью стандартных функций, при вызове которых указывается количество передаваемых (или получаемых) данных. При анализе эффективности передачи данных по протоколу TCP в различных ОС, представленном в работе [1], было выявлено, что в ОС Windows при использовании стандартных функций BSD Sockets очень низкая эффективность передачи.

Таким образом, у нас были две основные задачи:
1. Выяснить, можно ли повысить эффективность с помощью средств программирования, разработанных специально для ОС Windows;
2. Проверить эффективность готовых решений от Microsoft.

Также был реализован ftp-клиент. Он осуществляет связь с ftp-сервером и может работать с шестью основными командами (необходимыми нам для проверки эффективности передачи данных ftp-сервером, встроенным в ОС Windows).

Описание экспериментов и полученные результаты






Заключение

Описанные выше эксперименты позволяют сделать следующие выводы:

  1. При использовании специальных функций для Windows в написании приложений, отправляющих и получающих данные, увеличения скорости передачи данных не происходит, но наблюдаются более стабильные результаты. Также становится возможным наблюдать и фиксировать разницу во времени отправления и приема данных.
  2. При использовании ftp-сервера, встроенного в ОС Windows, скорость передачи данных достигает 11 Мбайт/с. Данная скорость определяется пропускной способностью сети. Вероятно, это свидетельствует о использовании ftp-сервером больших порций для передачи данных. При небольшом буфере, принимающем данные,(2 байта) скорость передачи составляет 1,4-2 Мбайт/с, данная скорость значительно ниже скорости передачи в OC Linux при аналогичных условиях(2,7-3,2 Мбайт/с)
  3. При программировании передачи данных в ОС Windows для того, чтобы скорость передачи достигала максимально возможного значения, размер порции отправляемых данных должен быть не меньше 4 Кб. Размер принимающего буфера, в свою очередь, должен быть не меньше 256 байт.

Flag Counter