일종의 설계 기법이며, 설계 방법이다.

 

목적

SW 재사용성, 호환성, 유지 보수성을 보장

 

특징

디자인 패턴은 아이디어고, 특정한 구현이 아니다.

프로젝트에 항상 적용해야 하는 것은 아니지만, 추후 재사용, 호환, 유지 보수시 발생하는

문제 해결을 예방하기 위해 패턴을 만들어 둔 것이라고 생각하면 된다.

 

분류

1. 생성 패턴 ( Creational ) : 객체의 생성 방식 결정

 Class-creational patterns, Object-creational patterns

 

2. 구조 패턴 ( Structural ) : 객체간의 관계를 조직

 

3. 행위 패턴 ( Behavioral ) : 객체의 행위를 조직, 관리, 연합

 

'CS' 카테고리의 다른 글

[CS] IP 주소의 체계, 사설망, 공인망  (0) 2024.10.07
[CS] 랜카드, MAC 주소  (0) 2024.10.02
[CS] 웹서버와 게임서버  (0) 2024.08.25
[CS] 문자 집합과 인코딩  (0) 2024.08.19

IP 주소

네트워크에서 통신을 위한 일련의 규칙이자 약속( 통신규약 )들이 존재하며, 이를 프로토콜이라고 부른다.

그 중 인터넷 통신을 위한 프로토콜도 존재하는데 대표적인 것이 바로 IP다.

IP는 Internet Protocol의 약자로 인터넷 통신을 위한 일련의 통신 규칙들을 지칭한다.

IP기반 네트워크 환경에서 단말장치들이 서로를 인식하고 통신을 하기 위해 지정되는 주소체계를 IP 주소라고 부른다.

 

기본적으로 네트워크에 연결되는 단말장치에 탑재된 하나의 랜카드는 하나의 IP주소를 가진다.

유일한 값을 가지는 MAC 주소와는 달리 IP 주소는 보통 랜카드에 연결되는 네트워크에 따라 주소 값이 동적으로 변경된다. 

 

IPv4와 IPv6 주소 체계

IPv4 주소의 길이는 총 32bit로 총 2^32 = 4,294,967,296 개의 IP 주소를 표현할 수 있다.

네트워크 규모가 커질수록 단말장치의 수는 점점 늘어나고, 이에 따라 IP 주소의 고갈을 염려해야한다.

그래서 등장한 것이 바로 IPv6다.

 

현재 사용하는 IP 주소는 32 bit 길이의 IPv4인 반면에 IPv6는 12 bit 길이로 IP 주소의 고갈 문제를 해결할 수 있다.

하지만 당장 IPv6로 적용하기는 대부분의 통신 장비들이 IPv4 주소 기반으로 제작되어 운용중이라 IPv6기반의 장비로 교체하거나 적용하기는 어렵다.

 

앞서 언급한 것처럼 IPv6로 주소체계를 바꾸기에는 어려우므로 IP 주소를 보다 효율적으로 사용할 필요가 있다.

그 방법 중 하나가 네트워크를 사설망과 공인망으로 구분하고, 할당되는 IP 주소를 달리해 사용하는 것이다.

 

사설망과 공인망

공인망( = 공중망, 외부망 )은 사용자가 세계 어디에 있더라도 접속할 수 있는 네트워크 즉, 인터넷이다. 

공인망에서 쓰이는 IP 주소를 공인 IP라고 부르고, 인터넷상에서 유일한 IP 주소 값을 가진다.

 

사설망( = 내무방 )은 인터넷과 달리 특정 조직이나 기관 내에 독립적으로 사용하는 네트워크를 말한다. 인트라넷이 여기에 해당한다. 사설망에서 적용되는 IP 주소를 사설 IP라고 부른다. 사설 IP는 인터넷과 같은 외부망에서는 사용할 수 없고, 내부 네트워크에서만 사용할 수 있다. 외부 접속 목적이 아니라 사설망 내부 통신에서만 활용되기 때문에 다른 사설망에서 중복해서 사용해도 된다.

 

사설망과 공인망 사이의 통신 ( NAT )

사설망이라고 해서 인터넷을 이용할 수 없는 것은 아니다. 사설망과 공인망 사이에 망을 중계하는 역할을 하는 네트워크 장비를 하나 두고, 이 네트워크 장비에서 사설망의 IP 주소를 공인 IP 주소로 변경해 데이터를 중계하면 사설망에서도 인터넷을 이용할 수 있다.

 

네트워크 장비는 사설 IP와 공인 IP를 모두 가지고 있으며, 자신을 지나는 데이터의 사설 IP 주소를 자신의 공인 IP 주소로 바꾸어 중계한다. 이러한 기능을 네트워크 주소 변환( NAT, Network Address Translation )이라고 한다.

이 같은 NAT 기능을 수행하는 네트워크 장비를 보통은 '게이트웨이'라고 부른다.

 

'CS' 카테고리의 다른 글

[CS] 디자인 패턴  (0) 2024.11.11
[CS] 랜카드, MAC 주소  (0) 2024.10.02
[CS] 웹서버와 게임서버  (0) 2024.08.25
[CS] 문자 집합과 인코딩  (0) 2024.08.19

랜카드( NIC, Network Interface Card, Network Interface Controller )

단말장치들이 인터넷과 같은 네트워크에 연결되기 위해서 필요한 장치.

여기서에서 랜( LAN, Local Area Network )이란 소규모의 네트워크를 의미하고,

랜카드는 이런 소규모의 네트워크를 연결해주는 장치라고 생각하면 된다.

 

보통은 메인보드에 내장되어 있기 때문에 별도의 슬롯에 NIC을 추가해 확장할 필요는 없다.

다만 네트워크 속도를 개선하기 위해 별도의 NIC을 탑재하는 경우가 있다.

 

네트워크의 전송 속도를 올린다는 의미는 단순히 데이터를 빨리 전송한다기보다

네트워크의 대역폭을 늘려 한번에 전송할 수 있는 데이터의 양을 늘리는 것이 정확한 표현이다.

 

MAC( Media Access Control )주소

네트워크에서 출발지와 목적지를 나타내는 주소는 총 2가지다. ( MAC 주소와 IP 주소 )

네트워크에서는 IP주소를 참조해 데이터를 목적지 단말장치로 전달한다.

 

전달할 때, IP 주소가 데이터를 보내고자 하는 컴퓨터의 주소가 맞는지를 확인해야 하는데,

이때 활용하는 것이 바로 MAC 주소다.

 

IP 주소는 단말의 위치에 따라 연결되는 네트워크가 달라질 수 있기 때문에 고정적이지 않지만,

MAC 주소는 랜카드의 고유 주소이기 때문에 메인보드 혹은 메인보드에 장착한 NIC을 교체하지 않는 이상

바뀌지 않는다. 따라서 MAC 주소가 네트워크의 출발지 또는 목적지인 단말장치를 구분하기 위한 주소가 된다.

 

MAC 주소 체계

숫자와 알파벳을 포함한 12개의 문자( 16진수 )로 구성되고 - 또는 : 으로 구분한다.

 

2C-60-0C-75-FF-09

00:0C:29:F0:F5:AF

 

거주지 주소를 시, 구, 동 단위로 세분화해 표기하듯,

16진수로 표현되는 MAC 주소도 체계적인 규칙을 가지고 있다.

 

위에 예시로 든 MAC주소를 분석해보자면 다음과 같다.

2C-60-0C 앞 3개는 제조사 식별코드( OUI )를 나타내고

75-FF-09 뒤 3개는 장비 코드( =시리얼번호 )를 나타낸다.

 

제조사 식별코드( OUI, Organizationally Unique Identifier )는 랜카드 제조사가 가지는 고유 번호를 말하고,

장비코드( =시리얼번호 )는 제조사가 각자의 방법으로 할당하는 번호다.

 

MAC 주소는 이론적으로 2^48개의 주소를 지정할 수 있다.

이 중에서 이미 고정되어 자유롭게 할당할 수 없는 MAC 주소가 하나 있는데, 바로 브로드캐스트 주소다.

 

네트워크에서 데이터를 주고 받을 때 반드시 데이터를 보내는 도착지의 MAC 주소가 필요하다.

하지만 MAC 주소를 굳이 알 필요가 없는 통신 방식이 있는데, 바로 브로드캐스드다.

브로드캐스트는 동일한 네트워크 내에 있는 모든 단말장치에 똑같은 데이터를 보내는 통신 방식이기 때문에

목적지를 지정할 필요가 없다. 그럼에도 데이터를 보내기 위해서는 도착지 MAC 주소가 필요는 하니까 

MAC 주소 체계로 표현할 수 있는 맨 마지막 값인 FF:FF:FF:FF:FF:FF을 브로드캐스트 주소로 지정한다.

'CS' 카테고리의 다른 글

[CS] 디자인 패턴  (0) 2024.11.11
[CS] IP 주소의 체계, 사설망, 공인망  (0) 2024.10.07
[CS] 웹서버와 게임서버  (0) 2024.08.25
[CS] 문자 집합과 인코딩  (0) 2024.08.19

웹서버

http 또는 https를 통해 웹 브라우저에서 요청하는 html 문서나 오브젝트( 이미지, 파일 등 ) 을 

전송해주는 서비스 프로그램을 말한다.

 

웹서버

 

웹 서버의 주된 기능은 웹 페이지를 클라이언트로 전달하는 것이다.

주로 그림, CSS, 자바스크립트를 포함한 HTML 문서가 클라이언트로 전달된다.

 

웹서버에서 보내준 데이터 즉, 그림이나 텍스트 같은 것을 보기만 하면 되기 때문에

연결을 계속 유지하고 있을 필요가 없다. 

따라서 요청한 데이터를 보내주고 나면 연결을 끊는다. 

 

연결을 유지 할 필요가 없다는 것은 해당 유저를 웹 서버 메모리에 올려두지 않는다는 말과 같다.

그렇기 때문에 사용자의 상태값이 존재하지 않는다. ( = 스테이리스 서버 )

 

그렇다면 유저가 웹에 다시 요청할때 웹서버는 요청한 유저가 그 유저인지 어떻게 판단할까?

이때 등장하는 개념이 쿠키다. 

 

쿠키 : 웹에 접속할 때마다 클라이언트 브라우저에 텍스로 정보를 남겨두는 파일

 

클라이언트가 웹에 요청할때마다 따로 붙이지 않아도 http 헤더 아래에 쿠키가 붙어서 웹 서버로 같이 들어간다.

쿠키에 요청한 유저를 확인할 수 있는 정보를 담아 웹서버로 전달하고,

웹서버에서 해당 내용을 해석해 유저를 확인한다.

 


 

게임서버

인터넷 상에서 여러 플레이어가 같이 게임을 할 수 있게 하기 위한 프로그램을 말한다.

보통 TCP/IP 프로토콜을 이용해 서버를 구축한다.

 

웹서버와는 다르게 유저가 접속을 끊지 않는 이상 연결을 계속 유지해야한다.

연결을 계속 유지해야하는 것은 해당 유저를 게임 서버 메모리에 올려둔다는 말과 같다.

그렇기 때문에 사용자의 상태값이 존재한다. ( = 스테이풀 서버 )

 

연결을 유지하기 때문에 다른 유저들의 행동, 변화를 바로바로 동기화가 가능하다.

또한 빠른 처리 속도로 실시간 온라인 게임이 가능하며,

모든 게임의 로직을 서버가 전담 하므로 핵이 불가능하다.

'CS' 카테고리의 다른 글

[CS] 디자인 패턴  (0) 2024.11.11
[CS] IP 주소의 체계, 사설망, 공인망  (0) 2024.10.07
[CS] 랜카드, MAC 주소  (0) 2024.10.02
[CS] 문자 집합과 인코딩  (0) 2024.08.19

문자 집합

컴퓨터가 인식하고 표현할 수 있는 문자의 모음을 말한다.

컴퓨터는 문자집합에 있는 문자를 이해하고,

문자집합에 없는 문자는 이해하지 못한다.

당연히 문자집합에 있는 문자를 바로 이해하지는 못하고 기계어로 변환해주어야 한다.

 

문자 인코딩

문자 집합에 속해 있는 문자를 0과 1로 변환하는 과정을 말한다.

 

문자 디코딩

0과 1로 이루어진 문자 코드를 사람이 이해할 수 있는 문자로 변환하는 과정을 말한다.

 

아스키 코드

초창기 문자 집합 중 하나로 영어 알파벳, 아라비아 숫자, 일부 특수 문자를 포함한다.

각각 7비트로 표현해 총 128개의 문자를 표현할 수 있다.

* 실제로는 8비트를 사용한다. 8비트 중 1비트는 패리티 비트라고 해서 오류 검출을 위해 사용하는 비트로

실질적으로 사용되는 비트는 7비트다.

아스키 코드

문자 인코딩에서 글자에 부여된 고유한 값을 코드 포인트라 한다.

예 ) 아스키 문자 A의 코드 포인트는 65

 

유니코드

모든 나라 언어의 문자 집합이다.

유니코드는 글자에 부여된 값 자체를 인코딩 된 값으로 삼지 않는다.

글자에 부여된 값 자체를 다양한 방법으로 인코딩 하여 사용한다.

UTF-8, UTF-16, UTF-32 등 ( 유니코드 문자에 부여된 값을 인코딩 하는 방식 )

 

UTF - 8

 

위 표를 살펴보자.

유니코드에 부여된 값의 범위가 0 부터 007F 까지는 1바이트로 표현한다.

유니코드에 부여된 값의 범위가 0080 부터 07FF 까지는 2바이트로 표현한다.

유니코드에 부여된 값의 범위가 0800 부터 FFFF 까지는 3바이트로 표현한다.

유니코드에 부여된 값의 범위가 10000 부터 10FFFF 까지는 4바이트로 표현한다.

 

예를 들어 '한글' 이라는 글자는 몇 바이트로 표현되는지 알아보자.

유니코드에 따르면 '한'은 'D55C' '글'은 'AE00' 이다.

위 표를 보면 '한' 과 '글'은 둘다 0800 ~ FFFF 사이에 속하는 것을 확인할 수 있고

따라서 '한'과 '글'을 UTF-8로 인코딩 하면 각각 3바이트로 표현될 것이라고 예상할 수 있다.

한 ( D55C) : 1101 0101 0101 1100 -> UTF8 인코딩 11101101 10010101 10011100

글 ( AE00 ) : 1010 1110 0000 0000 -> UTF8 인코딩 11101010 10111000 10000000

'CS' 카테고리의 다른 글

[CS] 디자인 패턴  (0) 2024.11.11
[CS] IP 주소의 체계, 사설망, 공인망  (0) 2024.10.07
[CS] 랜카드, MAC 주소  (0) 2024.10.02
[CS] 웹서버와 게임서버  (0) 2024.08.25

+ Recent posts