Поделиться через


Характеристики TCP/IP

Tcp/IP имеет характеристики, позволяющие протоколу работать в соответствии со стандартизованными требованиями к реализации. Эти характеристики могут сочетаться с вариантами разработки, которые приводят к низкой производительности. Влияние этих характеристик TCP/IP на приложение зависит от того, является ли приложение транзакционной или потоковой.

Транзакционные приложения зависят от накладных расходов, необходимых для установления и завершения подключения. Например, при каждом подключении в сети Ethernet необходимо отправлять три пакета размером около 60 байт каждый, а для обмена требуется примерно один RTT. При завершении подключения обмениваются четырьмя пакетами. Это для каждого подключения; Приложение, которое открывает и закрывает подключения, часто накладно на каждое вхождение.

Еще одним аспектом TCP/IP является медленный запуск, который происходит при каждом подключении. Медленный запуск — это искусственное ограничение на количество сегментов данных, которые могут быть отправлены до получения подтверждения этих сегментов. Медленный запуск предназначен для ограничения перегрузки сети. При установке подключения по Ethernet независимо от размера окна приемника передача данных размером 4 КБ может занять до 3–4 RTT из-за медленного запуска.

Оптимизация TCP/IP, называемая алгоритмом Nagle, также может ограничить скорость передачи данных при подключении. Алгоритм Nagle предназначен для снижения затрат на протокол для приложений, которые отправляют небольшие объемы данных, таких как Telnet, который отправляет один символ за раз. Вместо того чтобы сразу отправить пакет с большим количеством заголовков и небольшим количеством данных, стек ожидает дополнительных данных из приложения или подтверждения, прежде чем продолжить.

Отложенные подтверждения, обычно называемые отложенным подтверждением, также предназначены для TCP/IP, чтобы обеспечить более эффективное резервное копирование подтверждений при получении возвращаемых данных из принимающего приложения. К сожалению, если эти данные не передаются, а отправляящая сторона ожидает подтверждения, могут возникнуть задержки примерно в 200 миллисекунд на отправку.

При закрытии TCP-подключения ресурсы подключения на узле, который инициировал закрытие, помещаются в состояние ожидания, называемое TIME-WAIT, чтобы защититься от повреждения данных, если в сети задерживаются дубликаты пакетов. Это гарантирует, что оба конца будут завершены с подключением. Это может привести к истощению ресурсов, необходимых для каждого подключения, таких как ОЗУ и порты, когда приложения часто открывают и закрывают подключения.

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

Поведение приложения

Высокопроизводительные приложения windows Sockets

Нейгл алгоритм