본문 바로가기

게임 회사/서버 프로그래밍

[2] 컴퓨터 네트워크

클라이언트 : 서비스를 이용하는 사용자들의 단말기

서버 : 서비스를 제공하는 무인 컴퓨터

 

네트워크 스위치

- PC간 랜선으로 연결하여 LAN(Local Area Network)를 형성

 

OSI 7계층

1. 물리 계층 : 하드웨어를 다루며 데이터의 파형을 결정

2. 데이터 링크 계층

- 프레임(frame)이라는 단위로 통신

- LAN 통신이 가능하게 함

- LAN간 데이터를 전송하지만 반드시 전송되지는 않음

3. 네트워크 계층

- WAN(Wide Area Network)이 가능하게 함

- , LAN 간의 통신이 가능하게 하기 위해 네트워크 스위치간의 데이터가 전송되어야 함

- 이 때, 스위치에 데이터를 한 번에 전달하지 못할 경우, 이를 전달하기 위해서는 라우터(router)를 통함

- IP(Internet Protocol)3계층에 해당

4. 전송 계층

- 상대방에게 데이터를 반드시 전송

- TCPUDP가 여기에 해당됨

5~7 세션, 표현, 응용 계층

- 받은 정보를 기반으로 프로토콜을 이용하여 사용자의 컴퓨터에 응용 프로그램과 연결

- 게임 클라이언트 개발은 해당 계층에서 이루어짐

 

스트림(stream)

- 데이터의 흐름

- 두 단말기간의 연결이 이루어졌으면 연결이 끊기기 전까지, 해당 데이터 흐름을 의미

 

단편화(fragmentation)

- 매우 긴 스트림을 송신할 때, 운영체제는 이를 IP 패킷의 크기 제한에 맞추어 여려 조각으로 나누는데 이를 단편화라고 함

- 수신 측에서는 단편화된 패킷을 받아 조립하여 스트림 형태로 복원

- IEEE 802.3br에 정의

 

IP 주소와 포트를 묶어 끝점(end point)라고 한다.

 

DNS(Domain Name Service) 서버

- 호스트 이름(영어로 된 인터넷 주소)IP 주소로 변환해주는 서버

- ex) www.abcd.com -> NAT -> 123.1.2.3

 

패킷 드롭(packet drop)과 패킷 로스(packet loss)

- 패킷 드롭 : 네트워크 기기가 처리하지 못한 패킷을 버림

- 패킷 로스 : 패킷 드롭에 의해 패킷 유실이 발생

 

네트워크 품질의 결정 요소

- 전송 속도(throughput) : 단위 시간당 데이터 전송의 총량

- 패킷 유실률(packet loss rate) : 패킷이 중간에 버려지는 비율

- 지연율(latency) : 전송 데이터가 시작 지점에서 도착 지점까지 가는데 걸리는 시간

 

UDP(User Datagram Protocol)

- 사용자가 정의한 데이터그램(datagram)을 상대방에제 보내는 통신 규약(protocol)

- 소켓(socket : 들어온 데이터가 올바른 응용 프로그램에 찾아갈 수 있게 해주는 식별 번호)을 통해 전송

- 소켓을 바인드(bind)한다는 뜻은 포트 번호를 부여하겠다는 의미

- UDP단순하며 N N 통신이 가능

- 하지만 데이터 유실이 크고 데이터 순서가 뒤바뀔 수 있음

- C++ 기준 sendTo(), recvfrom()으로 통신

 

TCP(Transmission Control Protocol)

- 송신 측과 수신 측이 동일함을 보장해주는 프로토콜

- TCP는 메시지가 아니라 스트림 형태로 전송되기 때문에 a, bb, ccc, dddd를 송신하면 ab, bccc, dddd로 수신할 수도 있고, abbcccdddd로 수신할 수도 있다, 즉 데이터를 뭉치거나 쪼갤 수 있음

- UDP는 패킷이 드롭되면 데이터그램도 드롭되지만, TCP는 흐름 제어 기능(data flow control) 때문에 드롭이 되더라도 상대방에게 명확하게 데이터를 전송

- IP packet에 넣을 수 있도록 세그먼트(segment)라는 단위로 데이터를 쪼갬

 

TCPUDP의 데이터 유실

- UDP는 데이터가 유실되면 사라지지만 TCP는 전송을 보장하기 때문에 데이터가 전송 도중 유실될 경우 지연이 발생함

- UDP 레이턴시 = 네트워크 기기의 레이턴시

- TCP 레이턴시 = 네트워크 기기의 레이턴시 + 패킷의 유실률 + 재전송 대기 시간

 

네트워크 주소 변환(NAT, Network Address Translation)

- 다른 단말기로 전송되던 패킷의 송신자 주소나 수신자 주소를 다른 것으로 변환되는 과정

- 라우터에서 주로 변환해줌

 

포트 매핑 엔트리

- 송신 자의 엔드 포인트로부터 수신자의 엔드 포인트를 이어 주는 매핑 정보를 생성해 가짐

- 포트 매핑 엔트리를 생성해주는 과정을 홀펀칭(holepunching)이라 함

'게임 회사 > 서버 프로그래밍' 카테고리의 다른 글

[3] 소켓 프로그래밍  (0) 2022.06.01
[1]스레드와 멀티 스레드  (0) 2022.05.31