온라인 게임은 어떻게 인터넷을 통해 UDP 패킷을 전송합니까?

온라인 게임은 어떻게 인터넷을 통해 UDP 패킷을 전송합니까?

UDP를 사용하는 온라인 멀티플레이어 게임은 인터넷을 통해 네트워크 간에 전달되는 패킷을 어떻게 얻나요? 내가 이해한 바에 따르면, 클라이언트는 패킷이 컴퓨터에 도착하려면 라우터에서 포트 전달을 활성화해야 합니다. 이것이 대규모 온라인 게임(WoW, Diablo 등)이 플레이어에게 요구하는 것입니까?

예를 들어, 최근에 UDP 트래픽을 처리하는 서버를 만들었습니다. 보낸 사람이 보낸 내용을 다시 반향할 뿐입니다. 나는 이것을 인터넷의 서버에 배포했습니다. 포트 전달을 활성화한 후에만 발신자에게 에코를 다시 보낼 수 있지만 동일한 로컬 네트워크에 두 명의 발신자가 있는 경우에는 작동하지 않습니다.

답변1

짧은 답변: NAT 연결 추적

기억해야 할 한 가지는 IPv4 인터넷에 있는 대부분의 라우터가 NAT 라우터라는 것입니다.

대부분의 NAT 구현은 스마트 추적을 수행합니다. 내부 클라이언트에서 UDP를 어딘가로 보낼 때 대상 포트와 소스 포트가 있습니다. 포트가 반대인 상태에서 트래픽이 들어오면 해당 트래픽은 클라이언트로 다시 라우팅되고 대부분의 방화벽에서 허용됩니다.

추적 기능이 있는 NAT/방화벽은 이러한 패킷을 관련된 것으로 감지하고 다시 전달합니다.

server포트 5000UDP 에 대한 설명을 기반으로 한 예

  • server:5000클라이언트가 소스 에 대한 패킷을 보냅니다 .client:5001
  • client:5001첫 번째 NAT 라우터는 소스 IP와 포트가 이고 대상이 있는 패킷을 보게 됩니다 server:5000.
  • 라우터는 이를 도중에 전송하고NATip:NATport
  • NATip:NATport서버는 이를 수신하고 소스가 있는 응답을 생성합니다.server:5000
  • NAT는 이를 수신하고 송신된 패킷과 일치하는 소스 server:5000대상을 갖습니다(그러나 소스와 대상이 반대임).NATip:NATport
  • client:5001NAT는 이를 소스와 함께 스틸 로 보냅니다 .server:5000

소스 IP+포트와 대상 IP+포트는 추적할 수 있는 조합을 생성합니다. (더 자세한 내용이 있지만 이것이 기본입니다)

더 읽어보기그러나 나는 이것에 대해 더 나은 문서를 발굴해야 하며 단지 내가 경험한 것에서 나온 일화적인 증거를 참조하는 것이 아닙니다.

관련 정보