혼자 공부하는 네트워크 Chapter 4 정리

김지승·2024년 12월 15일

CS

목록 보기
3/22

전송 계층

네트워크 계층의 IP는 신뢰할 수 없는 통신비연결형 통신을 수행한다는 한계가 있다. 네트워크 계층과 응용 계층 사이에 위치한 전송 계층은 신뢰할 수 있는 통신과 연결형 통신을 가능하여 이러한 IP의 한계를 극복하고, 포트 번호를 통해 응용 계층의 어플리케이션 프로세스들을 식별하는 역할을 수행한다.

신뢰할 수 없는 통신

  • 설명: 데이터 전송 중 패킷 손실, 오류, 순서 변경 등을 보장하지 않음.
  • 예시: IP

신뢰할 수 있는 통신

  • 설명: 데이터의 정확성, 순서 보장, 오류 처리를 보장.
  • 예시: TCP

비연결형 통신

  • 설명: 송신자와 수신자가 연결을 설정하지 않고 데이터를 전송.
  • 예시: UDP

연결형 통신

  • 설명: 송신자와 수신자가 연결을 설정하고 데이터를 전송.
  • 예시: TCP

TCP

데이터의 전달 순서를 보장하며, 손실된 패킷은 재전송합니다. 하지만 이 과정에서 지연이 발생할 수 있습니다.

UDP

순서 보장과 재전송이 없기 때문에 속도가 매우 빠릅니다. 특히, 스타크래프트처럼 빠른 반응과 실시간 업데이트가 중요한 게임에서 UDP는 이상적입니다.


1. 스타크래프트에서의 TCP/IP 활용 (배틀넷)

배틀넷은 TCP/IP를 사용하여 게임의 안정성을 보장합니다.
1. 매칭 및 인증: 배틀넷은 플레이어 인증과 매칭 시스템에 TCP를 사용하여 정확한 데이터 전송을 보장합니다.
2. 게임 설정 전송: 게임 시작 전에 필요한 설정 값, 게임 룸 정보 등 중요한 데이터들이 정확히 전달됩니다.

스타크래프트에서 렉이 걸리는 이유!!

스타크래프트는 턴 기반의 게임이다. 내부적으로 turn rate(1초에 몇번의 턴이 진행되도록 할 것인가)라는게 존재하며, lock step이라는 기법을 통해 각 턴마다 사용자에게 명령을 수집하고 이 명령들을 사용자에게 공유하는데 (턴을 동기화) 똥컴(갈색)이 명령을 안주면 그걸 기다리기 위해 45초의 시간을 주고 이게 그 유명한 디스를 거는 것이다. 그리고 배틀넷에서 설정할 수 있는 low fastest와 같은 것은 turn rate라고 할 수 있다.

2. 스타크래프트에서 UDP 사용

UDP는 패킷 손실이 발생해도 게임은 계속 진행됩니다. 일부 데이터가 손실되더라도 게임 플레이에 큰 영향을 미치지 않기 때문입니다.
배틀넷보다 빠르게 반응하는 이유는, 로컬 네트워크에서 실행되는 경우 패킷 전송 경로가 짧아져 지연(latency)이 줄어들기 때문입니다.

  • 일반 환경에서 UDP로 연결이 어려운 이유

    • (1) NAT(Network Address Translation) 문제

      대부분의 가정용 라우터는 NAT를 사용하여 내부 네트워크(Private IP)와 외부 네트워크(Public IP)를 구분합니다.
      NAT 환경에서는 내부 네트워크에 있는 장치(클라이언트)가 외부에서 직접 접근될 수 없습니다.
      예: 스타크래프트에서 호스트가 게임을 생성하면, 외부 플레이어가 그 호스트의 내부 IP를 직접 알거나 접근하지 못함.
      UDP는 TCP처럼 세션을 유지하거나 연결 상태를 추적하지 않기 때문에 NAT가 더 큰 문제로 작용.

    • (2) 포트 포워딩 설정 부족

      UDP 통신을 위해서는 특정 포트를 열어야 합니다.
      그러나 일반 사용자가 라우터의 포트 포워딩 설정을 하지 않으면, 패킷이 외부에서 내부 네트워크로 전달되지 못합니다.

    • (3) 방화벽

      로컬 네트워크의 방화벽이나 ISP(인터넷 서비스 제공자)의 제한으로 인해 UDP 패킷이 차단될 수 있습니다.

3. 극복

  • 하마치

    하마치(Hamachi)는 이런 문제를 해결하기 위해 가상 사설망(VPN)을 구성하여, 서로 다른 네트워크에 있는 사용자들이 마치 하나의 LAN에 있는 것처럼 통신할 수 있도록 도와줍니다.

    (1) NAT 우회: 하마치는 VPN 기술을 사용해 내부 네트워크와 외부 네트워크 간의 연결을 가상 사설 네트워크로 우회시켜 UDP 패킷 전송을 가능하게 합니다.

    (2) P2P 연결 지원: UDP로 연결할 수 없던 상황에서 하마치가 UDP 패킷을 우회시키며, LAN 환경처럼 사용할 수 있게 해줍니다.

    (3) 설정 간소화: 일반적인 포트 포워딩이 필요 없으며, 사용자가 별도의 설정 없이 쉽게 사용할 수 있습니다.

  • 카오스 런처

    카오스 런처(Chaos Launcher)나 비슷한 프로그램은 게임의 네트워크 처리 방식을 조정하여 반응 속도를 최적화합니다.

  1. 패킷 손실 관리:

    UDP는 패킷 손실에 민감하지 않지만, 손실이 과도하면 문제가 생길 수 있습니다. 이런 프로그램은 네트워크 품질을 분석해 패킷 손실률을 최소화하거나, 특정 중요 패킷을 우선 처리하도록 설정합니다.

  2. 네트워크 지연 조정:

    네트워크에서 Ping(왕복 시간)을 조정하거나 지연 보정 알고리즘을 사용해 플레이어 간 동기화를 개선합니다.
    예를 들어, 각 플레이어의 네트워크 지연 시간을 고려해 공정한 반응 속도를 유지하도록 게임 엔진을 조정합니다.

  3. CPU 우선순위 및 클럭 속도 최적화:

    카오스 런처는 운영체제에서 스타크래프트의 프로세스 우선순위를 높여 CPU 리소스를 최대한 사용하게 하고, 네트워크 처리 속도를 향상시킵니다.

  4. 리플레이 모드와 실시간 상태 확인:

    카오스 런처는 게임 내부 상태를 모니터링하여 데이터 전송 타이밍을 조정해 게임 속도와 반응성을 높입니다.

  5. 딜레이 제거:

    배틀넷은 동기화 문제가 발생하지 않도록 일정 딜레이를 넣는 경우가 많습니다. 반면, 로컬 네트워크나 카오스 런처 환경에서는 이 딜레이를 제거하여 빠른 반응을 제공합니다.

4. 다른게임에서의 지연 최소화 방법

  • FPS 게임 (예: Overwatch, CS:GO):
    (1) UDP 사용: 빠른 실시간 반응을 위해 UDP를 사용하여 빠른 명령 전송과 정밀한 반응을 보장합니다.

    (2) 서버 지역 선택: 게임 서버를 가까운 지역으로 선택하여 핑을 줄이고 더 빠른 연결을 유도합니다.

    (3) 롤백 및 예측 처리: 지연 시간에 따라 서버가 예측 처리를 통해 플레이어의 행동을 예측하여 지연을 줄이는 방식을 사용합니다.

  • MOBA 게임 (예: 리그 오브 레전드):
    (1) TCP와 UDP 혼합 사용: 게임 로직 및 매칭은 TCP로 처리하고, 실시간 전투는 UDP로 처리하여 안정성과 속도를 모두 확보합니다.

    (2)서버 최적화: 여러 서버가 지리적 위치에 따라 게임 데이터를 처리하여 지연 시간을 최소화합니다.


결론

  1. 지연 시간 최소화는 게임 성능과 사용자 경험을 향상시키는 중요한 요소입니다.
  2. 게임마다 UDP와 TCP의 장단점을 적절히 활용하여 빠른 반응과 안정성을 동시에 확보하려는 노력이 필요합니다.
  3. 하마치와 카오스 런처와 같은 도구는 네트워크 설정을 간소화하고, 게임 환경을 최적화하여 플레이어가 보다 쾌적한 환경에서 게임을 즐길 수 있도록 돕습니다.

Coming Up Next

https://gall.dcinside.com/mgallery/board/view/?id=tk8&no=636608
https://playvalorant.com/ko-kr/news/game-updates/04-on-peeker-s-advantage-ranked/

profile
디등

0개의 댓글