"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".
- 1. Che cosa è esattamente Werkzeug?
- 2. Che cosa è esattamente cacert.pem?
- 3. Che cosa è Container.DataItem esattamente?
- 4. Che cosa è esattamente Rake?
- 5. Che cosa è esattamente OData?
- 6. Che cosa è esattamente Java?
- 7. Che cosa è esattamente Kafka Rebalancing?
- 8. Che cosa fa esattamente `-rdynamic` e quando è esattamente necessario?
- 9. Che cosa è esattamente `&: capitalize` in Ruby?
- 10. Che cosa è esattamente un'entità HTTP?
- 11. Che cosa è esattamente un'espressione ID?
- 12. Che cosa è esattamente "uscita" in PowerShell?
- 13. Che cosa è esattamente init coder aDecoder?
- 14. Che cosa è esattamente "bigint" in F #?
- 15. Che cosa è esattamente un attacco arcobaleno?
- 16. Che cosa fa GenerateEmailConfirmationToken() esattamente?
- 17. Che cosa include esattamente currentDesign.writeCssincludes?
- 18. Che cosa è esattamente CDATA e cosa fa?
- 19. Che cosa fa esattamente l'operatore ==?
- 20. Che cosa significa esattamente "chiusura"?
- 21. Che cosa fa esattamente @synthesize?
- 22. Che cosa fa esattamente OwinBrowser?
- 23. Che cosa influenza esattamente URLConnection.setDoOutput()?
- 24. Che cosa fa esattamente pg_escape_string?
- 25. Che cosa fa esattamente Numpy.exp()?
- 26. Che cosa fa fillMode esattamente?
- 27. Che cosa fa esattamente org.apache.commons.lang.builder.CompareToBuilder?
- 28. Che cosa fa getContentPane() esattamente?
- 29. Che cosa è esattamente va_end? È sempre necessario chiamarlo?
- 30. ASP.NET: Che cosa è esattamente interessato quando Javascript è disattivato?
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