이론상 접속 가능한 최대 인원은?

3권에서 새로 도입된 네트웍 및 멀티플레이어 프로그로그래밍 섹션을 위한 게시판입니다.

Moderator: 류광

Locked
비회원

이론상 접속 가능한 최대 인원은?

Post by 비회원 »

소켓이 u_short 형으로 되어 있는걸 보면

65536 ( 0~65535 ) 명을 수용(?) 할 수 있을 듯 싶은데........
symlink
Posts: 31
Joined: 2004-06-01 10:29
Contact:

이론상 접속 가능?

Post by symlink »

님이 말씀하신건.. 진짜 이론상이구요.. 실제로 랜카드 하나당 최대(?) 2만개 정도만 생각 하시면 됩니다.

더 접속을 받으시려면.. 랜카드를 여러개 꼽아서.. 서비스 IP를 여러개 두고 L4 스위칭을 하는 방법도

있습니다.

즉, 님이 말하신 포트번호는 로컬IP하나에 최대 할당 가능한 포트 수를 말하기 때문에 가능합니다.

그러니, 로컬 IP가 많다면.. 그만큼 많은 포트를 가질수 있겠죠^^
verena
Posts: 136
Joined: 2003-09-04 16:36

Post by verena »

일단 촛점을 TCP로 맞추면, 이론상 접속[이라기 보단 소켓 리소스가 더 적합하겠습니다.]가능한 수치에 영향력을 행사하는 변수들은 다음과 같습니다.

1. 소켓 기술자의 자료형

2. 운영체제에 따른 소켓 기술자 관리형태[윈도우의 경우 시스템단위, 리눅스의 경우 프로세스단위: 1번이란 소켓이 있다면 윈도우에서는 오로지 1개, 리눅스에선 프로세스영역에서만 1개 존재한다는 뜻입니다.]

3. 운영체제에 따른 소켓관련정보[버퍼링수치, 프로세스당 최대소켓수등등] 최대할당 제한수치

4. 시스템의 메모리리소스

5. 시스템의 주소관리 리소스

등이 이론상 소켓의 수에 영향력을 행사합니다. 1~5번까지 32비트로 표현할 수 있는 수치만큼의 리소스가 주어지면 충빈히 2의32승만큼의 소켓을 여는게 가능합니다. 이론상뿐만 아니라 현실적으로도 가능하죠. 근데 32비트 운영체제에서 주소의 문제로 인해 현실적으로 2의32승만큼의 소켓객체가 할당되는게 힘들죠. 정확하게 몇개까지 열릴지는 프로세스 단위라면 프로세스에서 남아도는 주소군, 시스템[윈도우의 윈속프로세스]이라면 시스템에서 남아도는 주소군만큼이겠죠. 운영체제의 성격에 따라 혹은 사용된 프로세의 이미지형태[c로 컴파일했냐 c++로 컴파일했냐]에 따라 사용가능한 주소군도 달라질것입니다.

UDP의 경우라면 사용된 네트웍카드의 대역폭, 회선 대역폭만 충분히 받쳐주면 TCP보단 제약이 덜하겠지만, TCP와 공통적으로 가지는 리소스상의 제약은 마찬가지입니다. 하지만 UDP는 서비스당 1개의 소켓이라 덜 영향을 받겠죠...

이상입니다. ㄴ('' )ㄱ=3=3
Holic for Template +_+
myevan
Posts: 1314
Joined: 2003-03-04 10:21
Contact:

Post by myevan »

각 운영체제 디폴트값에 따라서 다릅니다.
물론 바꾸어줄 수 있고요. 아마 검색해보면 나올텐데..
윈도우의 경우는 HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 에서
MaxUserPort 이것이던가 하는데 일방적으로 받는다거나 보낸다거나 했을때 대략 8000개 정도입니다.
(아마 적혀있다면 프로그래머들이 좋아하는 숫자 8192 같은것일듯. 다시 확인하기는 귀찮고 = ㅂ=)~ ;
m$아저씨네가 디폴트 수치를 바꾸었을지도.. 예전 기억으로는 그렇습니다. )

하지만 실질적인 이론상 수치는
소켓 버퍼 크기라던지 네트웍 대역폭양(그냥 100mb쓴다고 했을때),
DB가 버틸 수 있는 양등을 고려할때; MMORPG라면 일반적인 머신이라면 (저렴한 가격대의)
3000명 정도라고 생각됩니다만... 여기에 프로그래밍 복잡도와 최적화 등등을
고려하면 좀더 줄어들겠죠.
빗자루네 http://www.myevan.net >_<b
zupet
Posts: 2764
Joined: 2003-05-13 03:34
Location: NCSOFT LE팀

Post by zupet »

myevan wrote:각 운영체제 디폴트값에 따라서 다릅니다.
물론 바꾸어줄 수 있고요. 아마 검색해보면 나올텐데..
윈도우의 경우는 HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 에서
MaxUserPort 이것이던가 하는데 일방적으로 받는다거나 보낸다거나 했을때 대략 8000개 정도입니다.
(아마 적혀있다면 프로그래머들이 좋아하는 숫자 8192 같은것일듯. 다시 확인하기는 귀찮고 = ㅂ=)~ ;
m$아저씨네가 디폴트 수치를 바꾸었을지도.. 예전 기억으로는 그렇습니다. )

하지만 실질적인 이론상 수치는
소켓 버퍼 크기라던지 네트웍 대역폭양(그냥 100mb쓴다고 했을때),
DB가 버틸 수 있는 양등을 고려할때; MMORPG라면 일반적인 머신이라면 (저렴한 가격대의)
3000명 정도라고 생각됩니다만... 여기에 프로그래밍 복잡도와 최적화 등등을
고려하면 좀더 줄어들겠죠.
기본 수치가 5000이고 밑으로 1024개는 예약된 놈들이죠. 그래서 기본적으로 열 수 있는건 3900개가 좀 넘는다고 알고 있습니다.
Locked