11월, 2019의 게시물 표시

네트워크의 기본 #2 - TCP/IP 4계층

이미지
1. TCP와 IP TCP/IP는 Internet에서 사용되는 protocol이다. 1960년대 미국방성의 연구에서 시작되어 1980년대에 protocol model이 공개되었다. hardware, OS, 매체에 관계없이 동작할 수 있다. 패킷  통신 방식의 인터넷 프로토콜인 IP(Internet Protocol)와 전송 조절 프로토콜인 TCP(Transmission Control Protocol)로 이루어져있다. IP는 패킷 전달 여부를 보증하지 않고, 패킷을 보낸 순서와 받는 순서가 다를 수 있다. TCP는 IP 위에서 동작하는 프로토콜로, 데이터의 전달을 보증하고 보낸 순서대로 받게 해준다. HTTP, FTP, SMTP 등 TCP를 기반으로 한 많은 수의 application protocol들이 IP 위에서 동작하기 때문에 TCP/IP로 부르기도 한다. TCP/IP protocol은 OSI 모형보다 먼저 개발되었다. TCP/IP 프로토콜은 OSI 모형과 정확하게 일치하지는 않지만, OSI 모형을 4계층 혹은 5계층으로 분류하여 적용할 수 있다. 2. 각 Layer별 기능 Layer 1 : 네트워크 연결 계층 (Network Access Layer) - Ethernet, Wi-Fi, Token ring TCP/IP 패킷을 네트워크 매체로 전달하는 것과 네트워크 매체에서 TCP/IP 패킷을 받아들이는 과정을 담당한다. 기본적으로 에러검출 / 패킷의 프레임화를 담당한다. Layer 2 : 인터넷 계층 (Internet Layer) - IP (IPv4, IPv6) 논리적인 주소 IP를 이용한 노드간 전송과 라우팅 기능을 처리하게 된다. 네트워크상 최종 목적지까지 정확하게 연결되도록 연결성을 제공한다. Layer 3 : 전송 계층 (Transport Layer) - TCP, UDP, DCCP, SCTP, IL, RUDP 자료의 송수신을 담당한다. 애플리케이션 계층의 세션과 데이터그램 통신서비스 제공한다. Layer 4 : 응용

네트워크의 기본 #1 - OSI 7계층

이미지
1. OSI 모형 (Open Systems Interconnection Reference Model) 국제표준화기구(ISO)에서 개발한 모델로 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나누어 설명한 것이다. 이 모형을 이용하면 네트워크상에서 발생하는 문제의 원인이 어디에서 발생하는지 보다 쉽게 유추가 가능하다. 2. 각 Layer별 기능  Layer 1 : 물리 계층 (Physical Layer) 네트워크의 하드웨어 전송을 담당하는 계층으로 시스템의 전기적, 물리적 표현을 나타낸다. 케이블 종류, (802.11 무선 시스템에서와 같은) 무선 주파수 링크는 물론 핀 배치, 전압, 물리 요건 등이 포함된다. 네트워킹 문제가 발생하면 많은 네트워크 전문가가 물리 계층으로 바로 가서 모든 케이블이 제대로 연결돼 있는지, 라우터나 스위치 또는 컴퓨터에서 전원 플러그가 빠지지 않았는지 확인한다. Layer 2 : 데이터 링크 계층 (Data Link Layer) - 이더넷 노드 간 데이터 전송을 제공하며, 물리 계층의 오류 검출 및 수정에 필요한 기능적, 절차적 수단을 제공한다. 여기에는 2개의 부계층(매체 접근 제어(MAC), 논리적 연결 제어(LLC))이 존재한다. 주소값은 물리적으로 할당 받는데, 이는 네트워크 카드가 만들어질 때부터 MAC address가 정해져있다는 의미이다. 데이터 링크 계층의 가장 잘 알려진 예는 이더넷이다. 이 외에도 HDLC나 ADDCCP 같은 P2P(point-to-point) 프로토콜이나 패킷 스위칭 네트워크, LLC, ALOHA 같은 근거리 네트워크용 프로토콜이 있다. Layer 3 : 네트워크 계층 (Network Layer) - 라우터 여러 개의 노드를 거칠 때마다 경로를 찾아주는 역할을 하는 계층으로 라우터 기능의 대부분이 이 계층에 해당한다. 다양한 길이의 데이터를 네트워크들을 통해 전달하고, 그 과정에서 전송 계층이 요구하는 서비스 품질을 제공하기 위한 기능적, 절차적 수단을 제공한다. 네트워

아스키 코드(ASCII)와 유니코드(unicode)

이미지
1. 아스키 코드(ASCII) American Standard Code for Information Interchange의 약자로, 1960년대 미국 ANSI에서 표준화한 정보교환용 7비트 부호체계이다. 8비트 중에서 7비트만 사용하여 총 128개의 부호를 표기할 수 있다. 나머지 1비트는 통신 에러 검출을 위한 것으로 1의 개수가 홀수이면 1, 짝수이면 0으로 표기하였다. 이를 parity bit라고 한다. 이후 1비트를 더 확장한 ANSI 코드가 나왔으나 이것만으로는 다른 언어를 표현할 수 없었다. 이를 해결하기 위해 국제 표준 코드인 유니코드(Unicode)가 등장하게 되었다. [아스키 코드표] 2. 유니코드(Unicode) 초기 유니코드는 다양한 언어를 지원하기 위해 2바이트(=65536)로 용량을 확장하였다. 그러나 2바이트만으로는 고어(古語), 토속어 등을 담기에는 역부족이었다. 이러한 문제점을 해결하기위해 기본언어판과 보충언어판(BMP + SMP)으로 구성된 유니코드 3.0을 출시하게된다. (2019년 5월 7일 현재, 유니코드 버전 12.1) 유니코드 인코딩은 UTF-8, UTF-16, UTF-32 등이 있으며, 유니코드라 하면 일반적으로 UTF-8이 사용된다. UTF-8로 표현 가능한 길이는 최대 6바이트이나 다른 인코딩과의 호환을 위해 4바이트까지만 사용된다. 1바이트 영역은 아스키 코드와 하위 호환성을 가지며, 아스키 코드의 0~127까지는 UTF-8로 완전히 동일하게 사용된다. 아스키 코드와의 호환은 인터넷에서 가장 많이 사용되는 인코딩이 되는데 큰 이점으로 작용하였다. 유니코드가 쓰이기 전에는 대부분의 인터넷 문서들이 아스키 코드로 작성되었기 때문에 기존 인터넷 문서를 문제없이 호환된다는 것은 큰 장점이었다. UTF-8의 인코딩 규칙은 바이트가 추가될 때마다 1번째 바이트에 '1'로 표기해주는 방식이다. 1개의 바이트가 추가되었다면 '110'을, 2개의 바이트가 추가되었다면 

디자인 패턴 #6 - 커맨드 패턴 (command pattern)

이미지
1. 커맨드 패턴 (command pattern) 각종 기능을 캡슐화하여 여러 기능을 실행/관리할 수 있다. 커맨드 패턴을 이용하면 요구 사항을 객체로 캡슐화 할 수 있으며, 매개변수를 써서 여러가지 다른 요구 사항을 집어 넣을 수도 있다. 또한 요청 내역을 큐에 저장하거나 로그로 기록할 수도 있으며, 작업 취소 기능도 지원할 수 있다. 커맨드 패턴은 (1)명령, (2)수신자, (3)발동자, (4)클라이언트로 이루어진다. - 명령(command) : 수행 동작을 담고 있는 클래스 - 수신자(receiver) : 명령 수행하는 클래스 (ex. TV, 오디오 등 각종 기기) - 발동자(invoker) : 명령 수행을 요청하는 클래스 (ex. 리모컨) - 클라이언트(client) : 어떤 명령을 수행할지 결정하는 클래스 (1) 명령 LightOnCommand 클래스는 Command 인터페이스를 구현하여, Light 객체의 On/Off를 실행할 수 있다. (2) 수신자 Light 클래스는 장소(mPlace)의 점/소등을 할 수 있다. Command 클래스의 execute() 메소드에서 호출한다. (3) 발동자 RemoteControl 클래스는 입력된 Command를 실행한다. 총 7개의 slot이 존재하고, 미리 Command를 입력한 뒤, slot 번호를 통해 명령을 실행할 수 있다. onButtonWasPushed()와 함께 slot 번호를 입력하면 slot에 해당하는 기기의 정의된 동작을 수행하게 된다. (4) 클라이언트 각 Command 객체와 RemoteControl 객체 생성한다. 명령의 실행과 시점을 결정한다. 하기에서는 main 클래스가 해당 역할을 담당한다. LivingRoom과 Kitchen의 점등과 소등 명령을 정의하였으며, onButtonWasPushed(), offButtonWasPushed()를 통해 실행할 수 있다. 2. 결과 수행 결과는 하기와 같다. 각 slot에 해당하는 사

이 블로그의 인기 게시물

아스키 코드(ASCII)와 유니코드(unicode)

네트워크의 기본 #2 - TCP/IP 4계층

디자인 패턴 #5 - 컴포지트 패턴 (composite pattern)