Un server TCP è limitato a 65535 client?


10

Si potrebbe pensare che ciò ponga un limite al numero di client che può essere gestito da un singolo computer / applicazione.

Uno potrebbe essere la supervisione di un server Web e dovrebbe essere necessario assicurarsi che possa ridimensionarsi ai livelli di utilizzo previsti per andare oltre le connessioni ~ 65k.

Per il software ci sono alcune considerazioni separate ( /programming/1575453/how-many-socket-connections-can-a-web-server-handle )


Qualche risposta ti è stata d'aiuto? In tal caso, dovresti accettare la risposta in modo che la domanda non continui a comparire per sempre, cercando una risposta. In alternativa, potresti fornire e accettare la tua risposta.
Ron Maupin

Risposte:


16

La risposta breve è no, non è questo il limite.

Un campo Porta TCP è 2x byte e contiene una quantità di 65536. Questo numero limita la quantità di indirizzi che un server può avere. Ma questo non limita il numero di client a ~ 64k. Ogni pacchetto TCP ha due campi Porta uno per la destinazione e uno per l'origine (oltre a due indirizzi IP).

Una determinata connessione TCP è una tupla di origine e destinazione, ciascuna con indirizzo IP e numero di porta. La destinazione (lato server) rimane fissa, ma l'indirizzo di origine (lato client) può variare sia sulla porta che sull'indirizzo IP.

Prendere in considerazione:

  • Server IP - 100.0.0.1 (fisso)
  • Porta server - 80 (fissa)
  • IP client - 0.0.0.0 - 255.255.255.255 (intervallo a 32 bit)
  • Porta client - 0 - 65535 (intervallo a 16 bit)

Sì, un client (o ufficio) con un singolo indirizzo IP, può connettersi al tuo server solo 65535 volte contemporaneamente, ma se quel client (o ufficio) avesse più indirizzi IPv4, potrebbe collegarne molti di più.

In genere, ci sono milioni di indirizzi IP in uso su molti dispositivi client e se dovessero utilizzare una sola porta di origine per connettersi alla porta del singolo server, allora si può già vedere il potenziale per andare oltre il numero 65536.

Il limite matematico teorico del protocollo IP / TCP è 2 ^ 32 * 2 ^ 16. Praticamente il numero di indirizzi IP è inferiore: è necessario sottrarre alcuni blocchi IP riservati. Inoltre, in pratica, il numero di porte sul lato client è inferiore perché un tipico computer client eseguirà più applicazioni che si connettono ad altri server riducendo il pool di porte TCP, ma questo pool viene raramente utilizzato - una volta che una sessione TCP ha terminato il numero di porta è di nuovo disponibile in piscina.

Nota: per IPv6, la quantità di indirizzi IP aumenta, ma il campo Porta per TCP rimane della stessa dimensione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.