Научный руководитель: Евгений Викторович Соколов
При использовании протокола TCP данные передаются упакованными в TCP-сегменты, состоящие из заголовка и полезной нагрузки. TCP-сегменты, в свою очередь, упаковываются в IP-пакеты, а последние — в кадры Ethernet. Пакеты также содержат заголовки, а кадры — еще и концевики.
При передаче данных по сети передается и описанная служебная информация. Размеры всех заголовков и концевиков в сумме составляют не менее 67 байт, в то время как полезных данных может быть значительно меньше. Предельный объем полезной нагрузки, определяемый максимальным размером кадра Ethernet, составляет 1460 байт. В случае побайтной передачи данных эффективность передачи становится приблизительно равной 1%, но при реализации некоторых приложений бывает удобно осуществлять передачу именно побайтно. Симметричная ситуация может возникать и при приеме данных, в случае, когда приложение считывает не более одного байта из потока. В идеале, для повышения эффективности ОС может буферизовать передаваемые данные, например, используя при реализации системной службы TCP алгоритмы Кларка и Нагля.
Для ОС Windows и Linux были разработаны приложения, отправляющие и получающие данные при помощи стандартных функций BSD Sockets. В приложениях, разработанных для ОС Windows, отправление данных производится при помощи функции send(), а получение функцией recv(); в приложениях, разработанных для ОС Linux, отправление данных происходит при помощи вызова функции write(), получение – read().
Таким образом, мы можем сделать следующие выводы: