게임서버프로그래밍 #0 - tcp 및 이벤트 통지모델

13
게임 서버 프로그래밍 TCP Review, I/O 이벤트 통지모델 NHN NEXT

Upload: seungmo-koo

Post on 22-Jul-2015

512 views

Category:

Software


6 download

TRANSCRIPT

Page 1: 게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델

게임서버프로그래밍

TCP Review, I/O 이벤트통지모델

NHN NEXT

Page 2: 게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델

TCP Review

Page 3: 게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델

TCP NAGLE

• NAGLE Algorithm– 왜 필요한가?

• 게임 서버에서는?

– 동작 원리는? (그림으로…)

– ON/OFF 방법 (코드로…)

Page 4: 게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델

TCP의 상태

• TCP의 단절 감지– 상대가 끊겼음에도 감지를 못할 수 있다. (유령세션) 왜?

– TCP state diagram으로 설명

– 게임 서버에서 어떻게 단절을 감지하고 처리해야 할까?

• TCP LINGER 옵션– 왜 필요하고 어떤 경우에 쓰는가?

– 사용법 (코드로..)

• Graceful Shutdown– 우아한 연결 종료는 어떻게 하면 될까?

Page 5: 게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델

I/O 이벤트 통지모델

Page 6: 게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델

Synchronous vs Asynchronous

• 각각의 경우 예– 일상 생활에서 예를 들어도 됨

Page 7: 게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델

Blocking vs Non-blocking

• 각각의 경우 예– File I/O functional call을 이용하여 예를 들면 편함

– 소켓에서는 어떻게 사용? (코드로…)

Page 8: 게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델

I/O 이벤트 통지 모델

• 구세대 네트워크 I/O 방식– (예) 아파치 웹서버

• 그래서, I/O 이벤트 통지 모델이 필요한 이유는?

Page 9: 게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델

SELECT 방식

• POSIX 표준– 동작 원리?

– 장점 및 단점?

• 이 방식은– Synchronous or Asynchronous중 어디에 해당?

– Blocking or Non-blocking중 어디에 해당?

Page 10: 게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델

EPOLL 방식

• 리눅스 커널 2.6 이상 지원– 장점 및 단점은?

– 동작 원리?

• 비슷한 것으로 BSD의 kqueue

• 이 방식은– Synchronous or Asynchronous중 어디에 해당?

– Blocking or Non-blocking중 어디에 해당?

Page 11: 게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델

Windows I/O 통지 모델

• WSAAsyncSelect– 특징? 장/단점?

• WSAEventSelect– 특징? 장/단점?

• Overlapped I/O Callback– 특징? 장/단점?

– EasyGameServer 참고

• 각각의 방식은– Synchronous or Asynchronous중 어디에 해당?

– Blocking or Non-blocking중 어디에 해당?

Page 12: 게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델

Windows I/O 통지 모델 - IOCP

• I/O Completion Port– 이 부분은 다음 시간에 과제로 나갈 예정…

– Windows via C++ 5th edition chapter 10 참고

Page 13: 게임서버프로그래밍 #0 - TCP 및 이벤트 통지모델

보너스 과제: 코루틴 (Co-routine)

• 개념 및 동작구조는?

• 왜 쓸까?

• C++에서는 지원하는가?

• Asynchronous + Blocking의 개념으로 설명 가능한가?