2025-03-11네트워크 상식

별빛에소원을·2025년 3월 10일

TeamSparta-Unreal1기-TIL

목록 보기
54/90

알고리즘

프로그래머스 멀리뛰기

네트워크

네트워크를 공부해야 하는 이유

돈이 된다.
대한민국 시장에선 안타깝지만 콘솔은 돈이 안된다.

기본 구성요소 3가지

노드, 링크, 프로토콜
노드는 컴퓨터와 같은 디바이스를 이야기하고 링크는 디바이스를 연결하는 매질?을 이야기한다(wifi, 이더넷등)
프로토콜은 주고받는 패킷을 정의한다.

배치형태

망을 구성하는 방식으로 여러가지 있지만 주로 사용되는건
Star, Mesh, Tree구조를 사용하게 된다.
스위치와 허브의 가격이 저렴해 졌기 때문에 브로드캐스트시 손실에 대한 걱정과 부담을 짊어져야 하는 ring과 bus방식은 선호되지 않는다.
Star구조

Mesh구조

Tree구조

Star구조가 제일 싸고 간편하게 이용하기 가능하나 허브가 맛이가면 통신이 맛이간다
Mesh구조는 하나가 맛이간다고 통신이 맛이가지 않는 대신에 모든 복잡하고 비용이 비싸다
Tree는 허브 하나가 맛이가도 예비허브로 구성되어 통신을 동작시키는 실용적인 방법

주로 Star나 Mesh를 접하게 될것

네트워크 레이어

  1. 물리(usb,이더넷)
  2. 데이터링크(maxaddress)
  3. 네트워크(ip,ipx)
  4. 전송(tcp, udp)
  5. 세션(rpc, netbios)
  6. 프리젠테이션(ssl,dns)
  7. 어플리케이션(http)
    계층에 따라 스위치의 종류가 달라지는데 이것을 주로 참고해두자
참조데이터용도
L2 스위치MAC 주소 테이블스위치에 물려 있는 디바이스 간의 통신 전송
L3스위치라우팅 테이블라우팅 테이블을 참조하여 인접 라우터를 기억하고 원거리 통신
L4스위치포트번호포트번호를 사용해 트래픽을 분배(로드밸런싱)하는 역할
L7스위치데이터기반HTTP헤더, URL, 쿠키등의 어플리케이션 데이터를 기반으로 한 로드밸런싱, 보안적용
  • 허브는 디바이스를 가지고 있는 그룹 전체와 통신하고 스위치는 정확한 주소의 장비와 통신한다.

  • 세션은 통신이 유지되는 동안 존재하는 휘발성 메모리이다

프로토콜

TCP
데이터를 보내고 반드시 검증한다.
UDP
데이터를 냅다 던진다.
IP
네트워크 계층에서 작동하는 패킷의 케리어 역할을 한다.

데이터 전송과정


물리계층에서 시작되어 어플리케이션 단계로 갈수록 각 단계에서 패킷이 처리되어 헤더가 줄어든다.
반대는 늘어나는것을 확인 할 수 있다.

Mac Address

장비의 고유주소값이다. 총 48bit로 구성되고 24bit는 국제표준기구에서 할당하고 다른 24bit는 제조사에서 할당한다.

IPv4

IPv6가 있음에도 IPv4를 사용한다.
이미 사용되고 있어 바꾸기 어렵고 IPv4가 더 쉽기 때문이다.
서버는 고정ip를 주로 사용하며 클라에서는 b,c를 사용하게 된다.

B클래스는 주로 사설 인터넷으로 고정된 IP를 사용할 수 없다.

ARP는 IP->MacAddress로 변환하는 기술을 말한다.

통신해야 하는 주소가 내부망이라면 ARP프로토콜로 해당 IP를 가진 장비로 브로드캐스팅 후 응답이 오는 디바이스에 데이터를 전송한다.

통신해야 하는 주소가 외부망이라면 게이트 웨이를 찾기 위해 ARP프로토콜을 브로드캐스팅 한다

내부망 외부망을 구별하는 조건은 서브넷 마스크다.
같은 서브넷 마스크를 가지고 있다면 내부망이고 그렇지 않다면 외부망으로 판별한다.

서브넷 마스크는 내외부망을 판별하는 기준이되기도 하지만 같은 공인IP를 쉐어하는 용도로도 사용이 된다.

클래스사설IP갯수주소서브넷 마스크
A약 1600만개10.0.0.0~10.255.255.255/8
B약 100만개172.16.0.0~172.31.255.255/16
C약 6만개192.168.0.0~/24

ARP 변환

Port

전송계층에서 IP와 함께 특정 프로세스나 서비스를 연결하기 위한 주소체계다. 0~65535값을 가지며 80번 포트는 웹서비스를 뜻한다.
1. 서버의 기본 서비스 대역 : 0~1023

  • http : 80
  • https : 443
  1. 응용프로그램 또는 서비스로 등록된 대역 : 1024~49151
  2. 동적 또는 사설 포트 : 49152 ~ 65535

공인 IP와 사설 IP의 포트를 변환 할 때는 IP와 비슷하게 PAT를 사용한다.


도메인 이름

사람이 사용할 사이트마다 공인IP주소를 외우는 것은 어려운 일이다.
그래서 일반인도 이해하기 쉽게 사람이 읽고 쓰고 기억하기 쉽도록 DomainName을 통해서 IP를 DomainName으로 변환한다.


네트워크 장비

  1. HUB
    싼맛에 사용되지만, 성능과 효율이 떨어져 지금은 사장됨.

  1. 스위치
    Lan내부에서 데이터를 전송하는 역할로 MacAddr로 직접 전달.

  1. 라우터
    네트워크간 IP주소를 기반으로 데이터 전송을 담당

  1. 모뎀
    디지털 신호와 아날로그 신호를 변환해주는 장비

  1. 방화벽
    특정 IP주소 또는 도메인의 트래픽을 차단하거나 허용한다.

  1. VPN(Virtual Private Network)
    내부망의 IP와 외부망의 IP를 스왑해줌으로서 추적에 안전하게 해주는 장비다.

Cache서버
웹, Restful, API서버로 요청을 하면 미들웨어를 거쳐 최종적으로DB에서 데이터를 획득하는데 , 동일한 요청과 결과라면 이를 임시로 저장했다가, 서버대신 결과를 반환한다.
트래픽부하를 줄이는 역할을 함


IT 업계에서 상식적으로 알고 있어야하는 용어들 입니다.

Reliable UDP

  • 안정성과 속도를 동시에 잡기위한 프로토콜

QUIC

  • HTTP/3 에 제안된 UDP 기반의 프로토콜

IP

  • 인터넷 기반 전송 프로토콜

IP Port

  • IP주소와 함께 사용해서 1개의 서버에서 여러 개의 서비스를 제공할 수 있도록 해주는 역할

MAC Address

  • 네트워크 장비에 1개씩 할당된 고유 주소 (ROM에 탑재되어 원칙적으로는 변경불가)

IP4/6 Address

  • 국가별, 지역별, ISP별로 할당된 주소

도메인 이름

  • 사람이 읽고, 쓰고, 기억하기 위한 주소 체계, DNS를 통해서 IP주소로 변환

DNS

  • 도메인을 IP주소로 변환

DHCP

  • IP주소를 여러 대의 디바이스가 공유하게 하는 서버

서버

  • 중앙에서 어떤 일을 하는 컴퓨터

DB 서버

  • 데이터 베이스로 데이터를 저장하고 읽는 서버

웹 서버

  • HTTP (80/443번 포트) 서비스를 담당하는 서버

Restful API 서버

  • JSON 기반의 데이터를 송수신하는 서버

API 서버

  • Socket 또는 다른 프로토콜 등으로 데이터 베이스의 앞에서 게이트 역할을 하는 서버

방화벽 서버

  • 세션을 제어하기 위한 서버

클라이언트

  • 네트워크에 접속하여 다른 클라이언트와 통신하거나 서버를 사용하는 디바이스

온라인 게임과 네트워크

온라인 게임은 크게보면 Sync, Async 방식으로 나뉘며
실시간은 Sync방식은 온라인서버, Lan 파티 환경으로 나뉜다.

CAP 이론

Consistency(일관성)
전체 시스템은 동일한 상태값을 갖고 있어야 한다.


Availability 가용성
언제든지 시스템에 접근하여 값을 읽고 쓸 수 있어야 한다.


Partition Tolerance 분할용인
시스템을 분할하여 병렬처리 등이 가능해야 한다.


게임에서의 동기화

게임에서는 보통 일관성을 유지하고 가용성을 포기한다.

예전 시스템의 경우
서버에서 한틱동안의 모든 이벤트를 저장했다가 브로드캐스팅을 통해 클라이언트를 업데이트 시키는 방식
반응속도가 빠를 필요가 없다면 선호되지만 게임에서는 선호될 수 없다.(턴제라면 예외)

현재 시스템의 경우
클라이언트의 동작을 즉시 서버에서 반영하고 결과를 클라이언트에 반환하면 다시 서버에 브로드캐스팅 요청을한다.

클라이언트는 Update를 App에 요청하고 서버에서 받은 값으로 보정을한다.
맞으면 사용하고 아니면 rollback한다.

나머지 클라이언트는 update한다.


CP설계

가용성을 무시하고 일관성을 우선하는 CP설계의 대표적인 게임은 스타크래프트다.

플레이어가 입력하면 서버에서 처리한 후 클라이언트를 업데이트 하는 방식이다.

해당 방식은 지연시간이 분명히 존재하는데 이를 감추기 위해 사운드나 이펙트 효과등을 활용했다.


AP설계

게임 클라이언트를 우선 업데이트하고, 후에 일관성을 보정하는 방법을 사용한다.

응답속도가 낮을 경우 뒤늦게 죽는 경우나, 케릭터가 뒤로가능 경우가 발생한다.

해당 설계에 특징은 클라이언트에서는 입력값을 예측을하고 서버의 수신값과 비교하여 결과를 반환한다는 것이다.

(응답시간)Latency가 떨어져도 세션을 그대로 유지한다는 특징이 있다.


클라이언트 보간

네트워크는 강하게 결합되어 있지 않으며, 불안정하다 따라서 브로드 캐스팅되는 데이터가 클라이언트에서 일정 시간마다 반드시 도달한다고 가정하면 예기치 않은 문제가 발생하기 때문에 클라이언트 에서는 보간을 한다.

  1. 서버데이터 수신
    일정 간격으로 케릭터의 위치를 클라이언트에 전송.
  2. 클라이언트 버퍼링
    수신된 위치값을 버퍼에 저장하고 보간에 활용
  3. 보간계산
    두 위치값 사이를 비율에 따라 계산
    t=0.025초일때, x=5, y=5를 보간하면 중간위치는 x=2.5, y=2.5
  4. 렌더링
    매프레임마다 보간 된 위치를 화면에 반영하여 부드러운 이동을 묘사

비동기

위의 사례와 방법들은 모두 동기화된 사례들이고, 네트워크에서 세션을 유지하기 어려운 모바일 환경등에서 사용하는 방법으로는 보장된 데이터를 사용하여 환경을 구축하는 것이다
COC같은 게임의 경우 AP설계에 해당한다.

이벤트를 서버에 전송하고, 서버는 이벤트를 검증 후 결과를 DB에 저장한다. 플레이어는 다른 플레이어의 접속여부와 관계없이 게임 진행이 가능해진다.


채팅 서버와 온라인 게임 서버의 차이

채팅보다 처리할 정보가 많은 게임서버는 데이터 처리가 채팅보다 복잡하지만
다양한 채널과 동기화를 고려해야하는 채팅서버는 게임서버보다 복잡하다.


서버 서비스의 진화

가장 작은규모의 서버


처리할 데이터가 많지 않고 트래픽이 적으면 저런 구성이 가능하다.

병목현상 처리

트래픽이 증가하면 균등한 서버의 부하를 주지 않으면 전체 시스템 성능이 떨어지는 현상이 발생한다. 이를 병목현상 이라고 하고 주로 역할별로 서버를 구별하여 해결한다.

유저들의 채팅량이 증가하면 그에 대응 하는 서버도 필요

패치가 빈번해지면 패치서버도 필요하다.

서버의 증설이 필요한 경우

해킹 방어

진화 ING


필요에 따라서 서버를 증축하는 과정을 도식화 한 것이다.
트래픽을 줄이고 외부의 해킹에 취약점을 보완해나가는 모습을 보인다. 훨씬 더 다양한 문제들을 해결해야 겠지만 당장은 그렇다.


느낀점

서버가 막연히 어렵게 다가왔는데 강의영상을 보고 용어들이 많이 정리된 느낌을 받았다.
병목현상을 막고 성능을 유지시키기 위해서 복잡해지는 과정이
객체지향프로그래밍과 유사한 느낌이라서 복잡한 개념이지만
미묘하게 친숙하게 느껴졌다.

profile
취미로 게임하는사람

0개의 댓글