CS 기초 지식
네트워크 기초
통신 프로토콜
정의
: 서로 다른 시스템에 존재하는 노드 간의 원활한 통신을 위한 규칙과 약속의 개념
기본 요소
1) 구분
2) 의미
3) 시간
구조
물리 계층 | 물리적 신호를 주고 받는 계층, 데이터의 종류나 오류를 제어 | 허즈, 리피터, 전송 회선 |
데이터링크 계층 | 물리 계층을 통한 노드 간 송수신되는 정보의 오류와 흐름을 관리하여 정보 전달의 안전성 높이는 계층 |
브리지, 스위치 |
네트워크 계층 | 주소를 정하고 경로를 선택하여 패킷을 전달하는 계층 | 라우터 |
전송 계층 | 네트워크 상의 단말기 간 신뢰성 있는 데이터 송수신을 제공하는 계층 오류 검출과 복구, 흐름 제어, 중복 및 누락 검사, 다중화수행 |
TCP, UDP |
세션 계층 | 데이터 통신을 위한 양 끝단의 응용 프로세스가 통신 관리하기 위한 방법을 제공하는 계층 |
|
표현 계층 | 응용 프로세스 간 데이터 표현 상의 차이에 상관없이 통신이 가능하도옥 독립성을 제공하는 계층 데이터의 코드 변환, 데이터 압축, 암호화 |
|
응용 계층 | 네트워크 가상 터미널이 존재하여 서로 상이한 프로토콜에 의해 발생하는 호환성 문제를 해결하는 계층 | HTTP, FTP, POP3, SNMP |
TCP/IP
: 인터넷 연결을 위한 여러 프로토콜을 통칭하는 것
주요 서비스로는 HTTP, SMTP, FTP, Telnet, SSH
IPv4 주소 부족 문제 해결 방안
1) CIDR(Classless Inter-Domain Routing)
: IPv4의 클래스 체계를 무시하고 네트워크 주소화 호스트 주소를 임의로 구분하여 사용한다.
2) DHCP(Dynamic Host Configuration Protocol)
: 부족한 IP 주소 해결하기 위해 몇개의 IP를 여러 사용자가 공유할 수 있도록 인터넷에 접속할 때마다 자동으로 IP주소를 동적으로 할당한다.
3) NAT(Network Address Translator)
: 사설 IP주소를 공인 IP주소로 바꿔주는 주소 변환기이다.
공격자로부터 사설망을 보호 가능하다.
4) IPv6
: 128비트 체계의 주소체계이다.
교착상태
1) 점유와 대기
: 프로세스가 하나 이상의 리소스를 점유하고 있으면서 다른 프로세스가 가지고 있는 리소스를 기다리는 것
2) 환원 대기
: 각 프로세스가 순차적으로 다음 프로세스가 요구하는 자원을 가진 상태
3) 비선점
: 프로세스가 리소스를 자발적으로 반환할 때까지 기다리는 것
4) 상호배제
: 한 리소스는 한번에 한 프로세스만이 사용 가능
데이터베이스 기초 활용
데이터베이스
유형
1) 파일 시스템
: 자료 시스템을 쉽게 접근할 수 있도록 논리적인 파일 단위로 관리하는 일반적인 데이터 관리 시스템이다.
2) HDBMS(Hierarchical DBMS)
: 데이터를 계층화하여 관리하는 형태이다.
3) NDBMS(Network DBMS)
: 데이터를 네트워크 형태로 관리하는 형태이다.
4) RDBMS(Relational DBMS)
: 데이터를 테이블 구조로 모델링하여 관리하는 형태이다.
관계형 데이터데이스 구성
1) 릴레이션(Relation)
: 개체를 테이블 구조로 표현한 것이다.
열에 속성, 행에 튜플을 대응시켜 구성이다.
2) 속성(Attribute)
: 릴레이션을 구성하는 고유의 특성으로 의미 있는 데이터의 가장 작은 논리적 단위이다.
3) 도메인(Domain)
: 하나의 속성값이 가질 수 있는 모든 원자 값의 집합이다.
4) 튜플(Tuple)
: 하나의 개체를 표현하는 완전하고 고유한 정보 단위이다.
키
1) 후보키
: 릴레이션에 에존재하는 모든 튜플들에 대해 유일성과 최소성 모두 만족시킨다.
2) 기본키
: 후보키들 중 튜플의 식별을 위해 지정된 속성으로 유일성과 최소성, NULL 가질 수 없다.
3) 슈퍼키
: 튜플의 식별을 위해서는 유일성을 만족하는 속성이 있어야 한다.
4) 외래키
: 관계된 다른 릴레이션의 기본키를 참조하는 속성이다.
정규화(Normalization)
정의
: 하나의 릴레이션에 하나의 의미만 존재할 수 있도록 릴레이션을 분해하는 과정이다.
단계
비정규형 | 정규화가 전혀 진행되지 않은 상태 |
1NF (제1정규형) | 도메인이 원자값만 가지도록 분해 |
2NF (제2정규형) | 부분 함수 종속 제거 |
3NF (제3정규형) | 이행적 함수 종속 제거 |
BCNF (보이스 코드 정규형) | 결정자가 후보키가 아닌 종속제거 |
4NF (제4정규형) | 다치 종속 제거 |
5NF (제5정규형) | 후보키를 통하지 않은 조인 종속제거 |
UI 테스트
UI 프로토 타입
특징
: UI에 대한 사용자 요구사항을 검증하기 위해 최대한 단순하게 제작한 시제품이다
장점
: 수정, 재사용이 용이하다.
단점
: 응용 프로그램 사용법 숙지가 필요하다.
테스트 기법 선정
1) 휴리스틱 평가
: 최소 3명 이상의 디자인 전문가가 사전에 작성한 원칙에 따라 제품을 평가한다.
2) 페이퍼 프로토타입
: 종이로 해당 서비스를 간단하게 만들어 실제 수현되는 것이다.
3) 선호도 평가
: 각 속성들의 중요도에 따른 선호도를 예측하여 사용자의 니즈에 대응 할 수 있는 평가한다.
4) 사용성 테스트
: 제품, 서비스의 본질과 사용자 간 상호작용의 품질을 검증한다.
5) 성능 평가
: 제품, 서비스와 연관된 것을 사용해 보고 테스크별 학습성, 효율성, 기능 용이성, 오류, 만족도 등을 평가한다.
사용성 테스트 소요 시관과 동선 분석
NEM (Novice Expert ratio Method)
: 초심자와 숙련자를 사용성 테스트에 참여시킨 후 대상 제품의 태스크 수행시간을 비교하여 문제점을 객관적으로 제시하는 사용성
테스트 기법
디자인패턴
1) 생성 패턴
Factory Method | 상위 클래스에서는 객체를 생성하기 위한 인터페이스를 정의 하위클래스는 어딴 클래스의 인스턴스를 생성할 것인지 결정 |
Singleton | 클래스가 오직 하나의 인스턴스만 가진다. |
Prototype | 동일한 타입의 객체를 생성해야 할 때 필요한 비용 줄인다. |
builder | 객체 생성에 많은 인수가 필요한 복잡한 객체를 단계적으로 생성하는패턴 |
Abstract Factory | 관련이 있는 서브 클래스를 묶어서 펙토리 클래스로 만들고, 조건에 따라 객체를 생성 |
2) 구조 패턴
Adaptor | 서로 다른 인터페이스를 가진 클래스들을 함께 사용할 수 있다. |
Bridge | 복잡하게 설계된 클래스를 기능부와 구현부를 분리한 뒤, 두 클래스를 연결한다. |
Composite | 객체들의 관계를 트리 구조로 구성하여 단일 객체와 복합 객체를 공일하게 다루도록 한다. |
Decorator | 클래스 변경 없이 주어진 상황에 따라 기능을 추가한다. |
Facade | 복잡한 서브 시스템들을 간편하게 사용할 수 있도록 단순화된 인터페이스를 제공한다. |
Flyweight | 메모리를 최소화하기 위해 객체들 간 데이터 공유를 극대화 |
Proxy | 특정 객체로의 접근을 해당 객체의 대리자를 통해 진행 |
3) 행위 패턴
Command | 요청을 객체의 형태로 캡슐화하여 나중에 이용할 수 있도록 요청에 필요한 정보를 저장 |
Chain of Resposibility | 문제의 해결을 위한 일련의 처리 객체가 순서대로 문제를 해결 |
Interpreter | 언어의 문법을 평가하는 방법을 규정하는 패턴 |
Iterator | 내부 구현을 노출 시키지 않고 집약된 객체에 접근하고 싶을 경우에 적용 |
Mediator | 객체 간의 통신이 직접 이루어지지 않고 중재자를 통해 진행되어 결합도를 감소시킴 |
Memento | 롤백을 통해 객체릐 상태를 이전 상태로 되돌릴 수 있는 기능 제공 |
observer | 객체의 상태 변화를 관찰하는 옵저버를 등록하여 상태 변화가 있을 때마다 등록된 옵저버 통지 |
State | 객체의 내부 상태에 따라 다른 기능을 수행하는 메소드를 구현 |
Strategy | 문제를 해결하는 데 있어 다양한 알고리즘이 적용될 수 있는 경우에 알고라즘을 별도로 분리 |
Template Method | 상위 클래스에서는 알고리즘의 뼈대를 정의하고 구체적인 단계는 하위 클래스에서 정의 |
Visitor | 알고리즘을 자료 구조에서 분리하여 클래스를 수정하지 않고도 새로운 알고리즘을 추가 |
애플리케이션 테스트 수행
애플리케이션 테스트 케이스 작성
소프트웨어 테스트 기본 원칙
1) 결함 집중(Defect Clustering)
: 결함의 대부분은 특정모듈에 집중되어 존재한다.
2) 낚시의 법칙
: 낚시 포인트처럼, 특정 위치에 많은 결함 발생한다. 파일 단위로 관리하는 일반적인 데이터 관리 시스템이다.
3) 파레토의 법칙
: 결함의 80% 20%의 기능에서 발생
4) 살충제 패러독스
: 동일한 테스트 케이스를 반복 실행하면 결함 발견 불가능하다.
5) 오류-부재 궤변
: 결함이 없더라도 요구사항을 만족하지 못한다면 품질 보증이 불가능하다.
소프트웨어 테스트 유형
1) 정적테스트
: 프로그램 실행 없이 소스 코드의 구조 분석한다.
워크 스루, 인스펙션, 동료 검토
-> 워크 스루: 검토 회의 전에 미리 준비된 자료를 배포하여 사전 검토 진행하고, 검토 회의를 빠르게 진행하여 오류를 조기에 발견
2) 동적 테스트
: 프로그램의 실행 화면을 보면서 테스트 수행한다.
블랙박스, 화이트 박스
-> 블랙박스 : 프로그램의 기능을 중심으로 테스트한다.
-> 화이트 박스 : 프로그램의 내부 로직을 중심으로 테스트한다.
3) 테스트
: 제품에 대한 검증과 확인을 수행하는 것이다.
-> 검증 : 개발자 입장으로 제춤의 개발 과정에 대한 테스트이다.
-> 확인 : 사용자 입장으로 제품의 결과에 대한 테스트이다.
4) 디버깅
: 프로그램의 오류를 찾고 수정하는 것이다.
테스트 케이스
: 사용자 요구사항 준수 여부를 체크하는 입력값
사용자 테스트
: 제품, 서비스의 본질과 사용자 간 강호 작용의 품질 검증
테스트 오라클
1) 참 오라클
: 모든 테스트 케이스의 입력값에 대해 기대 결과를 제공하는 오라클 -> 모든 오류 검출 가능
2) 샘플링 오라클
: 특정한 몇몇 케이스의 입력값들에 대해서만 기대 결과를 제공하는 오라클
3) 추정 오라클
: 특정 테스트 케이스의 입력값에 대한 기대 결과를 제공하고, 나머지 입력값들에 대해서는 추정으로 처리하는 오라클
4) 일관성 검사 오라클
: 애플리케이션의 변경이 있을 때 테스트 케이스의 수행 전과 후의 결과 값이 동일한지 확인하는 오라클
테스트 오라클
1) 정적 분석 도구
: 프로그램을 실행하지 않고 코딩 표준, 코딩 스타일, 코드 복잡도 및 결함 등을 발견하기 위한 테스트 자동화 도구
2) 테스트 실행 도구
: 테스트를 위해 작성된 스크립트를 실행하는 도구이다.
3) 성능 테스트 도구
: 애플리케이션의 성능 목표 달성을 확인하기 위해 처리량, 응답 시간, 경과 시간, 자원 사용률에 대해 테스트를
수행한다.
4) 테스트 통제 도구
: 테스트에 대한 계획 및 관리를 위한 도구로 최적화된 형태의 정보를 관리하기 위해서는 다른 도구들과 연계해서
사용할 수 있다,
5) 테스트 하네스
: 테스트를 지원하기 위한 코드와 데이터들의 총칭으로, 단위 또는 모듈 테스트에 사용하기 위해 코드 개발자가
작성하는 것이다.
SQL 활용
SQL 명령어 종류
1) DDL 데이터 정의어
: 데이터 조작을 위한 공간을 정의, 수정, 변경하는 언어
CREATE, DROP, ALTER, TRUNCATE
2) DML 데이터 조작어
: 데이터베이스를 조작하기 위한 인터페이스 제공하는 언어
INSERT, UPADTE, DLELTE, SELECT
3) DCL 데이터 제어어
: 데이터 접근 통제와 병행 수행을 위한 제어 언어
GRANT, REVOKE, COMMIT, ROlLBACK, CHECKPOINT
관계대수
1) 관계 해석
: 원하는 정보가 무엇인지에 대해 정의하는 비절차적인 언어
코드 박사가 제안한 것으로 수학의 술어 해석에 기반
구분 | 구성 요소 | 기호 | 설명 |
연산자 | OR 연산자 | ∨ | 원자식 간 '또는'이라는 관계로 연결 |
AND 연산자 | ∧ | 원자식 간 ' 그리고 '이라는 관계로 연결 | |
NOT 연산자 | ¬ | 원자식 간 ' 부정 '이라는 관계로 연결 | |
정량자 | 전칭 정량자 | ∀ | 모든 가능한 튜플 'For All' |
존재 정량자 | ∃ | 어떤 튜플 하나라도 존재 'There Exists' |
2) 관계 대수
: 원하는 정보와 그 정보를 어떻게 유도하는가를 정의하는 절차적인 언어
연산자와 연산 규칙을 사용하여 주어진 릴레이션으로부터 릴레이션으로부터 원하는 릴레이션
구분 | 연산자 | 기호 | 의미 |
순수 관계 연산자 |
select 선택 | σ | 조건을 만족하는 튜플의 부분 집합(수평연산) |
Project 추출 | π | 속성들의 부분 집합, 중복은 제거됨(수직연산) | |
Join 조인 | ⋈ | 두개의 릴레이션이 공통으로 가지고 있는 속성을 이용하여 두 개의 릴레이션을 하나로 합쳐서 새로운 릴레이션을 만드는 연산 | |
Division 나누기 | ÷ | R릴레이션에서 S릴레이션의속성 도메인 값과 이리하는 R릴레이션의 튜플들을 찾아내는 연산 | |
일반 집합 연산자 | Union 합집합 | ∪ | 두 개의 릴레이션이 합이 추출되고, 중복은 제거됨 |
Intersection 교집합 | ∩ | R릴레이션과 S릴레이션의 중복되는 값들만 추출 | |
Difference 차집합 | ㅡ | R릴레이션에서 S릴레이션에 중복되지 않는 값들만 추출 | |
CartesianProduct 교차곱 | X | 두 릴레이션의 가능한 모든 튜플의 집합 차수는 더하고 카디널리트는 곱함 |
Decode Instruction
: 명령어를 분석하여 작업 수행에 필요한 장치에 제어신호를 보낸다.
스레싱 (Thrashing)
: 프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 형상이다.
코드 오류
생략 오류 | 입력 시 한 자리 빼놓고 기록 | 1234 -> 123 |
필사 오류 | 입력 시 임의의 한 자리를 잘못 기록 | 1234 ->1235 |
전위 오류 | 입력 시 좌우 자리 바꾸어 기록 | 1234 ->1243 |
이중 오류 | 전위 오류가 두 가지 이상 발생 | 1234 -> 2143 |
추가 오류 | 입력 시 한 자리 추가로 기록 | 1234 -> 12345 |
임의 오류 | 위의 오류가 두가지 이상 결합 | 1234 ->12367 |
테스트 시나리오
: 여러 개의 테스트 케이스를 순서대로 진행할 수 있는 묶은 집합체
유스케이스
: 요구사항 도출 기법 중, 사용자의 요구사항을 기능단위로 표현하는 기법
장애
: 결함으로 인해 소프트웨어 및 서비스가 기대결과를 나타내지 못하는 것
결함의 원인
: 에러
결함으로 인해 소프트 웨어 및 서비스가 기대 결과를 나타내지 못하는 것
: 장애
리팩토링
: 코드의 기능 자체를 바꾸지 않고 구조를 개선
주소 명령어
: Op-Code만 있고 OPerand는 없는 명령어 형식
주로 stack 구조사용
자료를 입력하는 push와 자료를 출력하는 pop 명령 사용
스파게티 코드
: 로직이 이해하기 어렵고 복잡하게 작성된 코드
커뮤니케이션 다이어그램
: 객체들이 주고받는 메세지뿐 아니라 연관 관계까지 표현할 수 있는 다이어그램
표준화
: UI 설계 시 고려사항 중, 기능 구조를 단순화하여 쉽게 조작하고 누구나 명확히 이해할 수 있도록 폰트, 색상, 용어 선택에
일관성이 있도록 하는 개념
레지스터
: CPU 내에서 발생 및 사용되는 데이터를 일시적으로 저장하는 저장장치
가격 대비 용량이 가장 작고 기억장치 중 속도가 가장 빠름
플립플롭과 래치로 구성
스레드(경량 프로세스)
프로세스 내에서 실행되는 흐름의 단위
동일한 프로세스 환경에서는 서로 독립적으로 다중 수행 가능
하나의 프로세스는 하나의 단일 스레드를 가지지만, 둘 이상의 스레드를 동시에 실행하는 다중 스레드 방식도 있음
SOA(Service Oriented Routing: 서비스 지향 아키텍처)
: 기업의 소프트웨어 인프라인 정보 시스템을 공유와 재사용이 가능한 서비스 단위나 컴포넌트 중심으로 구축하는
정보기술 아키텍처
미들웨어
: 운영체제와 해당 운영체제에서 실행되는 응용 프로그램 사이에 운영체제가 제공하는 서비스 이외에추가적인 서비스를 제공하는 소프트웨어
모듈
: 프로그램의 효율적인 관리를 위해 프로그램을 기능 단위로 분해한 것
제어장치
: 컴퓨터 하드웨어를 제어하는 장치
입력장치
: 산술 및 논리 연산을 수행하는 장치
토글
: 웹페이지 요소 중, 하나의 버튼으로 두 상태를 번갈아가며 선택할 수 있는 요소
HCI
: 사람이 시스템보다 편리하고 안전하게 사용할 수 있도록 연구하고 개발하는 학문
시스템을 사용하는 데 있어 최적의 사용자경험을 만드는 것이 최종 목표
UX
: 사용자가 시스템이나 서비스를 이용하면서 느끼고 생각하게 되는 총제적인 경험
UI를 통해 사용자가 느끼는 만족이나 감정을 중시
연산자 기능
: 함수 연산, 전달, 입력, 출력, 제어
워크 스루
: 검토 회의 전에 미리 준비한 자료를 배포하여 사전 검토를 진행하고 검토 회의 빠르게 진행하여 오류를 조기에 발
사용성 테스트
: 제품과 사용자 간 상호작용의 품질 검증
Chain of Responsibility
: 문제 처리를 담담당하는 여러 새의 처리 기능 두고 순서대로 처리해 나가는 디자인 패턴
처리 능력
: 일정 시간 내에 시스템이 처리하는 작업 양
반환 시간
: 시스템에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간
사용 가능도
: 시스템을 사용할 필요가 있을 때 즈시 사용한 사능한 정도
신뢰도
: 시스템이 주어진 문제를 정확하게 해결하는지 나타내는 척도
애플리케이션 테스트 수행 작업
1) 무엇을 테스트 할 것인지 결정한다.
2) 테스트 방법을 정한다.
3) 테스트 방법이 결정되면 그에 맞는 테스트 케이스를 작성한다.
4) 테스트의 예상 결과를 정리한다.
5) 테스트를 수행한다.
테스트 계획 -> 테스트 분석 및 디자인 -> 테스트 케이스 및 시나리오 작성 -> 테스트 수행 -> 테스트 결과 평가 및 리포핑
네트워크 보안
웹 애플리케이션 방화벽(WAF: Web Application Firewall)
: 웹 서버로 들어오는 웹 트래픽을 검사하여 악의적인 코드나 공격 유형이 포함된 웹 트래픽을 차단해 주는 방화벽
침입 탑재 시스템 (IDS : Intrusion Detection System)
: 컴퓨터 시스템의 비정상적인 사용, 오용, 남용 등을 실시간으로 탐지하는 시스템
1) 오용 탐지: 미리 입력해 둔 공격 패턴이 감지되면 알림
2) 이상 탐지: 평균적인 시스템의 상태를 기준으로 비정상적인 행위나 자원의 사용이 감지되면 이를 알림
침입 방지 시스템(IPS: Intrysion Prevention System)
: 방화벽과 침입 탐지 시스템을 결합시킨 것
데이터 유출 방지(DLP: Data LeakAge)
: 사내 직원이 사용하는 PC와 네트워크 상의 모든 정보를 검색하고 메일, 메신저 등의 사용자 행위를 탐지, 통제하여 내부 정보가 외부로 유출되지 않도록 함
NAC(Network Access Control)
: 네트워크에 접속하는 내부 PC의 MAC 주소를 IP 관리 시스템에 등록한 후 일관된 보안 관리 기능을 제공하는 보안 솔루션
SIEM
: 다양한 장비에서 발생하는 로그 및 보안 이벤트를 통합하여 관리하는 보안 솔루션
가상 사설 통신망(VPN: Virtual Private NetWork)
: 인터넷 등 통신 사업자의 공동 네트워크와 암호화 기술을 이용하여 사용자가 마치 자신의 전용 회선을 사용하는 것처럼 해주는 보안 솔루션
-> 암호화된 규격을 통해 인터넷망을 전용선의 사설망을 구축한 것처럼 이용
VDN
: 데이터 웨어하우스를 구축하지 않아도 실제 구축한 것과 같은 가상 시스템
ARP
: IP 주소를 MAC 주소로 변환하는 과정
RARP
: MAC 주소를 IP주소로 변환하는 과정
방화벽(firewall)
: 기업이나 조직 내부의 인터넷 간에 전송되는 정보를 선별하여 수용, 거부, 수정하는 칩입 차단 시스템
NAT
: 1개의 정식 IP주고에 대량의 가상 사설 IP주소를 할당 및 연결하는 방식.
라우팅 프로토콜
1. 정적 라우팅
1) 직관성 : 누구나 쉽게 이해하고 사용해야 함
2) 유효성 : 사용자의 목적을 정확하고 완벽하게 달성해야 함
2. 동적 라우팅
1) IGP - RIP : 거리 벡터 라우팅 프로토콜 (최대 15홉까지) / 소규모 동종의 네트워크
- OSPF : Rip의 단점을 해결하여 새로운 기능을 지원하는 인터넷 프로토콜 / 대규모 네트워크
2) EGP - BGP
사용자 인터페이스 UI
기본 원칙
1) 직관성 : 누구나 쉽게 이해하고 사용해야 함
2) 유효성 : 사용자의 목적을 정확하고 완벽하게 달성해야 함
3) 학습성 : 누구나 쉽게 배우고 익힐 수 있어야 함
4) 유연성 : 사용자의 요구사항을 최대한 수용하고 실수를 최소화해야 함
종류
1) CLI(Cimmand Line Interface) : 명령과 출력이 텍스트 형태로 이뤄지는 인터페이스
텍스트 인터페이스
: 문법적인 명령이 아닌 자연어를 입력하여 상호 작용하는 인터페이스
명령어 인터페이스
: 키보드를 통해 텍스트로 이루어진 명령어를 입력하여 상호작용하는 인터페이스
3) 그래픽 인터페이스(GUI: Graphical User Interface)
: 텍스트, 아이콘, 메뉴 등을 사용자가 직접 조작하여 상호작용하는 인터페이스
4) 웹 인터페이스(WUI: Web User Interface)
: 인터넷이나 웹 브라우저에서 웹페이지를 조작할 때 사용하는 인터페이스
5) NUI(Natural User Interface)
: 사용자의 말이나 행동으로 기기를 조작하는 인터페이스
프로토콜 기본 포트 번호
FTP : 21
컴퓨터와 컴퓨터 또는 컴퓨터와 인터넷 사이에서 파일을 주고 받을 수 있도록 하는 원격 파일 전송 프로토콜
SSH : 22
Telnet: 23
멀리 떨어져 있는 컴퓨터에 접속하여 자신의 컴퓨터처럼 사용할 수 있도록 해주는 서비스
프로그램을 실행하는 등 시스템 관히 작업을 할 수 있는 가상의 터미널
SMTP: 25
전자 우편을 교환하는 서비스
SNMP
: TCP/IP의 내트워크 관리 프로토콜로, 라우터나 허브 등 네트워크 기기의 네트워크 정보를 네트워크 관리 시스템에 보내는 데 사용되는 표준 통신 규약
DNS: 53
도메인 네임을 IP 주소로 매핑
HTTP: 80
웹에서 HTML 문서를 송수신하기 위한 표준 프로토콜
HTTPS: 443
Pop3: 110/ 응용계층에서 서비스에서 사용되는 프로토콜으로 수신측 이메일 서버에서 사용자늬 컴퓨터로 다운로드하는 역할
V-모델
1) 단위 설계 --테스트 케이스--> 단위 테스트
2) 시스템 설계 --통합테스트계획--> 통합테스트
3) 시스템 요구 명세서 --시스템테스트계획-->시스템 테스트
4) 사용자 요구 명세서 --인수 테스트 계획 --> 인수 테스트
애플리케이션 테스트
1) 단위 테스트(Unit Test)
: 코딩 직후 소프트웨어 설계의 최소 단위인 모듈이나 컴포넌트에 초점을 맞춰 테스트( 화이트 박스, 블랙박스)
2) 통합 테스트(Integration Test)
: 단위 테스트가 완료된 모듈들을 결합하여 하나의 시스템으로 완성시키는 과정에서의 테스트
3) 시스템 테스트(System Test)
: 개발된 소프트웨어가 해당 컴퓨터 시스템에서 완벽하게 수행되는가를 점검하는 테스트
4) 인수 테스트(Acceptance Test)
: 개발한 소프트웨어가 사용자의 요구사항을 충족하는지에 중점을 두고 테스트하는 방법
단위 테스트 :
화이트 박스 테스트
: 원시 코드의 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계하는 방법
내부 구조를 직접 들여다 보는 방식
로직을 분석하여 구조를 확인
1. 기초 경로 검사(Base Path Testing)
2. 제어구조검사(control Structure Testing)
1) 조건 검사(codition Testing)
2) 루프 검사(Loop Testing)
3) 데이터 흐름 검사(Data Flow Testing)
블랙 박스 테스트
: 각 기능이 완전히 작동되는 것을 입증하는 테스트
Input, OutPut으로만 수행
사용자의 요구사항이 반영된 기능 명세를 보며 수행
1) 오류 예측 검사(Error Guessing)
2) 동치 분활 검사(Equivalence Partitioning Testing)
3) 원인 - 효과 그래프 검사(cause-Effect Graphing Testing)
4) 비교 검사(Comparison Testing)
5) 경계값 분석(Boundary Value Analysis)
인수 테스트 :
1) 사용자 인수 테스트 : 사용자가 시스템 사용의 적절성 여부를 확인함
2) 운영상의 인수 테스트 : 시스템 관리자가 시스템 인수 시 수행하는 테스트 기법
3) 계약 인수 테스트 : 계약상의 인수, 검수 조건을 준수하는지 여부를 확인
4) 규정 인수 테스트 : 소프트웨어가 정부 지침, 범규, 규정 등 규정에 맞게 개발되었는지 확인
5) 알파 테스트 : 개발자의 장소에서 사용자가 개발자 앞에서 행하는 테스트 기법
6) 베타 테스트 : 최종 사용자가 여려 명의 사용자 앞에서 행하는 테스트 기법
통합 테스트 :
1) 비점진적 통합 방식 : 단계적으로 통합하는 절차 없이 모든 모듈이 미리 결합되어 있는 프로그램 전체를 테스트 - 빅뱅 통합 테스트
2) 점진적 통합 방식 : 모듈 단위로 단계적으로 통합하면서 테스트 하는 방법
- 하향식 통합테스트
: 상위모듈에서 하위모듈 방향으로 통합하면서 테스트 하는 기법
깊이 우선 통합법이나 넓이 우선 통합법
테스트 절차
1. 주요 제어 모듈은 작성된 프로그램을 사용하고, 주요 제어 모듈의 종속 모듈들은 스텁으로 대체한다.
2. 깊이 우선 또는 넓이 우선 등의 통합 방식에 따하 하위 모듈인 스텁들이 한번에 하나씩 실제 모듈로 교체
3. 모듈이 통합될때마다 테스트를 실시함
4. 새로운 오류가 발생하지 않음을 보증하기 위해 회귀 테스트 실시
- 상향식 통합테스트
: 프로그램의 하위 모듈에서 상위 모듈 방향으로 통합하면서 테스트
테스트 절차
1. 하위 모듈들을 클러스터로 결합함
2. 상위 모듈에서 데이터의 입출력을 확인하기 위해 더미 모듈은 드라이버로 작성함
3. 통합된 클러스터 단위로 테스트 함
4. 테스트가 완료되면 클러스터는 프로그램 구조의 상위로 이동하여 결합하고 드라이버는 실제 모듈로 대체함
- 혼합식 통합 테스트
: 하위 수준에서는 상향식 통합, 상위 수준에서는 하향식 통합을 사용하여 최적의 테스트를 지원
* 통합 테스트로 인해 변경된 모듈이나 컴포넌트에 새로운 오류가 있는 확인
OSI
1) 물리계층
: 전송에 필요한 두 장치 간의 실제 접속과 절단 등 기계적, 전기적, 기능적, 절차적 특성에 대한 규칙을 정의
: 리피터, 허브
: 비트 스크림
2) 데이터링크계층
: 두 개의 인접한 개방 시스템들 간에 신뢰성 있고 효율적인 정보 전송을 할 수 있도록 시스템 간 연결 설정과 유지 및
종료
: 흐름 제어, 오류 제어, 순서 제어
: 랜카드, 브리지, 스위치
:프레임
: MAC, HDLC, LAPB, LAPD, PPP
HDLC : 각 프레임에 데이터 흐흠을 제어하고 오류검출할 수 있는 비트 열을 삽입하여 전송
플래그 : 8bit 프레임의 시작과 끝을 나타내는 고유한 비트 패턴
주소부: 8bit 송, 수신국을 식별하기 위해 사용
제어부: 8bit 프레이 프레임의 유형(I-프레임, S-프레임, U-프레임)에 따라 데이터 전송과 흐름 제어, 오류 제어 정보를 포함합니다.
정보부 : 실제 정보 메게지가 들어가 있는 부분
FCS : 16/32bit 프레임 내용에 대한 오류 검출을 위해 사용되는 부분 CRC코드 사용
플래그
3) 네트워크계층
: 개방 시스템들 간의 네트워크 연결을 관히하는 기능과 데이터의 교환 및 중계 기능 함
: 네트워크 연결, 유지, 해제
: 라우터
: 패킷
: X.25, IP
4) 전송계층
: 논리적 안정과 균일한 데이터 전송 서비스를 제공함으로써 종단 시스템 간에 투명한 데이터 전송
: 전송 연결 설정, 데잍커 전송, 연결 해제 기능
: 주소 설정, 다중화, 오류 제어, 흐름 제어
: 게이트 웨이
: 세그먼트
1. TCP : 양방향 연결형 서비스를 제공하며 신뢰성 있다.
필드명설명용도
Source Port | 송신자의 포트 번호 | 데이터를 보내는 애플리케이션이 사용하는 포트를 식별 |
Source Port Number | 송신자의 포트 번호 | |
Destination Port | 수신자의 포트 번호 | 데이터를 받는 애플리케이션이 사용하는 포트를 식별 |
Destination Port Number | 수신자의 포트 번호 | |
Sequence Number | 송신자가 보내는 데이터의 시작 바이트 숫자 | TCP 세그먼트의 순서를 지정하여 데이터의 정합성 유지 |
Acknowledgment Number | 송신자가 수신자로부터 받은 데이터 바이트의 다음 바이트 숫자 | 데이터가 정상적으로 수신되었음을 확인하고 다음에 수신해야 할 바이트를 지정 |
Data Offset (Header Length) | TCP 헤더의 길이를 4바이트 단위로 표시 | TCP 헤더의 끝과 데이터의 시작을 구분 |
TCP Flags | 다양한 제어 플래그들 (URG, ACK, PSH, RST, SYN, FIN) | TCP 연결 설정, 데이터 전송 및 종료 과정에서 중요한 역할 수행 |
URG (Urgent) | Urgent 포인터가 유효한지 확인 | 긴급 데이터를 처리 |
ACK (Acknowledgment) | Acknowledgment 번호 필드가 유효함을 나타냄 | 데이터를 확인 및 다음에 수신할 바이트 지정 |
PSH (Push) | 송신자가 해당 데이터가 즉시 소비되기를 원함 | 데이터를 즉시 처리 |
RST (Reset) | 송신자가 비정상적인 세션 연결을 끊고자 할 때 사용 | 비정상적인 세션 연결 끊기 |
SYN (Synchronize) | 연결 설정 시 사용, 초기 Sequence 번호 설정 | 연결 설정 및 데이터 전송 시작 |
FIN (Finish) | TCP 연결을 정상적으로 종료할 때 사용 | 연결 종료 |
Window Size | 수신 가능한 Receive 윈도우 버퍼의 크기 | 송신자가 수신자의 버퍼 오버플로우를 방지하기 위해 데이터를 얼마나 보낼 수 있는지 지정 |
Checksum | 세그먼트의 데이터가 손상되지 않았는지 검증 | 데이터 전송 중 오류를 감지하여 무결성 보장 |
2. UDP : 데이터 전송 전에 연결을 설정하지 않는 비연결성 서비스를 제공하며 전송 속도는 빠르지만 신뢰성이 없다.
5) 세션 계층
: 송수신 측 간의 관련성을 유지하고 대화제어를 담당
: 대화 구성 및 동기 제어, 데이터 교환 관리 기능
: 메세지
6) 표현계층
: 응용 계층으로부터 받은 데이터응 세션 계층에 보내기 전에 통신에 적당한 형태로 변환하고, 세션 계층에서 받은 데이터는 응용 계층에 맞게 변환하는 기능
: 메세지
7) 응용계층
: 사용자가 OSI 환경에 접근할 수 있도록 서비스 제공
: 응용 프로세스 간의 정보 교환, 전자 사서함, 파일 전송, 가상 터미널 등의 서비스 제공
: 메세지
키의 종류
1) 후보키 (Candidate Key)
: 속성들 중에서 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분집합
: 유일성과 최소성
2) 기본키 (Primary Key)
: 후보키 중에서 특별히 선정된 주키
중복된 값은 안되고 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성이고 null 값 안돼
3) 대체키 (Alternate Key)
: 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키
4) 슈퍼키 (Super Key)
: 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키
: 유일성
5) 외래키 (Foreign Key)
: 다른 릴레이션의 기본키를 참조하는 속성, 속성의 집합
: 유일성 만족 안해도 돼
데이터베이스
외부 스키마
: 사용자나 응용 프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적인 구조
내부 스키마
: 물리적 저장장치의 입장에서 본 데이터베이스 구조로, 실제로 저장될 레코드의 형식, 저장 데이터 항목의 표현 방법
내부 레코트의 물리적 순서 등을 타나낸다.
개념 스키마
: 데이터베이스의 전체적인 논리적 구조이며, 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로 하나만 존재.
무결성
: 데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제 값이 일치하는 정확성
무결성 제약 조건
: 데이터베이스에 들어 있는 데이터의 정확성을 보장하기 위해 부정확한 자료가 데이터 베이스 내에 저장되는 것을 방지하기 위하 제약 조건
1) 개체 무결성 제약 조건 : 기본 테이블의 기본키를 구설하는 어떤 속성도 Null 값이나 중복값을 가질 수 없다.
2) 도메인 무결성 제약 조건: 주어진 속성 값이 정의된 도메인에 속한 값이어야 한다는 규정이다.
3) 참조 무결성 제약 조건 : 외래키 값은 Null이나 참조 릴레이션의 기본키 값과 동일해야 함.
정규화
: 함수적 종속성 등의 종속성 이론을 이용하여 잘못 설계된 관계형 스키마를 더 작은 속성의 세트로 쪼개어 바람직한 스키마로 만들어 가는 과정
0) 비정규 릴레이션
1) 1NF : 도메인 원자값
2) 2NF : 부분적 함수 종속 제거
3) 3NF : 이행적 함수 종속 제거
4) BCNF : 결정자이면서 후보키가 아닌 것 제거
5) 4NF : 자치 종속 제거
6) 5NF : 조인 종속성 이용
반정규화
: 시스템의 성능 향상, 개발 및 운영의 편의성 등을 위해 정규화된 데이터 모델을 통합, 중복, 분리하는 과정으로,
의도적으로 정규화 원칙을 위배하는 행위
이상
: 정규화를 거치지 않으면 데이터베이스 내에 데이터들이 불필요하게 중복되어 릴레이션 조작 시 예기치 못한 곤란한 현상이 발생
1) 삽입 이상
2) 삭제 이상
3) 갱신 이상
인덱스
: 데이터 레코드를 빠르게 접근하기 위해 <키 값, 포인터> 쌍으로 구성하는 데이터 구조
뷰
: 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된 이름을 가지는 가상 테이블
파티션
: 대용향의 테이블이나 인데스를 작은 논리적 단위인 파티션으로 나누는 것
관계대수
: 관계형 데이터베이스에서 원하는 정보와 그정보를 검색하기 위해서 어떻게 유도하는 가를 기술하는 절차적인 언어
관계해석
: 관계 데이터의 연산을 표현하는 방법으로 관계 데이터 모델의 제안자인 코드가 수학의 Predicate Calculus에 기반을 두고 관계 데이터베이스를 위해 제안
1) 운영 (Operaional Data)
: 조직의 고유한 업무를 수행하는데 반드시 필요한 자료
2) 공용 (Shared Data)
: 여러 응용 시스템들이 공동으로 소유하고 유지하는 자료
3) 저장된 (Stored Data)
: 컴퓨터가 접근 할 수 있는 저장 매체에서 저장된 자료
4) 통합된(Integrated Data)
: 자효의 중목을 배제한 데이터의 모임
스케줄링
1. 비선점 스케줄링
1) FCFS = FIFO : 준비 상태 큐에 도착한 순서에 따라 차례로 CPU 할당
2) SJF : 준비 상태 큐에서 기다리고 있는 프로세스 들 중에서 실행 시간이 가장 짧은 프로세스에게 먼저 CPU 할당
3) HRN : 실행시간이 긴 프로세스에 불리한 SJF 기법을 보완한 것으로 대기 시간과 서비스 시간을 이용한 기법
2, 선점 스케줄링
1) SRT : SJF 기범을 선점 형태로 변경한 기법
2) RR: 시분할 시스템을 위해 고완된 방식으로 FCFS 알고리즘을 선점 형태로 변형한 기법
3) MQ: 프로세스를 특정 그룹으로 분류한 경우 그룹에 따라 각기 다른 준비 상태 큐를 사용
4) MFQ: 특정 그룹의 준비상태 큐에 들어간 프로세스가 다른 중비 상태 큐로 이동할 수 없는 다단계 큐 기법을 준비 상태 큐 사이를 이동할 수 있도록 개선한 기법
트랜잭션
특징
1) 원자성 (Atomicity) : 트랜잭션의 연산은 데이터 베이스에 모두 반영되도록 완료 아니면 전혀 반영되지 않도록 복구 => 회복
2) 일관성 (Consistency) : 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환 =>
무결성 제약조건, 동시성 제어
3) 고립성 (Isolation) : 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우 어느 하나의 트핸잭션 실행 중에 다른 트랙재션의 연산이 못 끼어든다. => 동시성 제어
4) 지속성 (Durability) : 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 함 =>
회복
DDL
DB 구축하거나 수정할 목적
create, drop, alter
DCL
데이터 관리 목적
commit: 명령에 의해 수행된 결과를 실제 물리적 디스크로 저장하고 데이터 베이스 조작 작업을 정상적으로 완료
rollback: 데이터베이스 조작 작업이 비정상적으로 종료되었을 때 원래 상태로 복구
grank: 데이터 베이스 사용자에게 사용 권한을 부여
revoke: 데이터베이스 사용자의 사용 권한을 취소함
DML
데이터베이스 사용자가 저장된 데이터를 실질적으로 관리하는데 사용하는 언어
insert, update, delete, select
트랜잭션관리자
데이터베이스 사용자가 저장된 데이터를 실질적으로 관리하는데 사용하는 언어
IPv6
IPv4 주소 부족 문제를 해결하기 위해 개발
1) 애니캐스트
2) 유니캐스트
3) 멀티캐스트
전송 속도가 빠르고
IPv4
운용체제 운용 기법
1) 다중 프로그램(Multi programming_ : 하나의 주기억 장치에 2개 이상의 프로그램을 기억시켜놓고 하나의 CPU와 대화하면서 동시에 처리
2) 다중 처리(Multi- Processing): 여러 개의 CPU와 하나의 주기억 장치를 이용하여 하나 또는 여러 개의 프로그램을 동시에 처리
3) 일괄 처리(Batch Processing): 일정량 또는 일정 기간 동안 데이터를 모아서 한꺼번에 처리하는 방식
4) 시분할(Time Sharing) : 컴퓨터가 사용자들의 프로그램을 번갈아 가며 처리해줌으로써 각 사용자에게 독립된 컴퓨터를 사용하는 느낌을 주는 방식
순수 관계 연산자 | Select | 조건에 맞는 튜플(행)을 선택 릴레이션에 존재하는 튜플 중에서 선택 조건을 만족하는 튜플의 부분집합을 구하여 새로운 릴레이션을 만드는 연산 |
σ(condition)(Relation) |
Project | 특정 속성(열)만 선택 주어진 릴레이션에서 속성 리스트에 제시된 속성 값만을 추출하여 새로운 릴레이션을 만드는 연산 |
π(attribute1, attribute2, ...)(Relation) | |
Join | 두 개의 관계를 조건에 따라 결합 | Relation1 ⨝ Relation2 | |
Theta Join | 임의의 조건에 따라 두 관계를 결합 | Relation1 ⨝θ Relation2 | |
Equi Join | 등가 조건에 따라 두 관계를 결합 | Relation1 ⨝ (Relation1.attr = Relation2.attr) Relation2 | |
Natural Join | 동일한 속성을 기준으로 두 관계를 결합, 중복 속성은 제거 | Relation1 * Relation2 | |
Division | 첫 번째 관계의 속성 값 중 두 번째 관계의 모든 튜플에 대해 공통적으로 나타나는 값 반환 | Relation1 ÷ Relation2 | |
일반 집합 연산자 | Union | 두 관계의 합집합을 반환 | Relation1 ∪ Relation2 |
Intersection | 두 관계의 교집합을 반환 두 릴레이션에 동시에 존재하는 튜플만을 모아 새로운 릴레이션을 만드는 연산 |
Relation1 ∩ Relation2 | |
Difference | 첫 번째 관계에서 두 번째 관계를 뺀 차집합을 반환 릴레이션 A에는 속하지만, 릴레이션 B에는 속하지 않는 튜플만 모아 새로운 릴레이션을 만드는 연산 |
Relation1 - Relation2 | |
Cartesian Product | 두 관계의 모든 튜플을 조합 | Relation1 × Relation2 |
네트워크 ,.
교착 상태
: 상호 배제에 의해 나타나는 문제점으로 둘 이상의 프로세스들이 자원을 점유한 상태에서 서로 다른 프로세스가 점유하고 있는 자원을 요구하면 무한정 기다리는 현상
교착 상태 발생의 필요 충분 조건
1) 상호 배제 (Mutual Exclusion): 한 번에 한 개의 프로스세이 공유 자원을 해야함.
2) 점유와 대기(Hold and Wait): 최소 하나의 자원을 점유하고 있으면 다른 프로세스에 할당되어 사용되고 있는 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 함.
3) 환형 대기 (Circular Wait): 다른 프로세스에 할당된 자원은 사용이 끝날 때까지 강제로 뺏을 수 있음.
4) 비선점(Non-preemption): 공유 자원과 공우 자원을 사용하기 위해 대기하는 프로세스들이 원형으로 구성되어 있어 자신에게 할당된 자원을 점유하면서 앞이나 뒤에 있는 프로세스의 자원을 요구해야함
교착 상태 해결 방법
1) 예방 : 교착 상태가 발생하지 않도록 사전에 시스템을 제어하는 방법
2) 회피 : 교착 상태가 발생할 가능성을 배제하지 않고 교착 상태가 발생하면 적절히 피해나가는 방법
3) 발견 : 시스템에 교착 상태가 발생했는지 점검하고 교착상태에 잇는 프로세스와 자원을 발견하는것
4) 회복: 교착 상태를 일으킨 프로세스를 종료하거나 교착상태의 프로세스에 할당된 자원을 선점하여 프로세스나 자원을 회복 하는것
IDE : 프로그램 개발에 관련된 모든 절차를 하나의 프로그램 안에서 처리하는 환경을 의미하며 코드 에디터, 컴파일러, 디버깅 도구 등을 하나로 묶어 대화식으로 수행되는 인터페이스 환경
DFD: 각 기능을 분할하여 표현한 구조도/ 자료와 정보가 시스템의 구성요소들 사이를 어떻게 흐르는지 그림으로 표현한 양식
DD: 자료의 의미나 자료의 단위 및 값에 대한 사항 정의 도구
STD: 어떤 상태에서 다른 상태로 변경되는 과정과 그 과전의 프로세스를 명세화