Linux에서 IP 주소 당 65536 개의 개방형 TCP 연결로 제한이 있습니까?


22

Linux에서 IP 주소 당 65536 개의 개방형 TCP 연결로 제한이 있습니까? 나는 어딘가에 있었지만 누군가가 확인을 요청하고 있는데 그것을 찾을 수 없습니다.

파일 설명자가 16 비트 정수라는 점을 기억하는 것 같습니다. 어떻게 제한합니까?

아니면이 hokum입니까, 서버가 얼마나 강력한 지 외에 다른 제한이 있습니까?

답변:


34

포트 수를 생각하고있을 수 있습니다. 현재 IPv4 버전의 TCP에서 65536 포트를 사용할 수 있습니다. 이는 프로토콜의 일부인 Linux 제한 사항이 아닙니다. IP 주소는 컴퓨터를 식별하고 포트는 컴퓨터의 프로그램을 식별합니다.

그러나 연결 수는 이에 의해 제한되지 않습니다. 연결은 5 개의 정보로 구성되며, 괴짜는 5 개의 튜플을 말합니다. 프로토콜 (TCP, UDP), 로컬 IP 주소 및 포트, 원격 IP 주소 및 포트에 의해 결정됩니다. 따라서 웹 서버를 가져 가십시오. 동일한 포트 (대부분 80 개)에서 많은 연결을 처리 할 수 ​​있습니다. 웹 서버는 동일한 클라이언트 시스템에 대한 여러 연결을 지원할 수도 있습니다. 두 개의 창에서 google.com에 연결한다고 가정 해 보겠습니다. 기기는 각 연결에 사용되지 않는 포트를 선택합니다. 따라서 Google 서버는 (TCP, google.com, 80, yourmachine, someport1) 및 (TCP, google.com, 80, yourmachine, someport2)를 추적해야합니다. 어느 시점에서 한계에 부딪 쳤지 만, 그것은 어려운 한계가 아니며 시스템에 매우 의존적입니다.

그리고 그렇습니다. 각 소켓은 파일 디스크립터이지만 모든 머신이 fd 테이블에 short를 사용하는 것은 아닙니다. 모든 시스템에서 조정되지 않은 시스템에서는 cat /proc/sys/fs/file-max323997을 제공합니다. 필요한 경우 부스트 할 수 있다고 확신합니다.

따라서 65336의 제한이 있지만 연결 수가 아니라 주소 지정과 관련이 있습니다. 연결 수는 제한되어 있지만 시스템 구성 및 메모리 용량에 따라 다릅니다.


2
따라서 5 튜플을 다시 사용하십시오. 65536 포트로 제한되어 있지만 들어오는 IP 주소 당 64k 연결로만 제한됩니다. 맞습니까? 따라서 파일 디스크립터가 유일한 제한이지만 반드시 16 비트 일 필요는 없습니까? 기본적으로 당신이 말하는 것은 한계가 없다는 것입니다.
Chris

1
예. 참조 : en.wikipedia.org/wiki/Transmission_Control_Protocol 섹션 "자원 사용량"
user12889

3
@Chris : 단일 로컬 포트에서 들어오는 IP 주소 당 64k 연결 .
grawity

@Chris는 grawity가 말한 것을 말합니다. 5 개의 튜플은 다른 시스템과 최대 65536 개의 조합을 갖습니다. 실제로는 컴퓨터가 연결에 이전 포트를 사용할 수 없기 때문에 도달하지 못할 것입니다. 일부는 특정 이유로 예약되어 있습니다.
Rich Homolka
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.