Existe um limite rígido de 65536 conexões TCP abertas por endereço IP no linux?

23

Existe um limite rígido de 65536 conexões TCP abertas por endereço IP no linux? Eu li em algum lugar que havia, mas alguém está pedindo confirmação e eu simplesmente não consigo encontrá-la.

Eu me lembro que era algo sobre os descritores de arquivo serem um número inteiro de 16 bits que o limita de alguma forma?

Ou é esse hokum, e simplesmente não há outro limite além do quão robusto o servidor é?

Chris
fonte

Respostas:

35

Você pode estar pensando no número de portas. Existem 65536 portas disponíveis no TCP nas versões atuais do IPv4. Esta não é apenas uma limitação do Linux, é parte do protocolo. Seu endereço IP identifica sua máquina e a porta identifica um programa em sua máquina.

Mas, o número de conexões não é limitado por isso. Uma conexão consiste em 5 informações, no geek falam 5 tuplas. É determinado pelo protocolo (TCP, UDP), endereço e porta IP local e endereço e porta IP remotos. Então, pegue um servidor web. Pode atender a muitas conexões na mesma porta (provavelmente 80). Seu servidor da web pode até suportar várias conexões com a mesma máquina cliente. Digamos que você esteja se conectando ao google.com a partir de duas janelas. Sua máquina escolherá uma porta não utilizada para cada conexão. Portanto, o servidor do Google precisará acompanhar (TCP, google.com, 80, sua máquina, someport1) e (TCP, google.com, 80, sua máquina, someport2). Em algum momento, você toparia com limites, mas não é um limite rígido e depende muito do sistema.

E sim, cada soquete é um descritor de arquivo, mas nem todas as máquinas usam shorts para a tabela fd. No meu sistema, um sistema não sintonizado, cat /proc/sys/fs/file-maxfornece 323997. Tenho certeza de que poderia aumentá-lo se necessário.

Portanto, há um limite de 65336, mas tem a ver com endereçamento, não com número de conexões. O número de conexões é limitado, mas mais pela configuração do sistema e quanta memória ele possui.

Rich Homolka
fonte
2
Então, com a tupla de 5: apesar de eu estar limitado a 65536 portas, isso me limita apenas a 64k conexões por endereço IP de entrada , certo? Portanto, o único limite são os descritores de arquivos, mas eles não são necessariamente de 16 bits? Então, basicamente, o que você está dizendo é que não há limites?
Chris
11
sim. Veja também: seção en.wikipedia.org/wiki/Transmission_Control_Protocol "Uso de recursos"
user12889
3
@ Chris: 64k conexões por endereço IP de entrada em uma única porta local , sim.
grawity
Chris, o que disse o grawity. A tupla de 5 terá até (mas nunca alcançará) 65536 combinações com a outra máquina. Na realidade, você nunca chegará lá porque uma máquina não pode usar nenhuma porta antiga para uma conexão - algumas são reservadas por motivos específicos.
Rich Homolka