Внеполосные данные
Внеполосные данные являются логически независимым каналом передачи между парой поточных сокетов. В компьютерных сетях под внеполосными данными понимаются данные, передающиеся через поток, отличный от основного (in-band). Данная технология предоставляет независимый с точки зрения программиста канал и позволяет разграничить данные. Физически внеполосные данные передаются по тому же каналу, что и обыкновенные данные.[1] Термин, вероятно, происходит от внеполосных сигналов, используемых в телекоммуникационной отрасли.[2]
ИспользованиеПравить
Протокол Serial Advanced Technology Attachment реализует внеполосные данные.[3]
В TCPПравить
TCP реализует внеполосные данные, используя «указатель срочности», который отмечает определенные данные в переданный поток в качестве внеполосных. К сожалению, длительно существующие несоответствия RFC 793 и RFC 1122 ограничивают удобство использования этой функции протокола TCP; тем не менее, она активно используется некоторыми прикладными протоколами, в частности Telnet. TCP позволяет передавать лишь один байт внеполосных данных.
Также примером использования внеполосных данных является протокол FTP. Предположим, клиент инициировал передачу большого файла на сервер и в какой-то момент решил отменить передачу. Файл может содержать любые последовательности байт, а дополнительный заголовок в каждом пакете прикладного уровня снижает производительность. Поэтому передаётся специально маркированный пакет TCP и передача данных прекращается.
Для отправки (send
) и приёма (recv
) внеполосных данных в сокетах Беркли в битовой маске флагов должен быть указан флаг MSG_OOB
. Системный вызов poll
позволяет следить за появлением внеполосных данных с помощью флага POLLPRI
. Также эти данные можно получать в асинхронном режиме с помощью сигнала SIGURG
. Для этого надо установить флаг F_SETOWN на файловый дескриптор сокета с помощью системного вызова fcntl
.
ПримечанияПравить
- ↑ Serverframework.com Out of band data, TCPUrgent mode and overlapped I/O (неопр.). Дата обращения: 21 февраля 2014. Архивировано 29 ноября 2016 года.
- ↑ Chapter 11: Signaling Systems (неопр.). George Mason University. Дата обращения: 21 февраля 2014. Архивировано 16 мая 2017 года.
- ↑ Altera Corporation AN-635-1.0 Application Note Implementing SATA and SAS Protocols in Altera Devices (неопр.). Дата обращения: 21 февраля 2014. Архивировано из оригинала 4 марта 2016 года.