Открыть сервис

Store-and-forward

Store-and-forward (с англ. — «храни и пересылай») — это метод передачи данных в телекоммуникационных и компьютерных сетях, при котором сообщение (пакет, кадр, файл) полностью принимается и сохраняется (буферизируется) на промежуточном узле (коммутаторе, маршрутизаторе, почтовом сервере) перед тем, как быть отправленным далее по маршруту к получателю. В отличие от методов сквозной передачи (cut-through) или коммутации каналов, при store-and-forward узел сначала проверяет целостность и корректность принятых данных (например, с помощью контрольной суммы), и только после успешной проверки начинает передачу. Этот подход обеспечивает высокую надёжность доставки, но вносит задержку, пропорциональную размеру сообщения и скорости передачи.

История

Концепция store-and-forward возникла задолго до появления цифровых сетей. Её прообразом можно считать телеграфную связь XIX века, где сообщение сначала записывалось на бумажную ленту, а затем передавалось дальше. В 1940-х годах этот принцип был реализован в системах ретрансляции радиосообщений (RTTY). Однако в современном понимании метод стал применяться с развитием компьютерных сетей.

В 1960-х годах в рамках проекта ARPANET (предшественника Интернета) использовалась технология коммутации пакетов, основанная на store-and-forward. Первые маршрутизаторы (тогда называвшиеся IMP — Interface Message Processor) принимали пакеты целиком, проверяли их и передавали дальше. В 1971 году Рэй Томлинсон разработал первую систему электронной почты, которая также работала по принципу store-and-forward: письмо сохранялось на почтовом сервере до момента, когда получатель подключится и заберёт его.

В 1980-х годах метод получил широкое распространение в сетях X.25, а затем в Ethernet-коммутаторах. В современных сетях store-and-forward является стандартным режимом работы для большинства управляемых коммутаторов и маршрутизаторов.

Принцип работы

Процесс передачи данных методом store-and-forward включает три этапа:

  1. Приём и буферизация. Узел (коммутатор, маршрутизатор, сервер) начинает принимать кадр или пакет данных. Весь блок данных целиком помещается в оперативную память устройства. Приём продолжается до получения последнего бита.
  2. Проверка целостности. После завершения приёма узел вычисляет контрольную сумму (например, CRC — Cyclic Redundancy Check) и сравнивает её с переданной в заголовке. Если значения совпадают, данные считаются корректными. При обнаружении ошибки (например, из-за помех в линии связи) кадр отбрасывается, и отправитель (по протоколу более высокого уровня) повторно передаёт его.
  3. Передача. Если проверка пройдена, узел помещает кадр в выходную очередь и отправляет его на следующий узел по маршруту к получателю. Если выходной канал занят, кадр ожидает в буфере до освобождения линии.

Этот метод гарантирует, что повреждённые или фрагментированные данные не будут распространяться по сети, что снижает нагрузку на конечные устройства.

Классификация и виды

Метод store-and-forward применяется в различных сетевых технологиях и протоколах, которые можно разделить по уровням модели OSI:

На канальном уровне (L2)

  • Коммутация Ethernet. Большинство современных коммутаторов (switch) работают в режиме store-and-forward. Они принимают весь Ethernet-кадр (до 1518 байт для стандартного кадра, до 9000 байт для jumbo-кадров), проверяют FCS (Frame Check Sequence) и только затем передают в нужный порт.
  • Беспроводные сети (Wi-Fi). Точки доступа и беспроводные маршрутизаторы также используют буферизацию для координации доступа к среде (CSMA/CA) и проверки целостности.

На сетевом уровне (L3)

  • Маршрутизация IP-пакетов. Маршрутизаторы принимают IP-пакеты целиком, проверяют заголовок (включая контрольную сумму IP-заголовка) и таблицу маршрутизации, после чего пересылают пакет. Это классический пример store-and-forward на уровне L3.

На прикладном уровне (L7)

  • Электронная почта (SMTP, POP3, IMAP). Почтовые серверы (MTA — Mail Transfer Agent) хранят письма до момента, когда получатель заберёт их. Это реализация store-and-forward, где задержка может составлять от секунд до нескольких дней.
  • Системы обмена сообщениями (например, Telegram, WhatsApp). Серверы хранят сообщения, если получатель офлайн, и доставляют их при появлении подключения.
  • Файловые хранилища и облачные сервисы. При загрузке файла на сервер он сначала сохраняется, а затем реплицируется на другие узлы.

В системах с ограниченной связью

  • Спутниковая связь. Из-за больших задержек (например, геостационарные спутники — около 250 мс) store-and-forward используется для передачи данных в пакетном режиме.
  • Сети с прерывистым соединением (DTN — Delay-Tolerant Networking). В таких сетях (например, для связи с космическими аппаратами) данные хранятся на узлах до установления связи с получателем.

Преимущества и недостатки

Преимущества

  • Высокая надёжность. Отбрасывание повреждённых кадров предотвращает распространение ошибок, снижая нагрузку на конечные устройства и протоколы верхних уровней.
  • Гарантия целостности. Проверка контрольной суммы гарантирует, что получатель получит именно те данные, которые были отправлены.
  • Поддержка разных скоростей. Store-and-forward позволяет соединять сегменты сети с разной пропускной способностью (например, 100 Мбит/с и 1 Гбит/с), так как буфер сглаживает разницу.
  • Управление перегрузками. Буферизация даёт возможность временно хранить данные при перегрузке выходного канала, снижая потери.
  • Простота реализации. Метод не требует сложной синхронизации между отправителем и получателем.

Недостатки

  • Задержка (latency). Каждый узел вносит задержку, равную времени приёма всего кадра. Для больших пакетов (например, 1500 байт на скорости 10 Мбит/с) задержка может составлять около 1,2 мс, что критично для реального времени (VoIP, видеоконференции).
  • Потребление памяти. Буферизация требует оперативной памяти на узле. При большом количестве одновременных потоков возможны переполнения буфера и потери пакетов.
  • Неэффективность для коротких сообщений. Для маленьких пакетов (например, 64 байта) накладные расходы на буферизацию и проверку могут быть неоправданно высокими.
  • Чувствительность к задержкам. В сетях с высокой задержкой (спутниковые каналы) store-and-forward может увеличить общее время передачи.

Применение

Коммутаторы Ethernet

В современных локальных сетях (LAN) store-and-forward является основным режимом работы коммутаторов. Он используется в офисных и дата-центровых сетях, где важна надёжность. Например, коммутаторы Cisco Catalyst серии 2960 по умолчанию работают в этом режиме.

Электронная почта

Протокол SMTP (Simple Mail Transfer Protocol) реализует store-and-forward: почтовые серверы хранят письма в очереди до момента доставки. Если сервер получателя недоступен, письмо остаётся в очереди и повторно отправляется через заданные интервалы (например, каждые 15 минут). Это обеспечивает доставку даже при временных сбоях.

Спутниковая связь

В системах спутниковой связи (например, Iridium, Inmarsat) store-and-forward используется для передачи данных в пакетном режиме. Спутник принимает сигнал от наземной станции, сохраняет данные и передаёт их на другую станцию при пролёте над ней. Это позволяет работать при отсутствии прямой видимости.

Системы управления и телеметрии

В промышленных сетях (SCADA, Modbus) store-and-forward применяется для сбора данных с удалённых датчиков. Контроллеры накапливают данные и передают их на центральный сервер при установлении связи.

Мобильные сети

В сетях 3G/4G/5G store-and-forward используется для передачи SMS-сообщений. Сообщение сохраняется на сервере SMSC (Short Message Service Center) до момента, когда абонент станет доступен.

Критика и альтернативы

Основной недостаток store-and-forward — задержка, что делает его непригодным для приложений реального времени (VoIP, онлайн-игры). В таких случаях применяются альтернативные методы:

  • Cut-through (сквозная коммутация). Коммутатор начинает передачу кадра сразу после получения заголовка (первые 6-14 байт), не дожидаясь всего кадра. Это снижает задержку, но увеличивает риск распространения ошибок.
  • Fragment-free (бесфрагментная коммутация). Коммутатор ждёт получения первых 64 байт (минимальный размер Ethernet-кадра), чтобы отсечь коллизионные фрагменты, но не проверяет весь кадр.
  • Коммутация каналов. В телефонных сетях устанавливается выделенный канал на всё время соединения, что исключает буферизацию, но неэффективно для пакетных данных.

В современных сетях часто используется гибридный подход: для трафика реального времени применяется cut-through, а для данных, требующих надёжности, — store-and-forward.

Интересные факты

  • В 1960-х годах при создании ARPANET инженеры рассматривали store-and-forward как единственный способ обеспечить надёжную связь на ненадёжных телефонных линиях.
  • В системах DTN (Delay-Tolerant Networking) используется концепция «bundles» (связок), которые могут храниться на узлах неделями и месяцами, пока не появится связь с получателем.
  • В почтовых системах store-and-forward иногда называют «hop-by-hop» доставкой, так как письмо передаётся от сервера к серверу через несколько промежуточных узлов.
  • В некоторых промышленных сетях (например, CAN) store-and-forward не применяется из-за низкой пропускной способности и жёстких требований к задержкам.

Источники

  • Таненбаум Э., Уэзеролл Д. «Компьютерные сети» (5-е издание). — СПб.: Питер, 2012.
  • Олифер В. Г., Олифер Н. А. «Компьютерные сети. Принципы, технологии, протоколы» (5-е издание). — СПб.: Питер, 2016.
  • Стивенс У. Р. «TCP/IP. Иллюстрированное руководство» (том 1). — М.: Вильямс, 2003.
  • RFC 821 (Simple Mail Transfer Protocol), 1982.
  • IEEE 802.3 — стандарт Ethernet, 2022.
  • Kurose J. F., Ross K. W. «Computer Networking: A Top-Down Approach» (8th edition). — Pearson, 2021.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →