03/11 TIL

김재혁·2025년 3월 11일

일정

  • 강의 1주차 수강(네트워크의 개념 / 온라인게임과 네트워크 구성)
  • 게임 수학 1강 2강 듣기

TCP와 UDP

TCP(Transmission Control Protocol) -> 전송 제어 프로토콜

  • 연결형
  • 신뢰성 우선(속도 낮음)
  • 데이터를 보내기 전 3-way Handshake(3단계 연결)로 연결 설정
    3-way Handshake 과정
    클라이언트->서버:SYN(연결 요청)
    서버->클라이언트:SYN-ACK(요청 승인)
    클라이언트->서버:ACK(연결 확정)
  • 데이터가 손실되거나 순서가 바뀔 시 자동 복구(순서 보장, 오류 제어)
  • 웹 브라우징(HTTP, HTTPS), 이메일, 파일 전송 등에 사용
  • 전략 게임, 체스, 바둑과 같이 속도보다는 정확한 데이터 전송이 중요한 게임은 TCP를 사용

UDP(User Datagram Protocol) -> 사용자 데이터그램 프로토콜

  • 비연결형
  • 속도 우선(신뢰성 낮음)
  • 바로 데이터를 전송
  • 순서가 바뀌거나 손실되어도 복구 X
  • 실시간 스트리밍, 온라인 게임, 화상 통화, DNS 등에 사용

대부분의 온라인 게임에서는 두가지 방식을 모두 사용

  • 채팅, 매칭같은 부분은 TCP를 사용하고 게임은 UDP를 사용
  • 디스코드도 TCP(텍스트 채팅), UDP(음성 채팅)을 함께 사용

TCP/UDP를 필요한만큼 적절한 비율로 사용

궁금한 점

  • 방치형 게임 같은 경우에는 어떻게 내 데이터를 쌓아서 저장해 두는지 궁금해져서 찾아봄.

게임진행은 UDP로, 저장은 TCP로

서버에서 시간 기반으로 계산(서버 동기화 방식)

  • 사용자가 로그아웃을 하면 마지막 접속 시간을 서버에 저장한 후 다시 로그인하면
    (현재 시간 - 마지막 접속 시간)을 계산하는 방식
  • 서버가 클라이언트 상태를 실시간 유지할 필요가 없음 -> UDP기반에서도 사용 가능
  • 오프라인 동안 발생한 데이터를 한번에 계산 가능

클라이언트에서 계산 후 서버에 동기화(클라이언트 기반 방식)

  • 클라이언트가 게임을 종료할 때 현재 상태를 저장 후 다시 로그인할때 클라이언트에서 시간 경과를 계산 후 서버에 업데이트를 해서 클라이언트의 요청을 받아 데이터를 업데이트하는 방식
  • 서버부담이 저고 클라이언트에서 빠르게 연산 가능하지만 데이터를 조작해서 해킹 가능성 있음(시간 조작 등)

서버에서 주기적으로 데이터 저장 (실시간 서버 동기화 방식)

  • 클라이언트가 접속하지 않아도 서버가 일정 주기롤 데이터를 저장해서 다시 로그인하면 서버에 누적된 데이터를 가져오는 방식
  • 클라이언트 조작이 불가능 하지만 서버 부화가 큼

보편적으로는 서버 동기화 방식을 사용한다고 함

0개의 댓글