게임서버프로그래밍 #0 - tcp 및 이벤트 통지모델
TRANSCRIPT
게임서버프로그래밍
TCP Review, I/O 이벤트통지모델
NHN NEXT
TCP Review
TCP NAGLE
• NAGLE Algorithm– 왜 필요한가?
• 게임 서버에서는?
– 동작 원리는? (그림으로…)
– ON/OFF 방법 (코드로…)
TCP의 상태
• TCP의 단절 감지– 상대가 끊겼음에도 감지를 못할 수 있다. (유령세션) 왜?
– TCP state diagram으로 설명
– 게임 서버에서 어떻게 단절을 감지하고 처리해야 할까?
• TCP LINGER 옵션– 왜 필요하고 어떤 경우에 쓰는가?
– 사용법 (코드로..)
• Graceful Shutdown– 우아한 연결 종료는 어떻게 하면 될까?
I/O 이벤트 통지모델
Synchronous vs Asynchronous
• 각각의 경우 예– 일상 생활에서 예를 들어도 됨
Blocking vs Non-blocking
• 각각의 경우 예– File I/O functional call을 이용하여 예를 들면 편함
– 소켓에서는 어떻게 사용? (코드로…)
I/O 이벤트 통지 모델
• 구세대 네트워크 I/O 방식– (예) 아파치 웹서버
• 그래서, I/O 이벤트 통지 모델이 필요한 이유는?
SELECT 방식
• POSIX 표준– 동작 원리?
– 장점 및 단점?
• 이 방식은– Synchronous or Asynchronous중 어디에 해당?
– Blocking or Non-blocking중 어디에 해당?
EPOLL 방식
• 리눅스 커널 2.6 이상 지원– 장점 및 단점은?
– 동작 원리?
• 비슷한 것으로 BSD의 kqueue
• 이 방식은– Synchronous or Asynchronous중 어디에 해당?
– Blocking or Non-blocking중 어디에 해당?
Windows I/O 통지 모델
• WSAAsyncSelect– 특징? 장/단점?
• WSAEventSelect– 특징? 장/단점?
• Overlapped I/O Callback– 특징? 장/단점?
– EasyGameServer 참고
• 각각의 방식은– Synchronous or Asynchronous중 어디에 해당?
– Blocking or Non-blocking중 어디에 해당?
Windows I/O 통지 모델 - IOCP
• I/O Completion Port– 이 부분은 다음 시간에 과제로 나갈 예정…
– Windows via C++ 5th edition chapter 10 참고
보너스 과제: 코루틴 (Co-routine)
• 개념 및 동작구조는?
• 왜 쓸까?
• C++에서는 지원하는가?
• Asynchronous + Blocking의 개념으로 설명 가능한가?