"Ascolto" di una porta indica un polling continuo a tale porta o un polling discreto o un processo guidato da interrupt. Cosa sta succedendo esattamente in "Ascoltare una porta"?Che cosa è esattamente l'ascolto della porta
risposta
Un porta non è altro che un concetto , non è come se si potrebbe verificare qualche bit di memoria, in attesa di qualche informazione.
Quindi, ascoltando a una porta si insegnare al kernel cosa fare dopo aver ricevuto i pacchetti con questo specifico numero di porta: trasmette al processo che ha chiesto per l'ascolto su quella porta, invece di rispondere [o meno] che la porta non è aperta.
NB: sono solo speculazioni, non ho studiato nessuna implementazione del kernel.
EDIT: Sul lato processo,
listen
dirà al kernel che siete interessati a una particolare porta rendez-vous- (io non sono sicuro di quello che accade tra
listen
eaccept
, il kernel bufferizza le nuove connessioni o le rifiuta finché non è stato chiamatoaccept
, fare riferimento al relativo manuale) accept
si legheranno la connessione ad una porta comunicazione, e avviare il buffering dei pacchetti entrantirecv
(opoll
oselect
certamente) saranno dati al prelievo dal buffer di ricezione
ciò significa che il kernel interromperà (notificherà) il processo quando questo pacchetto viene ricevuto. – Dinushan
Il kernel estrae la porta di destinazione da arrivo Pacchetti IP e quindi inoltra il pacchetto a tutti i ricevitori, che sono registrati per questa porta specifica (sì, potrebbero esserci più). Un processo utente utilizza normalmente select (2) o poll (2) per attendere un evento, ma questo sondaggio è diverso dal polling tradizionale come "read I/O port; delay 500 ms".
questo è da programmers.stackexchange [how-a-port-listens-pull-or-push] descrive in profondità. [1]: http://programmers.stackexchange.com/q/107545/36957 – Dinushan
La risposta descrive i meccanismi di livello molto basso, sotto le nozioni di * tcp/udp *, * ports * e anche * listening *, è vero per qualsiasi ricezione dati di rete. – Kevin