1 minute read

네트워킹이란

네트워킹

  • 데이터를 주고 받는 것.
  • 컴퓨터 내부에서 cpu, ram, hdd, sdd 사이에서 데이터를 주고받는 것도 큰 틀에서는 네트워크라고 볼 수 있음.
  • 흔히 말하는 네트워킹은 멀리 떨어져 있는 데이터 교환을 일컫는다.
  • 내 pc <-> amazon 서버 사이의 데이터 교환 등.

컴퓨터 내부의 데이터 교환과 컴퓨터 간의 데이터 교환의 차이

  • 지연시간(레이턴시) 차이
    • 컴퓨터 내부는 거리가 짧기 때문에 매우 빠른 속도(인간이 알아채지 못할 정도)로 데이터 교환이 일어난다.
    • 컴퓨터 간에는 물리적인 거리가 매우 멀 수 있다(지구 반대편끼리의 데이터 교환) - 설령 광케이블로 연결되어 있다고 하더라도 지구 한 바퀴를 도는데 대략 133ms가 걸린다고 한다.
    • 게임에서는 이런 레이턴시를 얼마나 줄이고, 눈속임할 수 있는가가 가장 중요한 부분. 물리적인 한계가 있기 때문에 줄이는데는 한계가 있다. 아무리 빨라도 133ms가 걸리니까.
  • 연결 안정성
    • 패킷이 상대방 컴퓨터에 다이렉트로 가는 것이 아니고 여러 컴퓨터를 거쳐서 가기 때문에, 내 컴퓨터에 문제가 생긴 것이 아니어도 중간에 문제 생긴 곳이 발생하면 연결 안정성이 저해될 수 있다.
    • 최근에는 모바일 무선 네트워크가 활성화되면서 연결 안정성이 떨어지는 경우가 많이 발생하고 있다. 순간 순간 끊어지는 상태가 자주 발생하는데, 모바일 게임은 그래서 눈속임이 많이 필요하다.
  • 순서 비보장
    • cpu와 ram 사이의 데이터 교환은 1-2-3의 순서로 데이터를 보내면 받는 쪽도 1-2-3의 순서로 받는다.
    • 하지만 인터넷 환경에서는 이 순서가 보장이 되지 않는다.
    • 두 지점 사이에서 데이터를 교환할 때 여러 거점을 거치기 때문에 항상 동일한 경로 가는 것이 아니다. 그래서 패킷의 도착 순서가 달라질 수 있다.

마치며

  • 게임 서버 프로그래밍은 지연시간, 연결 안정성, 순서 비보장 문제를 어떻게 해결하느냐가 관건이다!

출처