네트워크 공부

1. 네트워크 기초

ogh4554 2024. 11. 7. 19:42

1. 네트워크

: 네트워크란 그물망(Net)과 일(Work)의 합성어로 그물망처럼 장치를 연결하여 정보를 주고받는 일을 의미


1) 프로토콜

 - 네트워크에서 주고받는 0과 1로 구성되어 있는 데이터를 주고받은 후 해석하기 위해 네트워크를 구성하는 컴퓨터와 네트워크 장비들이 지켜야 할 규칙

=> 데이터 전송 상대방, 데이터 형식, 데이터 전송순서와 절차, 데이터 전송방법 등을 규정


2. OSI 7 계층 모델 * 중요! 암기! *

: 국제 7계층 모델은 표준화 기구 (ISO)에서 개발한 통신에 관한 계층화 표준 모델.

통신이 일어나는 과정을 단계별로 파악할 수 있으며, 이상이 생긴 단계만을 고칠 수 있는 장점이 있음

( 물리 / 데이터링크 / 네트워크 / 전송 / 세션 / 표현 / 응용 )

 

1) 물리계층

 - 네트워크 데이터가 전기적, 진자적 연결에 의해 전송되는 물리적인 계층

 - 0과 1의 On, Off의 디지털 데이터를 전송

(ex. 랜선을 뽑으면 인터넷이 끊김, 전화선을 뽑으면 전화가 끊김)

 

2) 데이터링크 계층

 - 인접한 노드간의 신뢰성 있는 데이터 전송을 제어

 -  네트워크 카드의 MAC주소를 통해 목적지를 결정

더보기

* MAC 주소 : 컴퓨터에서 공유기, 공유기에서 브릿지, 브릿지에서 브릿지, 브릿지에서 공유기, 공유기에서 대상 컴퓨터 등 연결되어 있는 단말기들끼리의 주소.

 - 신뢰성 있는 전송을 위해 흐름제어 ( Flow Control ), 오류제어 ( Error Control ), 회선제어 ( Line Control )을 수행

(ex. 공유기)

 

3) 네트워크 계층

 - 사용자 간 전송을 위한 경로설정을 담당

 - 목적지로 도달하기 위한 최적의 경로를 라우팅 알고리즘을 통해 선택하고 제어

 - 목적지까지 전송을 위한 주소로 IP주소를 사용 ( 지역끼리 비슷한 IP주소 사용 )

 

4) 전송 계층

 - 사용자간 신뢰성 있는 데이터 전송을 담당

 - 프로세스를 특정하기 위한 주소로 Port Number를 사용

 - 신뢰성 있는 데이터 전송을 위해 분할과 재조합, 연결제어, 흐름제어, 오류제어, 혼합제어를 수행

+ 4. TCP/UDP 방식

 

5) 세션 계층

 - 응용 프로그램 간의 논리적인 연결(세션) 생성 및 제어를 담당

 - TCP/IP 통신 연결을 수립/유지/중단

 

6) 표현 계층

 - 데이터 표현방식, 상이한 부호체계 간의 변화에 대해 규정

 - 인코딩/디코딩, 압축/해제, 암호화/복호화 등의 역할을 수행

(ex. Json)

7) 응용 계층

 - 최종적인 데이터를 사용자가 실행하는 응용 프로그램을 통해 목적에 맞게 사용하는 계층


3. 패킷 통신

1) 회선교환방식

 - 통신하고자 하는 두 사용자가 하나의 고정된 이동 경로를 선정하고 통신하는 방식

 - 회선을 선정하는 상황에서 네트워크 혼잡도가 높다면 가능한 회선이 효율적이지 못한 경우, 다른 사용자가 선점한 회선을 사용할 수 없게 되는 경우 때문에 단점이 확실한 교환 방식

(ex. 전화교환원 - "~로 연결해 줘" -> 회선교환 -> 당사자와 통화)

=> 이를 해결하기 위해 제시된 교환 방식이 패킷 교환 방식

 

2) 패킷교환방식

 - 데이터를 패킷이라는 작은 단위로 나누어 전송하는 방식

 - 최종 수신지에 도착한 패킷을 패킷에 붙인 번호 순서에 따라 원래의 데이터로 재결합하여 사용

 - 미리 선정한 경로를 이용하는 대신 패킷마다 가장 최적의 경로를 통해 전송 진행

 

3) 패킷 헤더와 프로토콜 분석

 - 패킷은 전송하고자 하는 데이터를 분리하여 전송하는 단위이기 때문에 분리된 패킷을 데이터로 재구성하기 위하여 '헤더''데이터' 두 부분으로 구성

 - 패킷의 헤더에는 패킷의 순서, 송신지와 수신지 등 패킷을 전송하고 다시 재조립하기 위한 정보가 포함됨

 - 패킷의 프로토콜에 따라 헤더를 붙이는 작업을 캡슐화, 프로토콜에 따라 헤더를 분리하는 작업을 역캡슐화


4. TCP / UDP ** 중요!! **

1) 전송계층의 연결방식

 - 전송계층은 데이터를 정확하고 신속하게 전송하는 역할

 - 하지만 용도에 따라 둘 중 더욱 필요한 특징을 우선시하는 연결방식을 선정하여 프로토콜로 선택

 

(1) TCP (연결형 통신) - 신뢰성

 - 데이터의 정확한 전달이 필요한 경우 연결형 통신방식을 통해 '전달결과를 확인해 가며 통신'

 - 정확성 높음, 신속성 낮음

*주요 사용처 -> 이메일, 파일전송 등

+  TCP 3-way HandShaking

더보기

 

[1]

클라이언트는 서버에 접속을 요청하는 SYN 패킷을 보낸다. 이때 클라이언트는 응답을 기다리는 SYN_SENT 상태

 

[2] 

서버는 클라이언트의 SYN 요청을 받고 클라이언트에게 요청을 수락한다는 ACK와 SYN가 설정된 패킷을 발송하고 클라이언트의 응답을 기다리는 SYN_RECEIVED 상태

 

[3]

클라이언트는 서버에게 ACK를 보내고 이후로 연결이 이루어져 데이터가 오가게 된다.

이때 서버는 ESTABLISHED 상태

 

위와 같은 방식으로 통신하는것이 신뢰성 있는 연결을 맺어 준다는 TCP의 3 Way handshake 방식이다.

(2) UDP (비연결형 통신) - 신속성

 - 데이터의 신속한 전달이 필요할 경우 비연결형 통신방식을 통해 '일방적으로 데이터를 전송'

 - 정확성 낮음, 신속성 높음

*주요 사용처 -> 동영상, 게임 등(일시적으로 특정 부분이 이상해도 바로 정상적인 다음장면을 표현하는 방식으로 해결)


5. 게임 서버

1) 클라이언트-서버 구조

 - 서비스 요청자와 서비스 제공자의 작업을 분리하는 모델이자 네트워크 아키텍처

 - 클라이언트는 서비스를 사용하는 사용자 혹은 사용자 단말기를 가리키는 말

 - 서버는 서비스를 제공하는 컴퓨터이며, 다수의 클라이언트를 상대하기 위해 존재

 

 (+) 단점

 -클라이언트는 서비스가 필요한 경우 네트워크에 접속해 서버에게 서비스를 요청하고 받으면 되지만, 서버는 언제 어떤 클라이언트가 요청을 해도 서비스를 제공할 수 있게 준비하고 있어야 함

2) 전용서버 (Dedicated Server)

 - 서비스를 제공하는 하나의 작업을 전담하는 단일 서버 방식을 의미. (ex. 로스트아크)

 - 모든 클라이언트는 서비스에 접근하기 위해서는 전용서버를 통해서만 진행할 수 있으며 클라이언트끼리 서로 간섭이 불가능함

더보기

=> "에? 저는 전용서버에서 다른 유저랑 교환하거나 때려지던데요?"

-> 서버에서 클라이언트의 행동 데이터를 받아 처리하여 대상 클라이언트에게 전달하기 때문

-> 만약 서버에서 문제가 생기면 때리더라도 상대방이 대미지를 입지 않는 등의 버그가 생기는 것도 이 때문

 - 모든 서비스를 전용서버에서 담당하고 있기 때문에 안정적인 서비스를 제공할 수 있으며, 클라이언트 변조등의 핵에 강함

 - 하나의 작업을 전담하는 역할로 만든 서버이기 때문에 처리속도와 결과판단이 빠름

 

  (+) 단점

 - 단 고사양의 전용서버를 운영하는 비용이 많이 발생할 수 있으며, 초기 구성 비용이 많이 필요

 - 또한 전용서버에서 거리가 먼 클라이언트는 연결지연이 발생하는 문제가 있음

3) 리슨서버

 - 클라이언트 중 한 명이 서버의 역할을 겸임하며 참가하는 방식 (ex. 프로젝트 좀보이드 멀티)

 - 서버의 역할을 겸임하는 클라이언트를 호스트로 지칭하며 다른 클라이언트들은 호스트와 통신을 진행

 - 리슨서버는 개인의 컴퓨터 중 하나가 서버의 역할을 해주기 때문에 서비스 유지비용이 적게 들며, 물리적인 거리가 가까운 사용자끼리 진행하는 경우 지연시간이 짧은 장점이 있음

 

 (+) 단점  

 - 단, 리슨서버 방식은 호스트의 기기성능에 따라 품질이 다를 수 있으며, 호스트가 통신 연결이 끊기는 상황에 대한 대비가 필요하며, 호스트의 악의적인 변조에 취약함

더보기

=> 플레이어 간의 거래에서 플레이어 1이 물건을 보냈고 확인 알림까지 받았지만 플레이어 2는 물건을 받지 못하는 상황이 발생하는 등의 문제가 발생할 수 있음 

4) P2P (Peer to Peer)

 - 게임에 참가한 모두가 호스트 역할을 진행하는 방식으로 클라이언트들이 모두 서로 연결된 형태

 - 모든 클라이언트가 직접 연산을 진행하고 그 값을 다른 클라이언트에 전파하여 통신을 진행

 - P2P방식은 서버가 없기 때문에 어느 한 클라이언트가 연결을 종료하는 경우에도 문제가 없음

 

  (+) 단점

 - 단, P2P는 모든 클라이언트가 서로 연결된 형태이기 때문에 클라이언트가 많아질수록 급격하게 연산량이 많아지며, 통상적으로 최대 클라이언트 수가 정해져 있음

 

 

 

 

** 혹시 정보가 틀릴 경우 댓글로 남겨주세요 **

'네트워크 공부' 카테고리의 다른 글

네트워크 동기화 [Photon, PUN]  (1) 2024.11.14