
фактически при передаче конверта письма (а при коротком письме доля
конверта относительно велика) используется механизм доставки «с простоями»,
так как пока клиент не получит ОТКЛИКА на предыдущую SMTP команду, он НЕ
имеет права передавать серверу следующую SMTP команду. Отсюда можно
сделать вывод: при передаче короткого письма (размер тела заголовка и тела
письма укладывается в один пакет, размером 1460 байт – очень типичное
небольшое письмо) скорость обмена данными между клиентом и сервером (или
между промежуточными серверами) при передаче такого письма определятся
простоями, происходящими при передаче конверта письма. Если же письмо
велико, то пока передается конверт письма, скорость передачи очень низка,
затем, когда передается большое тело письмо, роль по управлению потоком
данных автоматически перекладывается с SMTP на TCP, и скорость передачи
данных начинает расти. Для того, чтобы избавить коммуникации с помощью
протокола SMTP от избыточных задержек, было разработано (RFC2920)
расширение SMTP под названием PIPELINING (конвейер). Сервер сообщает
клиенту о том, что поддерживает данное расширение, добавляя к ответу на
команду EHLO ключевое слово PIPELINING, при этом никакие параметры (как,
например, в случае с SIZE) в ответе на команду EHLO не используются. Так же
данное расширение не добавляет никаких новых параметров к командам MAIL
или RCPT. Получив от сервера слово PIPELINING в ответ на команду EHLO,
клиент имеет право передавать серверу несколько команд в одном пакете,
разумеется, разделяя команды с помощью 0D 0A. При этом некоторые SMTP
команды могут быть поданы клиентом только «в конце списка», это такие
команды, как: EHLO, DATA, VRFY, EXPN, NOOP, QUIT, TURN. Сравним пример,
показанный выше в случае использования PIPELINING и без использования
данной технологии.