본문 바로가기

Network

윈도우 - 네트워크 탐색

같은 네트워크라면 브로드케스트를 이용하는 방법을 권장한다.



네트워크 탐색시간

작성자: 나모

작성날짜: 2008/01/17 10:04:25

 

소켓 생성(SNMP)을 스레드에서 한다.

프로세스는 여러개의 멀티스레드를 수행할 수 있다.

배제사항) 프로세스가 다른 프로세스를 생성은 고려하지 않는다.(단일 프로세라고 가정)

 

let1) 노드하나의 최악의 연결 시간: T

 

let2) 검색해야 할 네트워크 노드의 수 : N

let3) 스레드의 수: TH (assume. 하나의 TH는 하나의 소켓 연결을 만든다.)

 

∴ 수행시간의 범위 : N × T

(현실세계에서 N의 개수는 16,777,216개(A클래스), 65,536개(B클래스), 255개(C클래스)

T는 약 3초 라고 가정하면

=> 16777216 × T (50331648초 : 582일 13시간 48초) ~ 65536T (196608초: 18시간 12분 16초) ~ 255T (765초: 12분 45초) )

[주의. 클래스의 기준은 서브넷 마스크로 나눈다]

 

if ) TH개의 스레드로 수행한다고 하면(컨텍스트 스위칭 시간은 무시한다)

수행시간 : (N / TH) × T

  lim   {(N / TH) × T}   =  T

TH→N

현실제한사항1: TH를 N만큼 생성할 수 없다.

현실제한사항2: 한 컴퓨터에서 TH의 개수만큼 소켓을 생성(S)할 수 없다.

(비고. n{S} <= n{TH} << N)

 

대안. TH를 n{S}의 최대 개수만큼(또는, n(TH)의 최대개수) 생성해서 나누어서 실행한다.

수행시간(현실) = T × (N/n - N%n) (단, 1<n<1998 임)

∴ 결론. MAX_THREADS의 변수를 성능에 맞게 수정해야 한다. (테스트 혹은 기술자료에 의해)

 

스레드 관련 URLs

최대 생성 가능한 스레드 개수   http://www.devnote.net/42

스레드는 기본으로 1MB의 스택 메모리를 예약

32비트 윈도우즈에서는 하나의 프로세스는 기본적으로 2GB의 사용자 메모리 주소(가상메모리 주소 공간)

=> 최대 2000개 스레드가 결국 한계

대안) 프로세스를 n개 생성 -> 2000n의 스레드 생성 가능

 

소켓 관련 URLs

윈도우 XP Home edition 에서 최대 소켓 생성 개수    http://blog.naver.com/websearch/70021658722

테스트 프로그램에서는 소켓을 생성할 수 있을 때까지 계속 생성해 보았는데 3949개까지 생성되고 그 다음부터는 생성되지 않았다

'Network' 카테고리의 다른 글

푸시통지(Push Notification)  (2) 2012.09.21
ARP(Address Resolution Protocol)  (0) 2012.09.21
TIME_WAIT  (0) 2012.09.21
SNTP(Simple Network Time Protocol)  (0) 2012.09.21
MRTG(Multi Router Traffic Grapher)  (0) 2012.09.21