2 minute read

P2P, Relay 서버 방식

P2P(Peer To Peer)

  • 클라이언트끼리 직접 연결하는 방식
    • 1대1에서는 두 클라이언트가 직접 연결
    • 다대다에서는 크게 2가지로 방식이 나뉜다
      • 방장을 정해서 방장 이외의 클라이언트가 방장에게 커넥트하는 방식. 방장이 모든 커넥션을 가지고 있음. 각 클라이언트가 관리해야하는 커넥션이 적다는 장점이 있음(방장만 많음). 또한 방장 중심으로 네트워킹이 일어나기 때문에 방장이 전체적인 판정이 가능.
      • 하지만 방장 방이 터질 경우 방폭 당함. 예를 들어 스타크래프트에서 방장이 나가버리면 구성원이 있건말건 방이 사라짐.
      • 다른 하나는 풀리 커넥션(Fully Connection). 서로 모두가 컨섹션하는 방식.
      • 각 클라이언트가 관리해야하는 커넥션이 많기는 함. 하지만 방장 존재가 없기 때문에 한 명이 중간에 나가는 상황에서도 게임이 중단되는 것이 없이 진행이 가능해진다.

Relay 방식

  • 서버가 존재하고 각 클라이언트들에 서버에 연결되어있음.
  • 서버가 심판을 보면서 게임 핵 등에 대해 안전함.
  • 하지만 서버가 나가리되면 게임 자체가 끊겨버리는 문제가 발생한다.

P2P와 Relay 방식의 큰 차이

P2P의 가장 큰 문제점

  • 이 문제점 때문에 주로 Relay Server방식을 사용한다.
  • p2p의 문제점을 미국과 소련의 냉전체제로 예를 들 수 있다.
    • 소련이 핵미사일을 미국에 쏘면 도달하는 시간이 2시간인데 미국이 대응하는데 3시간이 걸린다면 미국은 무조건 핵 맞을 것이고, 먼저 쏘는 놈이 승리자가 된다. 그렇기 때문에 상대가 미사일을 쐈다는 것을 파악할 수 있고, 도달하는 2시간 보다 대응을 빨리 한다면 서로 함부로 미사일을 쏘지 못하는 상태가 된다.
    • 그래서 대응사격의 체계를 구축하는 것이 관건이었다. 이 시스템을 만들기 위해서는 백악관부터 시작해서 미사일 사일로까지 다이렉트로 연결하는 방법이 있었는데, 속도는 빠르겠지만 중간에 끊어지거나, 스파이가 끊어버리거나 하면 백악관의 명령이 제대로 도착하지 못할 수 있었다. 그래서 한 쪽이 끊어졌을 때 패킷을 전달할 수 있는 네트워크 경로를 찾아내는 시스템을 만든 것이 ‘인터넷’이었다.
    • 그런데 이것이 전 세계인이 쓸 것이라고 만든 시스템은 아니었다. 그래서 그때 군사기지가 쓰고도 남을만한 주소체계인 IPv4(Internet Protocol, 32bit, 4byte)를 만들었는데, 인터넷이 광범위하게 사용되자 주소가 모자라서 새로 등장한 것이 IPv6(128bit, 16byte)이다.
    • 하지만 IPv6가 잘 사용되고 있지 않다. IPv4로도 잘 사용할 수 있는 기술이 등장했기 때문.

IP Mapping

  • 한정된 주소 체계 안에서 모든 컴퓨터에 고정IP를 정할 수는 없음.

  • 그래서 대표 컴퓨터에게 IP를 할당하고, 그 대표 컴퓨터가 그 아래에 있는 컴퓨터에 자체적으로 IP 주소를 맵핑한다.

    • 가령 택배기사님이 엔씨소프트의 김아무개에게 배달을 하려고 할 때, 엔씨소프트까지는 갈 수 있지만 김아무개에 건물 어디에 앉아있는지는 알 수가 없다. 그런데 택배가 제대로 도착할 수 있는 이유는, 엔씨소프트에 택배를 내부적으로 갖다주는 시스템이 존재하기 때문이다. 그 사람이 어디있는지는 엔씨소프트는 알고 있다. 이와 현재 네트워킹 환경은 매우 유사하다.
  • 모든 클라이언트가 고정 IP를 가지고 있지 않기 때문에 상대와 p2p 연결을 할 수가 없다. 주소를 알지 못하니까. 이를 극복하기 위하여 hole punching 기술이 등장하게 된다.

추가 : P2P는 클라-클라이고 Relay는 서버-클라 방식인가?

  • 꼭 그렇지는 않다. p2p를 하려고 했는데 NAT 장비에 막혀서 홀펀칭이 되지 않는 경우, 릴레이 서버를 이용해야한다. 즉 p2p를 이용하려고 했으나 못해서 릴레이를 쓴거니까 꼭 서버-클라 방식이라고 보기는 어렵다. 서버가 어떤 기능이 있는 것이 아니라 단순히 패킷 릴레이만 하는거라서 서버-클라라고 보기엔 무리가 있다.

출처