본문 바로가기
내일배움캠프_게임서버(202410)/분반 수업 스텐다드

네트워크

by GREEN나무 2025. 1. 6.
728x90

 

 

네트워크

https://teamsparta.notion.site/Wrap-Up-39dbbfb4fcf54e9fa89c17039427afef

 

 

네트워크 Wrap-Up

전송 계층과 응용 계층의 지식들은 게임 개발을 하며 종종 사용할 것이기에 공부합시다.

서버가 터지는 것을 막기

안정성 : 특정 기능을 언제나 균일한 성능으로 수행할 수 있는가

   이중화, 다중화, 로드 밸러싱

 

※ 로드 밸러싱 : 트래픽을 고르게 분산하는 기술

가용성

 컴퓨터 시스템이 특정 기능을 실제로 수행할 수 있는 시간의 비율을 의미

가용성은 전체 사용 시간 중에서 정상적인 사용 시간을 의미함.

   업타임  : 정상적인 사용 시간

   다운 타임  : 정상적인 사용이 불가능한 시간

   가용성 = 업타임/업타임 + 다운타임 

                  (재대로 돌아가는 시간 / 전체 시간)

 결함 감내 : 문제가 발생하더라도 기능할 수 있는 능력

이중화

가용성을 높이기 위해서는 SPOF를 이중화하는 것이 좋습니다.

이중화 : 무언가를 이중으로 두는 기술로 서버 컴퓨터, 네트워크 인터페이스, 스위치와 같은 물리적 장비나 데이터베이스, 서버 프로그램 등이 이중화의 대상입니다.

이중화 할 수 있는 대상은 대부분 문제가 발생할 경우 시스템 전체가 중단될 수 있는 대상이라는 공통점이 있습니다.

 

단일 장애점(Single Point Of Failure, 이하 SPOF) SPOF

: 문제가 발생할 경우 시스템 전체가 중단될 수 있는 대상을 뜻함. SPOF를 이중화 하여 최대한 없애는 것이 좋습니다.

 

이중화 구성

   액티브 : 가동 상태

   스탠바이 : 액티브의 백업으로서 대기하는 상태

🔹 액티브/스탠바이

한 시스템은 가동하고, 다른 시스템은 백업 용도로 대기 상태로 둠.

액티브 상태인 시스템에 문제가 발생할 경우 스탠바이 시스템이 자동으로 액티브 시스템을 대신하여 동작합니다.

페일오버(failover) : 액티브 시스템에서 문제 발생 시 스탠바이 시스템으로 자동 전환되는 기능.

안전한 구성 방식이지만 하나의 장비를 사용할 때에 비해 성능상의 큰 변화는 없음

 

🔹 액티브/액티브

두 시스템 모두를 가동 상태로 두는 이중화 구성 방식

부하를 분산시킬 수 있고, 두 시스템이 함께 가동되므로 성능상의 이점도 있습니다.

단점 : 한 시스템에 문제가 발생하면 순간적으로 다른 시스템에 부하가 급증할 수 있으며, 이로 인해 추가적인 문제가 발생할 수 있습니다.

 

다중화 : 무언가를 여러 개 두는 기술. 이중화를 넘어 다중화가 된다면 더욱 안정적인 운영이 가능합니다.

하지만 운영 상 부담도 커지니 트레이드 오프를 고려하여 선택해야 합니다.

 

트레이드오프(trade-off, tradeoff), 상충 관계 : 다른 측면에서 이득을 얻으면서 집합 또는 디자인의 품질, 양, 속성을 없애거나 잃어버리는 일이 수반되는 상황적 결정.

 

로드 밸런싱

트래픽 분배

트래픽 : 주어진 시점에 특정 노드를 경유한 패킷의 양. 서버의 가용성에 큰 영향을 끼치는 요소.

    트래픽의 사전적 정의는 주어진 시점에 네트워크를 경유한 데이터의 양.

 

서버를 다중화해도  과도한 트래픽은 서버의 가용성을 떨어뜨립니다

특정 서버에만 트래픽이 몰릴 경우 가용성이 떨어질 수 있습니다.

🔹 높은 부하로 인해 CPU의 발열↑, 메모리 공간 부족. 제한된 대역폭과 병목 현상으로 인해 응답이 느려지거나 일부 요청에 대한 응답 누락 등

 

트래픽의 고른 분배를 위해 사용되는 기술이 로드(부하) 밸런싱(균형)입니다.

로드 밸런서는 L4 스위치, L7 스위치라 불리는 네트워크 장비로도 수행할 수 있지만,

로드 밸런싱 기능을 제공하는 소프트웨어를 설치하면 일반 호스트도 로드 밸런서로 사용할 수 있습니다.

 

로드 밸런서는 일반적으로 이중화나 다중화된 서버와 클라이언트 사이에 위치합니다.

클라이언트들은 로드 밸런서에 요청을 보내고, 로드 밸런서는 해당 요청을 각 서버에 균등하게 분배합니다.

 

상태체크

검사를 헬스 체  : 다중화된 서버 환경에서 현재 문제가 있는 서버는 없는지, 현재 요청에 대해 올바른 응답을 할 수 있는 상태인지를 주기적으로 하는 검사.

 

헬스 체크는 주로 로드 밸런서에 의해 이루어진다.

 

로드 밸런싱 알고리즘 : 부하가 균등하게 분산되도록 부하 대상을 선택하는 방법.

   단순히 서버를 돌아가며 선택

   연결이 적은 서버부터 우선적으로 선택

   단순히 무작위로 선택

   해시 자료 구조를 이용하여 선택

   응답 시간이 가장 짧은 서버를 선택


 

암호와 인증서

구분 대칭 키 암호화 비대칭 키 암호화
키의 사용 방식 암호화와 복호화에 동일한 키 사용 암호화 키(공개 키)와 복호화 키(개인 키) 다름
보안성 키를 안전하게 전달하기 어려움 키 공유가 안전함 (공개 키를 이용)
속도 및 성능 암호화/복호화 속도가 빠름, 부하가 적음 암호화/복호화 속도가 상대적으로 느림, 부하가 큼
주요 문제점 키가 유출되면 보안에 치명적 암호화/복호화의 처리 시간이 더 오래 걸림
주요 활용 빠른 데이터 전송이 필요할 때 키 교환, 디지털 서명, 인증 등 높은 보안이 필요할 때
예시 AES, DES RSA, ECC

 

주요 활용 시나리오

단독 사용 :

대칭 키 : 데이터 전송 시 빠른 처리 속도가 중요한 경우 사용.

비대칭 키 : 초기 키 교환이나 보안 민감 데이터 보호에 사용.

 

혼합 사용 :

첫 전달만 개인키로 비밀리에 전달한다

공개 키로 대칭 키를 암호화해 안전하게 전달  전달받은 대칭 키로 데이터를 암호화 및 복호화.

이 방식에서 사용되는 대칭 키를 "세션 키"라고 부름.

(요청하는 쪽에서 대칭키를 보냄)

 

암호화 및 인증서와의 관계

암호화 : 데이터를 보호하기 위해 원문을 알아볼 수 없는 형태로 변경하는 과정.

   대칭 키와 비대칭 키 방식 모두 암호화에 사용되며, 목적에 따라 선택적으로 사용.

인증서 : 비대칭 키 암호화에서 공개 키의 신뢰성을 보장하기 위해 사용.

   공개 키가 진짜 특정 사용자에게 속하는지 확인하기 위해 신뢰할 수 있는 기관(CA, 인증 기관)이 인증서를 발급.

 

암호화의 목적 : 제 3자의 도청과 변조를 피해 상대방에게 안전하게 정보를 전달하는 것.

 

ex) A가 B에게 ‘안녕 나는 A야’라는 문자열을 안전하게 전송

 

1) 안나 가 B의 공개 키를 요청하고 B는안나 에게 공개 키를 전달합니다.


2) 안나 는 전달받은 B의 공개 키로 메시지를 암호화한 뒤 그 암호문을 B에게 전송합니다. 

      암호문이기에 제 3자가 메시지를 보아도 이해할 수 없습니다.


3) B는 개인 키로 암호를 복호화 해서 문자열을 확인합니다.

 

ex2) 대칭키 전달

1. 안나가 대칭키를 가지고 있음

 

2. 안나가 B에게 공개키 요구,   B가 공개키를 안나에게 보냄

 

3. 안나가 대칭키를 B의 공개키(개인키)로 안나의대칭키를 암호화 하여 B에게 보냄

 

4. B는 전달받은 암호화된 대칭 키를 B의 개인키(공개키)로 복호화.

 

5. B는 전달받은 대칭 키로 데이터를 암호화 및 복호화.

 

인증서와 디지털 서명

네트워크에서 인증서는 일반적으로 공개 키 인증서를 뜻함.

공개 키 인증서공개 키와 공개 키의 유효성을 입증하기 위한 전자 문서입니다. (공인 인증기관에서 발급)

 

인증서는 인증 기관(Certification Authority, CA)이라는 제3의 기관에서 발급합니다.

  인증 기관은 인증서의 발급, 검증, 저장과 같은 역할을 수행할 수 있는 공인 기관입니다.

 서버에서 전달받은 공개 키가 정말 신뢰할 수 있는 것인지, 전송 도중에 조작되지는 않았는지 확신하기 위해 서버는 공개 키 + 누가 생성했는지, 조작되지는 않았는지, 유효 기간은 언제까지인지 등의 내용을 포함한 인증서를 전송합니다.

 

서버는 인증키를 인증 기관에서 미리 받아두고 요청이 오면 기타 정보와 함께 클라이언트에게 전달합니다.

 

CA가 발급한 인증서에는 서명 값(Signature)이 있습니다.

클라이언트는 이 서명 값을 바탕으로 인증서를 검증할 수 있습니다.

 

 

인증서가 의도한 CA에서 발급된 것인지 확인하기

1. 서명 값 생성 과정

개인키로 데이터를 암호화한 후 이를 공개키와 함께 전달합니다.

  •  인증서 내용(예: ABC)을 해시 알고리즘을 통해 해시 값(예: 3dsafd)으로 변환합니다.
  •  이 해시 값을 CA의 개인 키로 암호화하여 서명 값(예: asdfasdf)을 생성합니다.
  •  CA는 생성된 서명 값을 인증서와 함께 클라이언트에게 전달합니다.

인증서 내용 : ABC”,  해시 : 3dsafd

인증서 내용을 해시처리하고 개인키로 암호화한 값 : asdfasdf”  공개키로 복호화 : 3dsafd(인증서 내용을 해시 처리한 값)

 

 

2. 인증서 검증 과정

 데이터를 수신한 클라이언트는 공개키로 데이터를 복호화하고, 인증서의 해시 값을 확인하여 변조 여부를 검증합니다.

(클라이언트가 인증서를 전달받은 후 수행)

    •  서명 값과 인증서 내용 분리:
      클라이언트는 전달받은 인증서에서 서명 값을 분리합니다.
       서명 값은 인증서 내용에 대한 해시 값을 CA의 개인 키로 암호화한 것입니다.
       서명 값을 CA의 공개 키로 복호화하면 인증서 내용에 대한 해시 값을 얻을 수 있습니다.

    •  서명 값 복호화:  CA가 서명한 원래의 해시 값을 확인하는 과정.
      CA의 공개 키를 사용해 서명 값을 복호화하여 인증서 내용에 대한 해시 값(예: 3dsafd)을 얻습니다.
  •  인증서 내용 해시 값 생성: 클라이언트가 현재 인증서 내용으로 해시 값을 새로 계산하는 과정
    인증서 내용을 동일한 해시 알고리즘으로 처리하여 해시 값을 생성합니다.

  •  비교:
    복호화로 얻은 해시 값과 클라이언트가 생성한 해시 값을 비교합니다.
    •  두 값이 같다면, 인증서는 CA의 개인 키로 서명된 것으로 확인되어, 해당 CA에서 발급된 것이 맞습니다.
    •  다르다면, 인증서가 위조되었거나, 발급 과정에서 문제가 있었음을 의미합니다.

이 과정을 통해 할 수 있습니다.

 

인증서 갱신 및 관리

  •  인증서는 주기적으로 갱신하여 최신 상태를 유지해야 합니다.
  •  통신 과정에서 사용자가 어떤 인증서를 참조해야 할지 명확히 전달됩니다.
  1. 변조 방지 및 공개키 사용
    • 정보 변조 여부를 확인하기 위해 인증서를 첨부하며, 인증서를 복호화할 수 있는 공개키는 누구나 접근 가능하도록 공개합니다.
    • 개인키로 암호화한 데이터는 공개키로 복호화할 수 있으며, 공개키로 암호화한 데이터는 개인키로 복호화할 수 있습니다.

 

 

인증서와 디지털 서명

웹 브라우저는 기본적으로 여러 CA의 리스트와 각 CA의 공개키를 알고 있습니다.

 

※ CA(Certificate Authority) : 인증서를 발급하는 기관

 

인터넷 사이트(서버)는 공개키와 개인키를 만들고, 신뢰할 수 있는 인증 기관(CA)에 자신의 정보와 공개키를 관리해달라고 계약하고 (경우에 따라) 돈을 지불합니다.

 

이 때, 계약을 완료한 인증 기관은 기관만의 공개키와 개인키가 있습니다. 인증 기관은 사이트가 제출한 데이터를 검증하고, 인증 기관의 개인키로 사이트에서 제출한 정보를 암호합니다.

 

 

서버는 공개키 개인키를 생성합니다.

이후 신뢰할 수 있는 CA에 서버의 정보와 공개키를 제출하여 인증서 발급을 요청합니다.

CA는 제출받은 데이터를 검증한 후, CA의 개인키로 암호화하여 인증서를 생성하고 서버에 제공합니다.

 

 

사용자가 사이트에 접속하는 과정

  • 사용자가 웹사이트에 접속하면, 서버는 자신의 인증서를 클라이언트(웹 브라우저)에게 보냅니다.
  • 클라이언트는 미리 알고 있던 CA의 공개키를 사용해 인증서를 해독하여, 서버의 정보와 서버의 공개키를 확인합니다.

대칭키 교환

  • 클라이언트는 서버의 공개키 대칭키를 암호화하여 서버에 전송합니다.
  • 서버는 자신의 개인키로 암호문을 해독하여 대칭키를 얻습니다.
  • 이후 대칭키를 사용해 클라이언트와 서버 간의 데이터를 암호화하여 주고받습니다.

 

 

대칭키의 특징

  • 세션이 종료되면 대칭키는 폐기됩니다.
  • 대칭키는 클라이언트에서 생성하여 서버의 공개키로 암호화되어 안전하게 전달됩니다.

 

 

HTTP와 HTTPS

  • HTTP는 기본적으로 데이터를 평문으로 주고받아 보안에 취약합니다.
  • 이를 보완하기 위해 보안 계층(SSL/TLS)을 추가한 HTTPS를 사용합니다. 
       http
    에 S(Secure Socket)가 추가된 https
  • HTTPS는 데이터의 기밀성을 보장하며, 통신 중 인터셉트를 방지합니다.

 

'내일배움캠프_게임서버(202410) > 분반 수업 스텐다드' 카테고리의 다른 글

CPU 수업(정리하기)  (0) 2025.01.15
컴퓨터 구조  (1) 2025.01.08
cpu 조사  (2) 2025.01.03
전송계층 정리 241227  (1) 2024.12.27
응용 계층(Application Layer) 조사  (0) 2024.12.26