전체 글 142

클래스?구조체?

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

S/W 계층 구조

1. 품질(Quality) . S/W Engineering의 기본 목표는 품질과 생산성의 확보이다. . S/W 자체의 품질 뿐만 아니라 모든 프로세스의 품질까지 고려해야 한다 . 품질에 대해서 엄격하고 문서화된 형식을 갖추어야만 신뢰성 있는 제품이 생산되며 프로그램 개발시 제품을 쉽게 관리할 수 있다. 2. Process . 프로그램 개발시 사용되는 개발 방법 및 순서를 의미한다. . 프로그램 완성 단계까지 해야 하는 작업의 목록을 정의한다. . 프로그램에 투여되는 모든 자원(Resource) 및 기타 환경에 대해서 정의한다. 3. 방법(Method) . S/W 개발에 사용되는 기술적 방법을 제공한다. . 요구사항, 분석, 설계, 프로그램 구축, 테스팅, 유지 및 보수 등과 관련된다. . 다이어그램을 사..

S/W Process

Software process : 소프트웨어 시스템을 개발하기 위해 요구된 활동들의 집합(요구사항 명세화, 설계, 확인, 진화) 소프트웨어 프로세스 모델은 프로세스의 추상적 표현이다. 1. 폭포수 모델 : 요구사항 정의-시스템/소프트웨어 설계-실행/테스트-통합/시스템 테스트-유지보수 의 단계 소프트웨어 개발 프로세스중 가장 첫번째로 발표된 모델이다. 시스템 공학 프로세스로부터 유도됨. 순차적 프로세스 모델로 위의 단계로 개발이 진행되며 각 개 발이 끝날때마다 과정의 끝을 알리고 산출물이 출력된뒤 다음단계로 진행된다. 프로젝트의 수행 단계의 파악이 용이하지만 실제 프로젝트는 요구사항이 안정적이지 않고 명확한 단계를 구분하기 어려우며 변경을 수용하기도 어렵다. 2. 진화적 개발 : 실험적 개발 - 고객과 함..

Critical System

-시스템의 고장은 비교적 일반적이다. 대부분의 경우 고장은 심각한 손해를 입히지 않지만 어떤 시스템 고장은 중요한 경제적 손실, 물질적 피해, 혹은 사람의 생명에 위험이 될수 있다. 이러한 시스템을 Critical system(중대한 시스템)이라 한다. 1. Safety-critical System : 시스템의 고장으로 인해 부상, 사망 등의 심각한 결과 초래 2. Mission-critical System : 시스템의 고장으로 임무 수행의 활동 실패 3. Business-critical System : 시스템의 고장으로 인해 시스템을 사용하는 사업에 대한 높은 비용지불 Critical systems의 가장 중요한 특징 : Dependability(신뢰성/ 확실성) -> 시스템의 신뢰성과 보안성이 떨어지..

소프트웨어 공학 - 프로젝트 관리

1. 프로젝트 관리 : 소프트웨어 프로젝트를 조직, 계획, 일정관리 하는 것 2. 프로젝트 관리가 중요한 이유 * 수입과 지출에 직결되는 경제 관련 작업: 기술 외적인 부분이 많음 * 관리가 잘된 프로젝트도 실패하는 경우가 있음. 관리가 잘 안된 프로젝트는 실패로 끝날 가능성이 많음. * 관리 작업에 대한 방법을 일부 이론적으로 다룸 : 관리를 실제 배우는 일은 현장감이 중요 3. 소프트웨어 프로젝트의 차이점 * 프로덕트가 만질 수 없고 눈이 보이지 않음 * 프로덕트가 매우 flexible함 * 기계공학, 건축공학 처럼 엔지니어링 기술이 아직 확립되어 있지 않음. * 소프트웨어 엔지니어링 프로세스가 표준화되어 있지 않음 * 대부분의 소프트웨어 프로젝트는 일회성 4. 프로젝트 관리 작업 * 계획서 작성 *..

소프트웨어 공학, 개론.

1. 소프트웨어 : 프로그램+ 프로그램의 개발, 운용, 보수에 필요한 정보 일체 * 소프트웨어 생산 -> 소프트웨어는 프로그램의 동적인 실체 프로그램은 형식 언어로 표현된 지적 노동의 결과물 닳아 없어지는 것이 아니라 소용없어 못쓰게 됨 논리적인 요소로 구성 소프트웨어 산업 * 사회적, 경제적인 소프트웨어 의존도 커짐 2. 소프트웨어 시스템 * 유기적으로 상호 작용하는 개체들의 모임 * 소프트웨어는 컴퓨터를 기반으로 하는 여러 시스템과 관계를 맺고 있음 * 특징 -> 시너지 효과, 역동적으로 발전, 변경, 상층되는 요구와 이해 관계의 절충 * 소프트웨어 자체도 하나의 시스템 3. 정보 시스템(Information System) * 자료의 분류, 저장, 검색에 관점 * 데이터베이스를 대화식으로 접근 * 조..

패킷 송 수신 처리

패킷 수신 처리 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
반응형