Potresti pensare al numero di porte. Ci sono 65536 porte disponibili nel TCP nelle versioni correnti di IPv4. Questa non è solo una limitazione di Linux, fa parte del protocollo. Il tuo indirizzo IP identifica la tua macchina e la porta identifica un programma sulla tua macchina.
Ma il numero di connessioni non è limitato da questo. Una connessione è composta da 5 pezzi di informazioni, in geek parlano una 5 tupla. È determinato dal protocollo (TCP, UDP), dall'indirizzo IP e dalla porta locali, nonché dall'indirizzo IP e dalla porta remoti. Quindi, prendi un server web. Può servire molte connessioni sulla stessa porta (molto probabilmente 80). Il tuo server web può persino supportare più connessioni allo stesso computer client. Dì, ti stai collegando a google.com da due finestre. Il dispositivo sceglierà una porta non utilizzata per ogni connessione. Quindi, il server di Google dovrà tenere traccia di (TCP, google.com, 80, yourmachine, someport1) e (TCP, google.com, 80, yourmachine, someport2). Ad un certo punto ti imbatteresti in limiti, ma non è un limite rigido ed è molto dipendente dal sistema.
E sì, ogni socket è un descrittore di file, ma non tutte le macchine usano short per la tabella fd. Sul mio sistema, un sistema non completamente sintonizzato, cat /proc/sys/fs/file-max
fornisce 323997. Sono sicuro che potrei potenziarlo se necessario.
Quindi, c'è un limite di 65336, ma ha a che fare con l'indirizzamento, non con il numero di connessioni. Il numero di connessioni è limitato, ma di più dalla configurazione del sistema e da quanta memoria ha.