27) Come vengono trattati i dati out-of-band?

I messaggi out-of-band, messaggi urgenti che devono essere recapitati subito, usano un canale logicamente indipendente dal canale normale usato nella connessione.

TCP usa un solo canale out-of-band, sul quale recapita messaggi di un solo byte.

Il messaggio out-of-band è in sequenza nello stream consegnato al destinatario indipendentemente dai dati. Esiste un marcatore nello stream per indicare il punto legato alla condizione eccezionale. Il processo che spedisce il messaggio out-of-band usa la send con il flag MSG_OOB (anche bloccante). Il processo che lo riceve usa la recv con il medesimo flag.

Per quanto riguarda come fa il processo ricevente a riconoscere il messaggio, vi sono due metodi di segnalazione:

si definisce un gestore del segnale SIGURG, quindi con una ioctl con SIOCSGRP si consegna il segnale al processo interessato.

se il processo è bloccato su una select, la select esce con la maschera degli eventi eccezionali.

È possibile forzare il flusso out-of-band all’interno del flusso normale usando una setsockopt con l’opzione SO_OOBINLINE. Tuttavia, è necessario non oltrepassare il marcatore. Per riconoscere se il marcatore è stato raggiunto uso

rit=ioctl(s,SIOCATMARK,&flag);

se rit=0 il marcatore non è stato raggiunto

se rit=1 il marcatore è stato raggiunto

 


Back
Index