강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

최호석님의 프로필 이미지
최호석

작성한 질문수

외워서 끝내는 네트워크 핵심이론 - 기초

TCP 연결과 게임버그

게임에서 랜선 뽑았다 다시 꽂을 때, 입력 몰아 보내기가 가능한 이유가 궁금합니다

해결된 질문

작성

·

6

0

안녕하세요 널널한 개발자님!
예전에 게임을 할 때 "랜선을 뽑고 5초 동안 무한 클릭 → 다시 연결하면 입력이 한꺼번에 서버로 전달되는 것처럼 보이는 현상"을 경험한 적이 있습니다.

제가 헷갈리는 부분은 다음과 같습니다:

  1. 버퍼링 영역

    • 입력(클릭) 버퍼는 애플리케이션 레벨에서 관리되는 것인지, 아니면 TCP/UDP 자체에서 지원하는 것인지 궁금합니다.

    • UDP 자체에는 순서 보장이나 재전송이 없는데, 그렇다면 "클라이언트 애플리케이션이 버퍼링을 했다가 복구 시 몰아서 보내는 구조"일까요?

  2. TCP와 버퍼

    • TCP도 송신 버퍼/재전송 메커니즘이 있으니, 이론적으로는 일정 시간 동안 못 보낸 데이터를 나중에 한꺼번에 보내는 게 가능할 것 같습니다.

    • 그렇다면 "버퍼만 있다면 TCP에서도 동일한 효과"가 가능한 걸까요?

    • 아니면 이런 식의 입력 버퍼링은 UDP 환경에서만 가능한 건지, 구분이 궁금합니다.

정리하자면
👉애플리케이션 레벨 버퍼링이냐, TCP/UDP 레벨 버퍼링이냐
👉TCP에서도 '랜선 뽑았다가 꽂으면 입력 몰아 보내기' 같은 현상이 가능한가?

이 부분을 명확히 알고 싶습니다.

예전에 메이플이라는 게임을 했을 때 위와같은방식으로 사람들이 몰리는 상점에 저렇게 뚫어서 들어가는게 유행했었거든요!

답변 1

0

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

  1. 버퍼링 영역


    이 영역은 소켓에도 있고 TCP같은 전송 구현 자체(보통 OS에 구현되어 있음)에도 있습니다. 다만 UDP는 버퍼링 없이 즉시 전송합니다. 필요하다면 응용 프로그램 수준에서 버퍼를 구현해야 합니다. 그런데 그보다 더 큰 문제는 응용 프로그램 수준에서 UDP 소켓 사용 시 물리적으로 랜 케이블이 분리된 상황을 인지할 수 없다는 점 입니다.

  2. TCP와 버퍼
    네. 그렇게 작동합니다. 다만 그런 상황이 '혼잡' 상황과 연결됩니다. 이는 철저히 혼잡제어 규칙에 따릅니다.

버퍼링은 응용 프로그램 수준 및 OS수준 모두에서 일어납니다. 이런 절차를 간소화 하는 방식으로 불필요한 메모리 복사를 줄여 성능을 높이기도 합니다. (대표적으로 윈도우의 IOCP)
그리고 몰아 보내기는 가능합니다. 이런 문제를 해결하기 위한 노력은 전적으로 게임서버 개발자의 몫이 되겠습니다.

그리고 상점 뚫기를 넘어 아이템 복제같은 버그가 발생하기도 합니다. 참고하시기 바랍니다. 😄

최호석님의 프로필 이미지
최호석

작성한 질문수

질문하기