2011-09-26 19 views
13

Prima di ascoltare su una presa, è necessario prima associarlo a un indirizzo. Perché? Mi sembra che non dovrei scegliere e dovrei semplicemente ascoltare quella porta su tutti gli indirizzi. Anche se mi lego a 127.0.0.1, sembra che possa ancora connettermi a quel socket da una macchina remota. Che cosa fa veramente il binding a un indirizzo?Perché associare un socket a un indirizzo?

+0

Vorrei ricontrollare che si sia effettivamente associato a 127.0.0.1, poiché non si dovrebbe essere in grado di connettersi a un'altra interfaccia se fosse veramente così. Se su Linux, è possibile eseguire 'netstat -nlut' per ottenere un output di ciascun servizio e quale indirizzo/porta su cui è in ascolto. – joet3ch

+0

Hai ragione, qualcosa sotto il cappuccio in realtà stava riscrivendo 127.0.0.1 come 0.0.0.0. – Pace

+0

@Pace sei un impostore – Pacerier

risposta

20

Il collegamento a un indirizzo definisce esattamente quale interfaccia deve avere quella porta del server aperta. associazione a 0.0.0.0 è un caso speciale quando si desidera ascoltare tutti gli indirizzi IP noti all'interfaccia. Il binding specifico per 127.0.0.1 dovrebbe rendere visibile la porta del server solo al al codice che può connettersi all'host locale (ad esempio, i processi locali).

+3

+1, informazioni aggiuntive. Il binding può essere utilizzato per accettare solo connessioni locali. Se hai più indirizzi IP puoi anche avere server diversi che ascoltano sulla stessa porta ma su diversi IP. – jgauffin

Problemi correlati