Backend 88

객체 (Object)

C++ 에서 가장 핵심 개념 중 하나가 바로 Object, 객체 이다. C++은 객체 지향 언어인데, 이 객체 지향 언어 할 때 객체를 설명하려고 한다. 클래스 Vs 객체 클래스는 이전 포스팅에서 언급했듯이, 구조체와 비슷한 개념으로, 어떠한 개념 및 속성을 한 데 묶어 사용자에게 편의성을 제공해 준다. 그럼 객체는 무엇일까? 객체는 "클래스를 자료형으로 하는 변수" 정도로 생각할 수 있다. 이해를 쉽게 하기 위해, 여기 어떠한 클래스 한 개가 존재한다고 하자. class person { public: int registration_id; char name[20]; char address[50]; void show_person() { cout

Backend/C++ 2012.04.13

클래스?구조체?

C 언어에서 배우는 개념 중 하나가 바로 "구조체" 이다. 이 구조체는 원하는 데이터를 구조체 라는 한 자료구조에 묶어 표현하는 것이다. 예를 들어 다음과 같이.. struct data { int id; char *name; char *detail; }; 그런데 구조체 처럼, C++에서도 데이터를 묶을 수 있는 개념이 존재한다. 바로 "클래스" 이다. 이 "클래스"는 "구조체"와 매우 흡사하게 생겼다. 하지만 구조체와는 약간 다른 느낌이다. class data { public : int id; char *name; char *detail; }; C++ 에서 사용하는 클래스는 위처럼 구조체와 동일한 느낌으로 사용할 수 있고, 변수 뿐 아니라 다음과 같이 함수도 선언이 가능하다. class data { pu..

Backend/C++ 2012.04.13

C++, 객체지향 언어!

객체 지향 이라는 개념에 대해서는 대학교때 배우고... 완전 오랫만에 다시 접해본다. 일단 말뜻을 살펴 보자면, 객체 지향 프로그래밍, (Object Oriented Programming) 객체 (대상)에 지향하여 작성되는 프로그래밍, 정도로 해석할 수 있는데, 사실 이 말만 보면 정확히 와닿지는 않는다. 그럼 C언어는 어떤 프로그래밍일까? 이 부분을 생각하면 객체 지향 프로그래밍이 무엇인지, 그나마 조금 와닿게 된다. C언어는 "절차 지향 프로그래밍" 이다. C 언어로 짜여진 함수의 처음부터, 끝까지 살펴보면 C++과는 다르게 철저히 순서대로, 흐름을 따라 진행 되도록 되어 있는 것을 알 수 있다. 순서대로 변수를 선언하고, 함수를 호출하고, 결과값을 리턴하는... 아마 C언어를 많이 다루어본 사람이라..

Backend/C++ 2012.04.12

SSH

SSH (Secure Socket Shell) SSH는 터미널에 접속할 때 암호화 기능을 제공하여 보다 안전하게 데이터를 사용할 수 있도록 해주는 프로토콜이다. 보통 Xshell, putty 등을 이용해서 터미널에 접속하는데, 이런 툴들은 모두 SSH를 지원한다. 아래 그림은 패킷 덤프를 떴을때 나오는 SSH 패킷의 일부이다. SSH는 TCP 위에서 동작하며, 기본 22번 포트를 사용한다. (물론 변경도 가능하다.) 패킷의 형식은 위에서 보면 알 수 있는데, 처음 4바이트는 패킷의 길이, 그리고 1바이트 패딩 길이, 그 뒤에 패이로드가 존재한다. SSH에서는 기본적으로 데이터 암호화, 무결성 그리고 데이터 압축을 지원한다. 처음 SSH 핸드셰이크 할 때는 이러한 기본적인 정보에 대해서 주고받는데, 항목은..

Backend/Network 2012.04.12

패킷 송 수신 처리

패킷 수신 처리 1. 프로세서에서 소켓으로부터 데이터를 읽기 위해 데이터가 들어올 때까지 기다림 2. NIC에 패킷이 들어오면 인터럽트 (하드웨어 인터럽트) 요청 3. 커널은 실행하던 일을 일시 중단하고 인터럽트 요청에 해당하는 핸들러를 실행한다. 이때, NIC 디바이스 드라이버의 인터럽트 핸들러가 실행된다. 4. 인터럽트 핸들러는 NIC로부터 패킷을 가져와서 수신된 패킷을 처리하는 소프트 인터럽트 핸들러를 실행하도록 요청한다. 5. 소프트 인터럽트 핸들러에서는 수신 패킷의 헤더를 해석하여 해더 정보에 해당하는 프로토콜 층을 호출한다. 수신 함수에서는 헤더를 해석하여 목적한 소켓에 패킷을 보낸다. 만약 그 소켓에 대기하고 있는 프로세스가 있으면 대기하는 프로세스(1번)을 실행시킨다. 6. 프로레스는 소켓..

Backend/Network 2012.04.12

IPv6 헤더 구조

IPv6 헤더 구조 Version Traffic Class Flow Level Payload Length Next Header Hop Limit Source Address Destination Address Version : 4비트 IP 버전 (6) Traffic Class : 8비트 traffic class 필드 Flow level : 20 비트 flow level Payload Length : 16비트 unsinged integer. IPv6 페이로드 길이 (이 IPv6헤더 뒤로 따라오는 모든 패킷의 길이. extension header 역시 페이로드의 부분으로 간주 Next Header : 8비트 식별자. IPv6헤더 바로 뒤에 따라오는 헤더의 타입이다.(IPv4 필드와 동일하게 사용) Hop Li..

Backend/Network 2012.04.12

ICMP

ICMP (Internet Control Message Protocol): 인터넷 제어 메시지 프로토콜 ICMP는 IP layer의 한 부분으로 에러나 주의가 요구되는 상태 등을 전송하는 역할을 하며. ICMP 메시지는 IP 계층이나 그보다 높은 계층(TCP, UDP 등)에 의해 호출된다. ICMP 메시지는 다음 그림처럼 IP 데이터그램 안에 포함되어 전송된다. (메시지는 TCP/UDP 계층에서 처리) IP Datagram IP Header (20 Bytes) ICMP Message ICMP는 RFC 792번에 정의되어 있다. 다음은 ICMP메시지의 구조를 그림으로 나타낸 것이다. Type (8 - bit) Code (8 - bit) Checksum (16 - bit) 이 세 필드 뒤에는 타입과 코드에 ..

Backend/Network 2012.04.12

TLS 프로토콜 정리.

•SSL (Socket Secure Layer) –배경 : 1993년 웹에서 안전한 통신을 위해 Netscape社에 의해 개발 –특징 : 세션계층에서 적용되며, 응용계층의 FTP, TELNET, HTTP등의 프로토콜의 안전성 보장 –기능: 서버 인증, 클라이언트 인증, 기밀성 보장 –현황 및 전망 : 현재 많은 전자 쇼핑몰 업체에서 채택, 운영 •TLS (Transport Layer Security) –배경 : SSL 3.0 이 표준화된 이후 IETF는 1996년 6월부터 TLS 프로토콜에 대한 표준화 (SSLv3.1) –Backward compatible with SSLv3 –특징 : SSL 3.0을 기반으로 한 업그레이드 프로토콜 –현황 및 전망 : 현재 TLS 1.0이 발표, 지속적 개발 예상 TL..

Backend/Network 2012.04.12

OSI MODEL

OSI Model (OSI 7 Layer) 지난 포스팅에 간단히 기술했었는데, 오늘 보다가 다시 정리. OSI(Open Systems Interconnection) Model은 총 7계층이며, 각 계층의 기능은 다음과 같다. 1. Physical (물리적 계층) 말 그대로 물리적인 계층을 의미한다. 이 물리적 계층에서는 데이터를 물리적인 매개체를 이용하여 (예 케이블, 허브 등) 다른 시스템으로 전송한다. 비트 스트림을 다루는 계층으로 서킷 교환, 패킷 교환 등의 방식을 통해 데이터를 주고받는다. 이 계층에서 사용되는 프로토콜은 주로 기계적 구조나 배치 등을 명시하고 있으며 다음과 같은 프로토콜이 물리적 계층에 속한다. - EIA/TIA, HSSL, SONET, SCSI 등등.. 2. Data Link ..

Backend/Network 2012.04.12

NAT

NAT (Network Addres Translation) NAT은 말 그대로 네트워크상에서 주소를 변환하는 방법 (또는 시스템)을 의미한다. 우리가 사용하는 IP는 공인 IP, 사설 IP 등이 있는데, 보통 사내망에서는 사설 IP를 사용하고, 외부로 나갈 때 공인 IP로 빠져나가게 된다. 그런데 이런 일이 자동적으로 이루어 질리는 없을테고.. 바로 이 때 사용하는 것이 NAT이다. 일반적으로 회사에서는 사설 IP를 하나 또는 그 이상의 공인 IP로 사상(매핑) 시켜 패킷을 내보낸다. 그래서 외부에서 봤을 때는 사용자의 Source IP가 사설 IP가 아닌 공인 IP로 보이게 되는 것이다. 따라서 외부에서 이 공인 IP로 응답할 때에도, NAT은 이 공인 IP를 다시 원래의 사설 IP로 변환하여 내부 사..

Backend/Network 2012.04.12
반응형