CPU , Central Processing Unit   란?

 

 

컴퓨터에 관심이 있다면,

전공자가 아니어도 CPU 가 컴퓨터 부품 중 하나라는것은 알 것이다. 

CS 에서 말하는 CPU 가 바로 그 CPU가 맞다 !

 

CPU 는 말 그대로, 컴퓨터의 시스템의 중앙 처리 장치를 말한다.

컴퓨터의 모든 연산 ( 산술 연산 / 논리 연산 ) 이 일어나는 곳이다.

 

이미지 출처: https://mk28.tistory.com/15

 

CPU 는 크게 제어 장치, 연산 장치, 레지스터 와 각 구성 요소를 연결하는

내부 버스 로 구성되어 있다.

 

 

 

 

 

 

 

가산기 (Adder) = 2진수 덧셈을 수행

보수기 (Complementor) = 뺄셈을 덧셈으로 변환하는 역할

누산기 (ACCumulator) = 가산기의 연산 결과를 누적하는 역할

데이터 레지스터 (Data Register) = 연산에 필요한 데이터를 임시로 저장

 

 

 

 

 

4. 전송 계층

 

 

 

앞서 배웠던 물리 계층, 데이터 링크 계층, 네트워크 계층으로만 구성이 되어도

데이터의 전송이 가능합니다. 그것도 최종 목적지 까지요 !

 

그러면 이름부터 '전송' 계층인 4계층은 무슨 역할을 하는걸까요?

 

 

전송 계층은,  데이터의 전송간에 패킷의 손실이나 오류 없이 올바른 순서로 도착하게 해주는 역할,

필요한 경우 데이터 패킷을 원활하게 복구하는 역할을 합니다.

 

쉽게 말해 ' 흐름 제어 ' 와 ' 오류 제어' 를 위한 계층이다! 라고 할 수 있습니다.

 

 

전송 계층하면, 빠질 수 없는 내용이 있는데,

그것은 전송계층의 프로토콜인 TCP 와 UDP 입니다.

 


TCP 란?

Transmission Control Protocol 

안전 제일 ! 

TCP는 데이터 전송간에 손실이 거의 발생하지 않는 프로토콜 입니다.

TCP의 통신 과정은 다음과 같습니다.

 

1. 데이터 스트림에서 받은 데이터를 일정 단위로 분할합니다 .

2. 분할된 데이터 단위에 TCP 헤더를 붙여서 TCP 세그먼트를 생성합니다.

3. TCP 세그먼트를 IP 데이터그램으로 변환합니다. 

4. IP 데이터그램을 수신 어플리케이션에 보냅니다.

 

여기서 세그먼트 ! 는 

TCP 가 데이터를 전송할때 사용하는 데이터의 크기 를 말합니다.

 

TCP의 데이터 변환 (세그먼트)

해당 이미지는 데이터를 일정 크기로 쪼개서 header 를 붙여서 세그먼트로 만드는것을 표현합니다.

 

 

이전에 배웠던 

비트  bit  => 1 계층

프레임 frame  => 2계층 

패킷 packet => 3계층

과 같이, 4계층 중 TCP 에서의 데이터 단위는 세그먼트 라고 할 수 있습니다.

아래 나올 UDP 의 경우는 datagram 단위를 사용하기 때문에,

같은 4계층이지만, TCP와 UDP는 서로 다른 데이터 타입을 사용합니다.

 

 

첫 번째 특징은 , A/S 가능!  데이터의 전송이 실패한 경우, 재 전송을 시도합니다.

 

두 번째 특징은 , 고객 맞춤형 서비스로 수신자의 용량에 따라 데이터 전송 속도를 최적화 합니다.

 

세 번째 특징은, 불편한데는 없으시고요?   데이터를 전송할 때, 오류를 검사해 데이터가 

목적지에 온전하게 도달하도록 보장합니다. 

 

네 번째 특징은, 살짝 느립니다. 바로 아래 나올 UDP 와 비교하면 말이죠.

 

위와 같은 특징들은 TCP 가 연결형 방식인것을 나타냅니다.

수신자의 상태를 계속 확인하고 개선하려고 합니다.

 

UDP란?

User Datagram Protocol

속도 제일 !

UDP 는 사용자 데이터 프로토콜의 약자로, 안전성보다는 빠른 속도를 추구합니다.

그 과정에서 데이터가 손실될 가능성 또한 있습니다. 

왜냐하면 비 연결형 방식이기 때문에 수신자의 상태를 고려하지 않고

일단 자기 방식대로 다 보내고 보는겁니다.

UDP 에서는 데이터 단위를 세그먼트로 쪼개지 않습니다.

그저 header 만 붙여서 보냅니다. 이렇게 data에 header 만 붙인 형태의 데이터 단위를

Datagram 이라고 합니다.

 

위와 같은 이유로 UDP 는 불특정 다수에게 데이터를 전송하는데 유리합니다.

TCP 같았으면, 일일이 데이터를 잘 받고있는지 계속 통화상태를 유지하려 하지만,

UDP는 비 연결형 방식이기 때문에, 대상이 불특정 다수여도 그냥 보내기만 하기 때문에

훨씬 효율적 이라는겁니다.

 

이와같은 UPD 의 특징을 브로드 캐스트 라고 합니다 !

UDP 를 사용하여 LAN 에 있는 네트워크 장비에 데이터를 일괄적으로 보낼 수 있습니다.

 

물론 단점도 존재합니다.

 

전송 과정에서 데이터가 손상되어도 A/S 를 해주지 않습니다.

데이터를 받는 입장에서는 받은 데이터가 온전한 상태인지도 당장은 알 수 없습니다.

 

데이터의 전송 순서를 특정하지 않기 때문에, 도착하는 순서 또한 알 수 없습니다.

 

이러한 UDP 의 특징을 가장 잘 나타내는 활용처는

실시간 영상 전송으로,

데이터가 약간 손실된다 하더라도 크게 문제되지않고, 다수에게 빠르게 데이터를 전송할 수 있기 때문에

UDP 방식이 많이 사용됩니다.

 

 

 

 

물리 계층은 OSI의 7 계층 중 가장 아래에 위치한 1계층으로, 하드웨어로 표현된다.

 

네트워크 장치의 전기적, 기계적 속성 및 전송수단을 정의한다고 할 수 있다.

 

 

전기 신호 하면 가장 먼저 떠오르는 0 과 1 을 이용한 통신이 여기에 해당한다.

 

물리 계층 장비

허브 Hub

전기 신호를 증폭시켜서 연결된 장치간의 통신을 가능하게 해준다.

흔히 말하는 랜선이 허브에 해당된다.

허브는 중계기 역할을 하며, 하나의 장치가 허브로 연결된 모든 장치에게 데이터를 전달하고

이것을 브로드 캐스팅 Broad - casting 이라고 한다.

 

이 방식은 여러 장치가 허브로 연결된 상태에서 1:1 통신이라기 보다는

1: 모든 장치로 통신 데이터를 전송하여 송신 대상만 데이터를 처리하고 

나머지는 데이터가 무시된다고 설명되어있다.

 

리피터 Repeater 

신호의 세기를 증포해서 먼거리의 통신을 가능하게 해주는 장치

 

 

 

물리 계층과 물리 계층 간의 통신은 전기, 빛 , 전파를 통해 통신을 하며 

이러한 것들을 Signaling 이라고 한다.

 

전기

UTP, 전화선, 동축 케이블이 해당

 

광섬유 케이블 (빛의 패턴)

 

전파

wi-fi 와 같은 무선인터넷 (마이크로파 패턴을 신호로 사용)

 

전송 단위

 

Signaling의 방식은 위처럼 다양하지만, 어찌됐던 물리 계층이기 때문에

이 모두는 전기 신호인 0, 1 로 데이터를 인코딩해서 전송한다.

 

 

 

OSI 7계층 이란?

OSI(Open System Interconnection) 7계층은 국제 표준화 기구인

ISO(International Standardization Organization)에서 개발한 

컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어

설명한 개방형 시스템 상호 연결 모델이다.

 

 

OSI 7계층 레이어의 특징

1. 물리 계층 (physical Layer)

물리계층은 1계층으로써, 두 시스템간의 데이터 전송을 위해 링크를 활성화 하고 관리하기 위한 기계적, 전기적, 기능적, 절차적 특성 등을 정의하며 허브나 라우터, 네트워크카드, 케이블 등의 전송매체를 통해 비트(bit)들을 전송하는 계층입니다. 물리계층의 데이터 단위는 '비트(bit)' 입니다. 송신측에서는 데이터 링크 계층에서 과 1로 구성된 비트열의 데이터를 받아 전기적 신호로변환 후 전송 매체를 통하여 수신측에 보내게 됩니다. 받는 쪽인 수신측은 송신측으로부터 받은 전기 신호를 0과 1로 구성된 비트열로 복원하여 수신측의데이터링크 계층에 전송하게 됩니다. OSI 모델에서 최하위 계층에 속하며 상위계층에서 전송된 데이터를 물리매체를 통하여 다른 시스템에 전기적 신호를 전송한다, 랜카드, 케이블, 허브, 라우터와 같은 물리적인 것과데이터 전송을 위해 사용하는 전압도 물리계층에 속하게 됩니다.

2. 데이터링크 계층(Data Link Layer) 

2계층인 데이터링크 계층은 물리적 링크를 통해 데이터를 신뢰성 있게전송하는 계층을 말합니다. 하위계층에 속하며 물리계층 바로 위에 위치합니다. 비트들을 프레임(Frame)이라는 논리적 단위로 구성하여 전송합니다. 시스템 간에 오류 없는 데이터 전송을위하여 네트워크 계층에서 받은 데이터 단위(패킷)를 프레임으로 구성하여 물리계층으로 전송합니다. 데이터링크 계층 데이터 단위를 프레임(Frame)' 이라 부릅니다. 즉 프레임은 데이터+ 헤더 + 트레일러로 구성이 되어 있습니다. 송신자의 프레임을 수신자 측에서 받는다면 헤더와 트레일러를 제거한 후에 네트워크 계층으로 전송합니다.

3. 네트워크 계층(Network Layer) 

3계층인 네트워크 계층에서는 패킷을 송신측으로부터 수신측으로 전송하는 구간이며 상위계층에 연결하는데 필요한 데이터 전송과 경로를 선택하는 기능을 제공합니다. 데이터가 전송될 수신측의 주소를 찾고 수신된 데이터의 주소를 확인하여 자신의 것이면 상위 계층인 전송계층으로 전송합니다. 라우팅 프로토콜을 사용하여 최적의 경로를 선택하는 계층구간이기도 합니다. 데이터를 패킷(Packet)' 단위로 분할하여 전송한 후 재결합하는 방식을 쓰고, 데이터 링크 계층이 인접하는 두 노드간에 전송을 담당한다고 하면 네트워크 계층은 각 패킷이 송신지에서 수신지까지 정확하게 전송되도록 경로를 책임지는 구간이다. 네트워크 계층 데이터 단위는 패킷(Packet)' 이라 합니다.

4. 전송계층(Transport Layer)

4계층인 전송계층은 시스템 종단간에 투명한 데이터 전송을 양방향으로 행하는 계층이며 두 시스템간의 신뢰성있는 데이터 전송을 보장합니다. 프로토콜은 TCP, UDP, SPX 등과 관련있습니다. 오류복구와 흐름제어 기능을 담당하는 계층이기도 합니다. 데이터 헤더에는 포트주소 또는 소켓(socket) 주소를 포함하고 있고 순서(squence) 또는 세그먼트 번호가 포함되어 있습니다. 이는 세션계층으로부터 온 데이터를 수신할 때 데이터를 전송할 수 있는 세그먼트로 나누고 수신측에서 수신자가 재조립할 수 있도록 순서를 헤더에 표시하게 됩니다. 네트워크 계층은 전송해야 하는 시스템에게 각 패킷을 전송하는 일을 하고 전송계층은 해당 시스템의 응용 프로그램에게 모든 데이터를 전송하는 역할을 합니다. 전송계층에 있어서 데이터 단위는 '세그먼트(segment)' 라 합니다.

5. 세션계층(Session Layer)

세션계층은 5계층으로써, 응용 프로그램 계층간의 통신에 대한 제어 구조를 제공하기 위해 응용 프로그램 사이의 접속을 설정, 유지, 종료시켜주는 역할을 하는 계층입니다. 통신 장치들 간의 설정을 유지하며 동기화하고, 데이터 단위를 전송계층으로 전송할 순서를 결정하고 데이터에 대한 점검 및 복구를 위해 동기를 위한 위치를 제공합니다. 또한 세션을 종료할 필요가 있을 때 적절한 시간을 수신자에게 알려 줍니다. 세션계층의 데이터 단위는 'n메시지(message)' 입니다.

6. 표현계층(Presentation Layer) 

6계층인 표현계층은 데이터 표현차이를 해결하기 위하여 서로 다형식을 변환해 주거나 공통형식을 제공해 주는 계층을 말합니다. 송신측과 수신측 사이에 표준화된 데이터 형식에 대해 규정합니다. 예를 들면 이미지가 bmp인지, jpg 인지, 압축이 14었는지 등의 표현과 관련된 구분을 지을 수 있습니다. 이는 두 시스템간에 서로 다르게 사용하는 문자 및 그래픽 문자 등을 위해 번역을 수행하며 전송데이터를 서로 이해할 수 있도록 하는 것이 목적입니다. 보안을 위하여 송신측에서 암화하고 수신측에서 복호화하며 전송률을 높이기 위하여 압축을 합니다. 표현계층에서 데이터 단위는 메시지(message)' 입니다.

7. 응용계층(Application Layer) 

OSI 모델에서 마지막모델인 응용계층은 가장 상위계층에 속하며 실제 통신의 최종 목표에 해당하는 가장 중요한 계층입니다. 사용자로부터 정보를 입력받아 하위계층으로 전달하고 하위계층에서 전송한 데이터를 사용자에게 전달하는 기능을 합니다. 응용프로세스(사용자, 응용프로그램)가 네트워크에 접근하는 수단을 제공하여 서로 간에 데이터를 교환할 수 있는 창구 역할을 합니다. 파일 전송, DB, 원격접속, 메일전송 등 응용서비스를 네트워크에 접속시키는 역할을 담당하는 계층입니다. FTP, SMTP, POP3, HTTP와 같은 프로토콜이 관련있고 응용계층의 데이터 단위는 메시지(message)' 입니다.

 

 

1. 컴퓨터 세계에서 서버와 클라이언트는 무엇인가?

2. 웹 어플리케이션 서버와 게임 서버의 공통점과 차이점은 무엇인가?

 

 

 

 

1. 서버와 클라이언트

서버란?

특정한 서비스를 제공하는 '서비스 제공자'의 역할로, 클라이언트로부터 요청받은 내용을 처리하고,

결과를 다시 클라이언트에게 전달해주는 역할을 합니다.

 

흔히 생각하는 서버의 모습

서버는, 수많은 서버용 컴퓨터로 이루어진 집합체가 될 수도 있고,

그저 하나의 컴퓨터로 이루어 질 수도 있습니다.

심지어, 가정용 컴퓨터 또한 서버가 될 수도 있습니다.

 

 

 

클라이언트?

클라이언트는 말 그대로 '사용자' 에 입장에 있는 역할로, 서버에 데이터를 요청하여 데이터를 받아오거나,

서버에 데이터를 저장하거나 하는 데이터의 사용자 입니다.

 

이 둘의 관계는 대표적으로 음식점으로 설명하는 경우가 많은데,

저는 도서관으로 설명되는게 좀 더 좋을것이라 생각됩니다.

 

도서관에는 수많은 책이 있고, 그걸 관리하는 직원(사서) 그리고 책을 빌리러 온 사람이 있을겁니다.

 

일반적으로 봤을 때,

책을 빌리러 온 사람 = 클라이언트

도서관의 수많은 책 = 서버

그리고 직원 = 네트워크 라고 할 수 있습니다.

 

책을 빌리러 온 사람은, 직원을 통해 자신이 필요한 책(정보)를 요청하게 되고,

네트워크는 그 요청받은 책을 도서관 내에서 찾아올 것입니다.

여기서 네트워크는, 클라이언트와 서버간에 필요한 정보를 전달해주는 수단이 됩니다.

 

 

 

2. 웹 어플리케이션 서버와 게임 서버

 

웹 어플리케이션 서버란, WAS (Web Application Server) 라고도 하며,

서버내에 있는 다양한 알고리즘, 비즈니스 로직, DB 조회 등 클라이언트 요청에 따라

동적인 컨텐츠를 제공하는 서버를 말합니다.

 

웹 서버와 웹 어플리케이션 서버?

WS(Web Server) 는, HTTP 요청을 받아 Static contents 

즉, 정적인 컨텐츠를 WAS를 거치지 않고 즉시 제공하는 서버입니다. 동적인 Contents 는 WAS 에게 넘기고,

정적 콘텐츠를 가능한 빠르게 제공하는 역할을 합니다.

WS 와 WAS 빠른 정보 처리를 위해, 비 동기적으로 정보를 처리하기 위해 분리되었다고 할 수 있습니다.

 

 

게임 서버도 위에서 설명한 것처럼, 클라이언트(들) 과 정보를 주고받는 역할을 하는 서버입니다.

웹 서버도, 게임 서버도 클라이언트가 요청한 정보를 서버가 처리하며 원하는 데이터를 돌려주는

역할을 하는 것입니다.

 

그렇다면 웹 서버와 게임 서버는 어떤점이 다를까?

 

웹서버와 게임서버의 가장 큰 차이점은,

실시간 ! 한마디로 표현 할 수 있을것 같습니다.

 

일반적으로 웹 서버는, 클라이언트가 정보를 요청한 것을 건네주고 다면, 다음 요청이 있을 때 까지

따로 클라이언트와 소통하는 것이 없습니다... 대부분은 말이죠.

 

실제로, 웹 서핑을 하는 도중에 인터넷이 끊겨버리더라도, 현재 보여지는 페이지 (이미 받아온 데이터) 는 

다른 요청을 하기 전 까지는 별 문제없이 작동하는것 처럼 보입니다.

 

하지만, 게임서버는 웹 서버와 다르게 많은 데이터들이 실시간으로 반영되어야 하기 때문에,

클라이언트가 요청을 지시하지 않아도 수많은 데이터를 서버로부터 받아오고, 또 보내줘야 합니다.

 

이 부분 또한 게임 서버와 웹 서버의 대표적인 차이점이라고 생각합니다.

클라이언트가 직접 요청하지 않아도 클라이언트와 서버간에는 수많은 데이터가 계속적으로 오가야 합니다.

 

정리하자면,

 

공통점

웹 서버와 게임 서버 모두 클라이언트의 요청을 서버가 받아 데이터를 저장하거나, 

보내줘야할 데이터를 클라이언트에게 보내주는 역할!

 

차이점

1. 웹 서버는 데이터의 생산성과 확장성에 중점에 둔다.

2. 게임 서버는 데이터의 변화량과 응답속도를 중점에 둔다.

3. 게임 서버는 클라이언트가 전송한 데이터 (패킷)에 서버가 반드시 응답을 보낼 필요는 없다.

4. 좀 더 쉽게 말하자면, 웹 서버는 말그대로 웹 페이지를 위한 서버로 발전되었고,

    게임 서버는 게임을 위한 서버로 발전한 것이라고 할 수 있다 !

 

 

특이사항

자료를 조사하며 알게된 내용 중, 게임서버에 웹 서버를 사용할 수 있다는것을 알게됐습니다.

즉, 게임 내에서 실시간, 동적인 움직임이 필요하지 않는 게임의 일부분, 혹은 전체가

웹서버로 구성될 수 있다는 사실입니다. 예를 들면 하루에 한번 갱신되는 유저 랭킹 이라던가,

뭐 길드 순위 같은 데이터에는 웹 서버를 사용한다던가,

또는 실시간으로 진행되지 않은 게임 (특히 모바일)이 웹 서버를 사용한다고 합니다.

 

웹 서버가 가지는 강점과 게임(MMORPG의) 서버의 강점을 잘 알고, 

목적에 맞게 필요한 서버를 사용하는것이 중요한 것 같습니다.

 

 

 

+ Recent posts