윈도우의 TCPNoDelay와 TcpAckFrequency 을 이용한 게임 반응 속도 향상 프로그램 입니다.
프로그램 홈페이지 : http://www.gogine.com
TCPNoDelay란?
TCP에서 송신을 지연시키는 방법으로 네이글 알고리즘(Nagle Algorithm)이라는 것을 사용하게 된다.
일정 크기 이상의 데이터를 모아서 데이터를 한번에 전송하는 네이글 알고리즘은 서버측의 부하를 줄이기
위해 사용하는 편이다. (서버에서 데이터를 받을 때는 작은 데이터를 여러 번 받는 거보다 큰 데이터를
한번에 띄엄띄엄 받는 것이 부하를 줄이기에 좋다)
하지만 온라인 게임처럼 큰 데이터가 아닌 작은 데이터를 실시간으로 전달해야 하는 경우라면
네이글 알고리즘의 사용으로 지연시간(랙)을 유발할 수 있어 적합하지 않다.
‘데이터 전송방식으로 네이글 알고리즘을 사용하지 않는다’라는 것이 바로 TCPNoDelay = 1(끄다) 인 것이다.
TcpAckFrequency란?
기본적으로 TCP에서는 n개의 패킷이 수신되기 전엔 응답을 하지 않는다.
n개 미만의 패킷만 수신된 경우라면 200ms(0.2초)가 흐른 뒤에
대기를 막기 위해 강제로 응답을 하게 된다.
응답이 되는 경우는 2가지라고 할 수 있다.
0.2초가 경과하거나 n개의 패킷이 모두 수신 되었을 때.
이 n 값은 Window 상에선 기본적으로 2로 설정되어 있고,
이 값을 조절할 수 있는 레지스트리 값이 바로 TcpAckFrequency다.
Window 에서는 패킷을 2개 수신하기 전에는 응답을 하지 않는다.
1개의 패킷만 들어오고 나머지 1개가 안들어오는 상황이라면
0.2초가 흘러야 강제로 서버측에 응답을 보내게 된다.
당연히 온라인 게임처럼 송수신이 활발하게 이뤄지는 과정에
0.2초의 지연시간은 보기엔 짧아 보여도 플레이하는 유저 입장에서는
상당히 길게 느껴질 수 밖에 없다.
이것을 막기 위해 TcpAckFrequency를 1로 수정하게 되는데 이는 패킷 1개마다 응답을 보낸다는 말이 되며
0.2초라는 지연시간을 없앨 수 있게 된다.
이런거올려도되요??