응용프로그램의 연결된 소켓이 스트림 소켓(stream socket)이고 일반 데이터보다 중요한 데이터를 전송해야 할 떄,
좀 더 중요한 데이터라는 의미에서 대역 외 데이터(OOB data, Out-of-Band Data)로 데이터를 표시 할 수 있다.
수신측에서는 일반적인 데이터 스트림 외에 논리적으로 분리된 채널을 통하여 OOB 데이터를 수신할 수 있다.
TCP에서는 OOB 데이터를 urgent data라는 방식으로 구현했다. TCP의 urgent data는 urgent data임표시하는
1bit(URG)와 TCP 세그먼트 헤더(TCP segment header)의 16bit포인터(urgent pointer)를 이용하여 수신
스트림(downstream)이 urgent data임을 표시한다. urgent data의 구현 방법 두 가지가 RFC 793와 RFC 1122에
정의되어 있다. RFC 793에서는 TCP 헤더의 urgent pointer를 뒤에 붙은 urgent data byte의 옵셋으로 정의하고
있고 RFC 1122에서는 urgent data byte 자체로 정의하고 있다.
윈속 규약에서 OOB란 용어는 TCP에서 구현된 OOB 데이터(urgent data)와 프로토콜 독립적인 OOB 데이터(protocol-independent OOB data)의
구현 둘 다를 의미한다. 데이터에 OOB 데이터가 포함되었는지 체크하는 방법으로 ioctlsocket 함수의 SIOCALTMARK
옵션을 이용한다.
윈속은 urgent data를 얻는 몇가지 방법을 제공한다. urgent data가 일반 데이터 스트림에 포함되었거나 수신 함수가 분리되어
urgent data만 얻을 수 있다.