본문 바로가기
게임 서버/게임 네트워킹의 이해

게임 네트워킹의 이해2 - TCP/UDP 프로토콜

by dragonDeok 2024. 9. 7.
728x90

Protocol이란?


  • 약속, 규약
  • 즉, 네트워크 프로토콜은 네트워크 통신에서의 서로 간의 약속 or 규약
    • 컴퓨터간의 통신에서도 서로 약속을 한다.
      ( ex. 예전의 모스 부호처럼 송신자/수신자가 전부 규칙을 알고 있어야 통신 가능 )

네트워크 7 layer


  • 소포를 포장지를 여러개 겹겹이 쌓아서 보내는 것과 같음
  • 맨 위에는 한국, 그 다음 포장지에는 서울, 그 다음 포장지에는 강남, 그 다음 포장지에는 신사동, ...
    • 이 포장지 하나하나가 layer이다.

게임에서 많이 사용하는 TCP / UDP


TCP 프로토콜이란?

하드웨어, 즉 기계 내부에서 아래 3가지를 보장해준다 ( 3way handshake )

  • 연결 유무 확인
  • 패킷 순서 보장
  • 패킷 송신 보장

UDP 프로토콜이란?

  • 연결 유무 확인? X
  • 순서 보장? X
  • 송신 보장? X

TCP보다 UDP가 훨씬 빠르다. 보통 유실이라는 게 100개 보내면 7개 정도 유실된다고 한다.
게임은 반응이 빨라야 하기 때문에 지연시간이 UDP가 빠르기 때문에 게임에서는 UDP를 쓰고 싶은데,
UDP는 송신 보장이 안되서 여러가지 문제가 생긴다. ( ex. 롤에서 궁 썼는데 궁이 안 나감 )

그래서 게임에서는 개발자들이 Reliable UDP라는 소프트웨어를 코딩으로 직접 개발해서 사용한다.
어떤 부분에서는 성능을 늘리고 안전성을 깎고, 어떤 부분에서는 성능을 깎고 안정성을 늘리는 방식이다.
하지만, 이걸 구현하기란 쉽지 않다. 그래서 이걸 예전에는 대형 게임사(블리자드 등)에서 직접 만들어 사용했다.
하지만 지금은 유니티나 언리얼에서 다 오픈소스로 제공한다.

우리가 아는 대부분의 게임은 UDP를 쓴다. ( 격투게임, 슈팅게임, lol, 오버워치, 스타 등.. )
반응성이 상관 없고 안정성이 중요한 게임은 TCP를 쓴다. ( MMORPG, 보드게임 )