본문 바로가기
컴퓨터사이언스(CS)

정보처리기사 실기 정리 - 공부내용, 후기

반응형

정보처리기사 실기 공부하면서 나올 수 도 있겠다 생각한 내용과 헷갈리는 내용을 정리한 글입니다. 중요한 내용과 중요하지 않은 내용들이 섞여 있어서 실기 공부하고 시간남으시는 분들은 한번 읽어보면 시험에 도움이 될 수 도 있습니다.

 

클래스 다이어그램 설명 

클래스 다이어그램의 구성요소

클래스 이름(Class Name)

속성(Attribute)

연산(Operation)

접근 제어자(접근 제한자)

 

- 클래스 내부 접근만 허용(private)

+ 클래스 외부 접근을 허용(public)

# 동일 패키지, 파생 클래스에서 접근 가능(protected)

~ 동일 패키지 클래스에서 접근 가능(default)

 

프로세스 작업 방법

선점 : SMMR(SRT, MLQ, MLFQ, Round-Robin)
비선점 : 우기-HFS(우선순위, 기한부, HRN, FCFS, SJF)
선점은 뺏음 비선점은 못뺏어

 

논리적 데이터 모델링

관계 데이터 모델 : 2차원 테이블로 형태로 구성 / 1:1, 1:N, N:M 의 관계를 표현

계층 데이터 모델 : 트리구조, 상하관계(부모-자식)관계 표현 / 1:N 관계만 허용

네트워크 데이터 모델 : 그래프형태로 구성 / N:M 관계만 허용

 

형상관리

식통감기

형상 식별 -> 형상 통제 -> 형상 감사 -> 형상 기록

분산 저장(GIT)

공유폴더 (RCS SCCS)

클라이언트 서버 (SVN, CVS)

 

디지털 저작권 관리 구성요소

- Clearing House (클리어링 하우스) : 저작권에 대한 사용권한, 라이선스 발급, 사용량에 따른 결제 관리 등을 수행하는 곳

- Contents Provider (콘텐츠 제공자) : 콘텐츠를 제공하는 저작권자

- Packager (패키저) : 콘텐츠를 메타 데이터와 함께 배포 가능한 형태로 묶어 암호화 하는 프로그램

- Contents Distributor (콘텐츠 분배자) : 암호화된 콘텐츠를 유통하는 곳이나 사람

- Customer (콘텐츠 소비자) : 콘텐츠를 구매해서 사용하는 주체

- DRM Controller (DRM 컨트롤러) : 배포된 콘텐츠의 이용권한을 통제하는 프로그램

- Security Container (보안 컨테이너) : 콘텐츠 원본을 안전하게 유통하기 위한 전자적 보안장치

 

반 정규화 수행 방법

테이블 통합

1:1 1:M 관계를 통합하여 조인 횟수를 줄여 성능 향상

슈퍼타입/서브타입 테이블 통합하여 성능 향상

테이블 분할

테이블을 수직 또는 수평으로 분할하여 성능 향상

- 수평 분할 : 테이블에 레코드가 많은 경우 레코드를 기준으로 테이블 분할

- 수직 분할 : 테이블에 컬럼이 많은 경우 컬럼을 기준으로 테이블 분할

중복 테이블 추가

- 집계 테이블 추가 : 집계 데이터를 위한 테이블 생성 / 각 원본 데이블에 트리거 설정하여

사용하는 기법

- 진행 테이블 추가 : 이력 관리 등을 목적으로 테이블 추가. 적절한 데이터양의 유지와 

용도를 높이기 위해 기본키 적절히 설정

 

IPC 설명

Ipc : 프로세스간 데이터 주고받기 위한 통신기술 

소켓: 클라이언트와 서버 사이 통신 기능

세마포어 : 프로세스간 동기 맞추는 기능

메세지 큐 : 메세지, 패킷단위로 동작, 프로세스간 통신

공유메모리: 한프로세스 일부분을 다른 프로세스와 공유

PCB : 프로세스 상태 저장소

릴리즈노트

릴리즈 노트 : 최종 사용자인 고객에게 개발 과정에서 정리된 상세 서비스 정보를 포함하여 제품의 수정, 변경, 개선하는 일련의 작업들에 대한 정보를 제공하는 문서

릴리즈 노트 작성 항목 : 헤개목이 재수사소 노면연(헤더 / 개요 / 목적 / 이슈 요약 / 재현 항목 / 수정 개선 내용 / 사용자 영향도 / 소프트웨어 지원 영향도 / 노트 / 면책 조항 / 연락 정보 )
헤더 : 작성 항목 중 문서 이름, 제품 이름, 버전 번호, 날짜, 참고 날짜, 버전 등의 정보가 들어가 있는 작성 항목

 

패킷 공격

PoD: ICMP 패킷 아주 크게 전송, 단편화, 수신 측 재조합 과정 부하 발생
Land Attack 출발지 주소, 목적지 주소 같은 주소로. 수신자 자기 자신에게 응답. 

Tear Drop: IP Fragment Offset 값 서로 중첩 조작. 수신 측 재조합 과정에서 오류.
Smurfing: 출발지 주소 -> 공격 IP로 설정. ICMP 패킷 직접 브로드 캐스팅.

 

보안 3대 요소<기무가>

기밀성: 인가되지 않은 접근에 정보 공개 차단

무결성; 정당한 방법이 아니면 데이터 변경될 수 없음

가용성: 권한을 가진 사용자 서비스 지속 사용 보장.

TCP Wrapper

외부 컴퓨터 접속, 접속 인가 여부 확인.

접속 허용 또는 접속 거부.

 

라우팅 프로토콜 

RIP  : 거리  

OSPF : 링크

BGP : 경로

 

접근 통제

Subject(주체): 자원에 대한 접근 요청

Object (객체): 접근 대상이 될 수 있는 아이템

Access(접근): 주체와 객체 사이의 정보 흐름

접근 통제 절차

Identification : 식별(1단계)

Authentication: 인증(2단계)

Authorization: 승인 혹은 인가(3단계)

Accountability: 책임추적성(4단계)

강제적 접근통제(MAC, Mandatory Access Control): 주체의 권한에 근거 접근제한

임의적 접근통제(DAC, Discretionary Access Control): 개인(IBP) 그룹(GBP)의 Identity 근거 접근제어

역할기반 접근통제(RBAC, Role Based Access Control): 조직 내 역할기반 자원 접근 허용

 

암호화 키 

암호 알고리즘 방식 : 대비해
대칭키 / 비대칭키 / 해시

대칭키 : 암호화 복호화에 같은 키를 쓰는 알고리즘 (블록 / 스트림으로 나뉨)
장점 : 계산 속도가 빠르다
단점 : 키 분배 및 관리의 어려움 / 기밀성만 보장
종류 : DES, SEED, AES, ARIA

비대칭키(=공개키 암호방식) : 암호화키와 복호화키가 다른 알고리즘
장점 : 관리해야 할 키 개수가 적다
단점 : 계산 속도가 느리다
종류 : 디피-헬만. RSA, ECC. elgamel

해시 암호 방식(일방향 암호 방식) : 임의 길이 -> 고정된 길이의 암호문을 출력하는 방식
MAC (Message Authentication Code) : 키를 사용하는 메시지 인증 코드 / 메세지 무결성, 송신자의 인증 보장
종류 : HMAC, NMAC
MDC (Modification Detection Code) : 키를 사용하지 않는 변경 감지 코드 / 메세지 무결성 보장
종류 : MD5, SHA

대칭키 암호화 알고리즘 종류
DES : 1975 / NIST / 64bit
SEED :1999 / KISA / 128bit
AES : 2001 / NIST
ARIA : 2004 / 국정원+산학연구협회 / 학계 연구기관 정부 영문 앞글자 구성

비대칭키 암호화 알고리즘 종류
디피 헬만 - 최초 비밀키 교환 프로토콜 / 키 분배 방식 연구의 기본
RSA - 소인수분해하는 수학적 알고리즘 (3명 MIT 교수)
ECC - 타원곡선 군
엘가멜 - 전자서명 + 데이터 암복호화 함께 사용

해시 암호화 알고리즘 종류
MD5 : MD4개선 , 프로그램 파일 무결성 검사 시 이용
SHA-1 : 미 정부 표준 지정
SHA-256, 384, 512 : AES에 대응하도록 길이 늘린 알고리즘
HAS-160 : KCDSA를 위하여 개발된 해시함수 (KCDSA=국내표준서명알고리즘)

 

IDEA :  Xuejia Lai와 James Messey 가 만든 알고리즘으로 PES(Proposed Encryption Standard)에서 IPES(Improved PES)로 변경되었다가, 1991년에 제작된 블록 암호 알고리즘으로 현재 국제 데이터 암호화 알고리즘으로 사용되고 있다. 64비트 블록을 128비트의 key를 이용하여 8개의 라운드로 구성되어 있다.

SKIPJACK : 미국의 NSA에서 개발한 Clipper 칩에 내장되는 블록 알고리즘이다. 전화기와 같은 음성을 암호화 하는데 주로 사용되며 64비트 입출력에 80비트의 키 총 32라운드를 가진다.

 

 

데이터 모델 구성요소

연산 : 데이터베이스에 저장된 실제 데이터를 처리하는 작업

구조 : 데이터베이스에 논리적으로 표현될 대상으로서의 개체 타입과 개체 타입 간의 관계

제약 조건 : 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약 조건, 데이터 무결성 유지를 위한 DB의 보편적 방법


SW아키텍처 시스템의 품질속성

가용성 (Availability) 시스템이 필요할 때 문제없이 정상적으로 서비스를 제공할 수 있는 성질
변경 용이성 (Modifiability) 특정 변경 요구사항이 시스템에 반영될 수 있는 시스템의 성질
성능 (Performance) 주로 응답 시간과 관련이 있는 속성으로 사용자의 요청이 있을 때 시스템이 적절하고 신속하게 처리할 수 있는 능력
보안성 (Security) 올바른 사용자에게 서비스가 제공되는 동안 승인되지 않은 불법적인 사용에 대응하는 시스템 능력
사용성 (Usability) 사용자가 원하는 작업을 수행할 때 시스템을 쉽게 사용하고, 고민 없이 사용할 수 있는 성질
시험용이성 (Testability) 소프트웨어가 용이하게 시험될 수 있는 소프트웨어의 성질
확장성 (Scalability) 시스템의 용량, 처리 능력 등을 확장했을 때 이를 효과적으로 활용할 수 있도록 구현하는 성질
가사확보성시경 (가용성 사용성 확장성 보안성 성능 시험용이성 변경 용이성)

 

회전완수 (회피 전가 완화 수용)

위험 회피 - 발생할 위험을 감내할 수 없으므로 위험의 근원이 되는 자산을 제거하거나 해당 업무를 수행하지 않는 방안
위험 전가 - 위험에 대한 책임을 제삼자와 공유하는 방안으로 보험, 다른 기관과 계약(보안관제) 등이 있음
위험 완화(감소) - 위험이 발생했을 때 조직에 피해가 되는 결과를 감소시키는 방안으로 백업, 프로세스 확립, 이중화, 재난 복구 계발 계획 등이 있음 - 비용효과 분석 후 자산의 취약점이 실제로 이용될 수 있는 가능성을 낮추는 통제수단을 구현하는 방안으로 기술적 통제(방화벽, 액세스 토큰 설치), 관리적 통제(교육, 비밀번호 정책 설정)를 포함할 수 있음
위험 수용 - 현재의 위험을 받아들이고 잠재적 손실 비용을 감수하는 방법 - 과도한 비용 또는 시간이 들 경우 위험을 수용하고 위험에 대한 손실을 책임져야 함

 

보안 관련 용어

시큐어 코딩 : 소프트웨어 개발 과정에서 개발자의 실수, 논리적 오류 등으로 인해 소스 코드 등에 내포될 수 있는 잠재적인 보안 취약점을 최소화하고, 안전한 소프트웨어를 개발하기 위한 일련의 보안 활동이다.

CVE : 미국 비 영리회사인 MITRE 사에서 공개적으로 알려진 소프트웨어의 보안취약점을 표준화한 식별자 목록이다. === 취약점 ,보안약점은 CWE

OWASP : 은/는 오픈소스 웹 애플리케이션 보안 프로젝트로서 주로 웹을 통한 정보 유출, 악성 파일 및 스크립트, 보안 취약점 등을 연구하는 기관이다.

 

비용산정

COCOMO : 보헴 LOC 기반 5만이하 조직형 30만 이하 반분리형 30만 이상 임베디드

Putnam : Rayleigh-norden 곡선의 노력분포도

LOC : 일관치(코드가장적은거) + 4중간치 + p(코드가장긴거)/6

Man Month : LOC/ 프로그래머의 월간생산성

기능점수(FP) : 총 기능점수 * [0.65 +(0.1 * 총 영향소)]

 

변수명 네이밍

Pascal Casing(파스칼 케이싱) : 대문자로 시작하는 변수명을 사용

-> 복잡어일 경우 중간에 시작하는 새로운 단어는 대문자로 적는다.

-> HumanResource

 

Camel Casing(카멜 케이싱) : 첫번째 문자는 소문자로 시작하고 복잡어일 경우 파스칼 케이싱과 동일

-> getName

 

GNU Naming(snake) : 모두 소문자를 사용하고 복합어 사이를 '_'를 사용하여 연결

-> human_resource

 

Hungarian notation(헝가리안 표기법) : 첫글자 g는 전역변수m은 멤버변수 의미

-> 전역이나 멤버변수의 경우 그 다음에 _를 적는다.

-> n과 i는 자연수, i는 주로 인덱스, n은 카운트 목적에 주로 사용

-> g_namen_Cnt

 

constant : 모든 문자를 대문자로 사용하는 GNU Naming Convention의 형태를 사용

-> DEFAULT_DEPARTMENT_CODE

 

소프트웨어 아키텍처 패턴 종류

계층화 패턴 / 클라이언트-서버 패턴 / 마스터-슬레이브 패턴 / 파이프-필터 패턴 / 브로커 패턴 / MVC 패턴

마스터-슬레이브는 빅데이터에서 하둡에 사용


연관관계

Association (연관 관계): 클래스(사물)가 서로 개념적으로 연결된 관계 / 사람->집

Aggregation (집합 관계) : 하나의 객체에 여러개의 독립적인 객체들이 구성 / 컴퓨터◇- 프린터

Composition (복합(포함) 관계) : 영구적, 집합 관계 보다 더 강한 관계 ex)엔진과 피스톤, 플러그/ 문◆- 키

Generalization (일반화 관계 /상속관계) : 하나의 사물이 다른 사물에 비해 더 일반적이거나 구체적인 관계 / 커피◁-아메리카노

Dependency (의존관계) : 서로에게 영향을 주는 짧은 시간 동안만 유지하는 관계 / 등급 ---->할인율

Realiztion (실체화관계) : 추상클래스나 인터페이스 상속 / 비행기----▷날 수 있다

Abstract class (추상클래스) 객체 인스턴스 생성x, 유사 클래스의 공통된 특징 정의

Interface(인터페이스): 기능만 모아놓은 클래스, 추상메서드와 상수만을 포함

 

웹 서비스 유형

SOAP : http, https, smtp등을 사용하여 xml 기반의 메세지를 네트워크 상태에서 교환하는 프로토콜

WSDL : 웹서비스 명, 제공위치, 메시지 포멧, 프로토콜 정보등 웹서비스에 대한 상세 정보가 기술된 XML 형식으로 구현되어 있는 언어

UDDI : 웹 서비스에 대한 정보인 WDSL을 등록하고 검색하기 위한 저장소로 공개적으로 접근, 검색이 가능한 레지스트

 

인터페이스 구현 검증 도구 종류

xUnit : Java, C++, .Net와 같이 다양한 언어를 지원하는 단위 테스트 프레임워크

STAF : 서비스 호출 및 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임 워크, 테스트 대상 분산 환경에 데몬을 사용

FitNesse : 웹 기반 테스트케이스 설계, 실행, 결과 확인 등을 지원하는 테스트 프레임워크

NTAF : FitNesse의 장점인 협업과 STAF의 장점인 재사용 및 확장성을 통합한 NHN의 테스트 자동화 프레임워크

Selenium : 다양한 브라우저 및 개발 언어를 지원하는 웹 어플리케이션 테스트 프레임 워크

watir : Rudy를 사용하는 애플리케이션 테스트 프레임워크

 

인터페이스 구현 감시 도구 종류

스카우터 : 애플리케이션 및 OS 자원에 대한 모니터링 기능을 제공하는 APM 소프트웨어

제니퍼 : 애플리케이션의 개발부터 테스트, 오픈, 운영, 안정화까지 전 단계에 걸쳐 성능을 모니터링하고 분석해주는 APM 소프트웨어

 

비지니스 연속성 보장

BIA(Business Impact Analysis) : 장애나 재해로 인해 운영상의 주요 손실을 볼 것을 가정하여 시간 흐름에 따른 영향도 및 손실평가를 조사하는 BCP를 구축하기 위한 분석이다.

MTD(Maximum Tolerable Downtime) : 조직의 최고 경영층이 주요 지원 서비스의 중단으로 인한 업무의 영향에 대해 허용할 수 있는 최대의 시간을 의미한다.

 

웹스크립트 보안공격

① XSS : XSS는 공격자가 취약한 웹 사이트에 악의적인 스크립트를 삽입하여 사용자가 실행(자신의 PC에서)하도록 유도한 후에 사용자의 정보를 탈취하는 공격기법이다.

② CSRF : CSRF는 공격자가 웹 서버의 취약점을 이용하여 악성 스크립트 구문을 삽입하고, 정상적인 사용자로 하여금 자신의 의지와는 무관하게 게시판 설정 변경, 회원 정보 변경 등 공격자가 의도한 행위를 특정 웹사이트에 요청하게 하는 공격이다.

 

* XSS와 CSRF의 차이점은

- XSS는 악성코드가 클라이언트 PC에서 실행되서 클라이언트 PC의 정보(쿠키 정보 등)가 공격자에게 탈취되는 것이고,

- CSRF는 공격자의 악의적인 요청이 클라이언트로 하여금 희생자 서버에서 실행되게 되는 공격입니다.

(희생자 은행 사이트에 피해자의 계좌에서 공격자의 계좌로 돈을 이체시키는 행위를 피해자가 나도 모르게 하게됩니다.)

(웹서버, 사용자 모두 피해를 입습니다.)

 

서버와 저장장치 연결

1.DAS(Direct Attached Storage) - 하드 디스크와 같은 데이터 저장 장치를 호스트 버스 어댑터에 직접 연결하는 방식이다.

2.NAS(Natwork Attached storage) - 저장 장치와 서버를 직접 연결하는 것이 아니라 네트워크를 통해 스토리지에 접속하고, 파일 단위로 관리하는 방식이다.

3.SAN(Storage Area Network)- 서버와 스토리지를 저장 장치 전용 네트워크로 상호 구성하여 고가용성, 고성능, 융통성, 확장성을 보장하고 데이터를 블록(Block) 단위로 관리하는 기술

 

대입 공격

크리덴셜 스터핑(Credential Stuffing) : 이미 유출된 아이디 패스워드를 이용해 다른 웹 사이트에 무차별적으로 대입하는 것

무차별 크래킹. (Brute Force Attack) : 아무거나 대입해서 패스워드 뚫기

익스플로잇(Exploit) : 보안 취약점을 이용해서 의도적으로 악의적인 스크립트, 프로그램 실행하도록 하는 것.

 

애플리케이션 성능 개선

처리율(throughput):통신에서 네트워크 상의 어떤 노드나 터미널로부터 또 다른 터미널로 전달되는 단위 시간당 디지털 데이터 전송으로 처리하는 양

응답 시간(response time):공학에서 시스템이나 실행단위에 입력이 주어지고 나서 반응하기까지 걸린 시간

 

분석도구

PMD:소스코드를 분석하여 프로그램의 부적절한 부분을 찾아내고 성능을 높이도록 도와주는 정적분석 도구

Cppcheck: C, C++ 프로그래밍 언어용 정적 코드 분석 도구

Checkstyle: Java 소스 코드가 지정된 코딩 규칙을 준수하는지 확인하기 위해 소프트웨어 개발에 사용되는 정적 코드 분석 도구

Valgrind : 소스 코드 품질분석 도구 중 동적 분석 도구로 자동화된 메모리 및 스레드 결함 발견 분석 도구이다.

 

UI 설계원칙

직유학유

직관성 : 누구나 쉽게 이해하고 사용 가능해야 함

유효성 : 정확하고 완벽하게 사용자의 목표가 달성될 수 있도록 제작

학습성 : 모두가 쉽게 사용하고 배울 수 있어야함 

유연성 : 사용자의 인터랙션을 최대한 포용

 

버퍼오버플로우 대안 방안

스택 가드 : 카나리를 복귀주소와 변수 사이에 삽입 한 후 카나리 값이 변하게 되면 복귀주소를 호출하지 안흔ㄴ 것

스택 쉴드 : 복귀주소를 Global RET 라는 특수 스택에 저장 한 후 스택의 RET 값과 비교해서 다를 경우 프로그램을 중단

ASLR : 메모리 주소 공간을 난수화하고 실행마다 메모리 주소를 변경시키는 방법

 

SQL

CASECADE : Student 테이블 삭제시, 이 테이블을 참조하는 다른 테이블 또한 삭제 (참조 무결성)

RESTRICT : Student 테이블 삭제시, 다른 개체가 참조중일 경우 DROP 취소

비교 연산자 ALL, IN, ANY (ALL은 모두 만족 IN은 있는거 만족, ANY는 하나라도 맞으면 TRUE)

COUNT(컬럼명)을 사용하면 NULL 값은 제외하고 COUNT 합니다. COUNT(*)를 사용하면 NULL도 포함하여 전부 COUNT 합니다.

ON : JOIN 을 하기 전 필터링을 한다 (=ON 조건으로 필터링이 된 레코들간 JOIN이 이뤄진다)

WHERE : JOIN 을 한 후 필터링을 한다 (=JOIN을 한 결과에서 WHERE 조건절로 필터링이 이뤄진다)

 

2023 1회  정처기 실기 후기

위에 적은 내용은 정처기 실기 공부하면서 나올 수도 있겠다 생각해서 정리했었는데 실제로 나온 문제는 없었습니다.

그래도 시험 볼 때 어렵다고 느끼지 않고 아직 결과가 나오지는 않았지만 합격했다고 생각이 드는데 시험보면서 느낀 점과 또 나올 수 도 있겠다 생각한 내용을 아래에 정리하겠습니다.

 

1. 코드 문제

코드 문제는 자바와 C언어가 나왔었는데 포인터에 대한 이해가 있고 자바 기본 문법을 알고 있으면 문제를 푸는데 지장이 없을 것 같습니다.

하지만 static 동작, for 문에 중괄호가 없는 경우, 상속 시 호출 동작과 같은 헷갈릴 수 있는 내용을 잘 이해하면 좋을 거 같습니다.

 

2. 디자인 패턴

디자인패턴 문제는 문제은행에서도 매 회마다 출제되어서 또 나올 가능성이 많습니다. 디자인 패턴은 실제 코드 작성하면서도 사용하는 경우가 있습니다. 예를 들어 빌더 패턴이나 싱글톤은 자바를 사용하다보면 많이 쓰는데 자주 사용하는 디자인 패턴 말고도 다른 패턴을 정확하게 알고 있으면 좋다고 생각이 들었습니다.

아래에 사이트에서 디자인패턴을 공부하면 이해에 도움이 될 수 있습니다.

https://refactoring.guru/ko/design-patterns

 

디자인 패턴들

 

refactoring.guru

 

3. 네트워크 지식 7계층

이번 시험에서는 7 계층 내용중 Data Link에 해당하는 프로토콜 문제가 나왔습니다. 7계층 문제는 느낌상 출제될만한 내용이 많다고 느껴졌고 7계층이 어떤게 있고 사용하는 프로토콜이나 알고리즘에 대해 알 고 있으면 좋을 거 같습니다.

 

4.SQL

SQL은 조인 문제는 나오지 않았는데 기본적인 DML 과 DDL을 이해하고 있으면 쉽게 문제를 풀 수 있습니다.

 

5. 기본 프로토콜 포토 번호

프로토콜을 외울 때 포트 번호를 같이 알 고 있으면 도움이 될 가능성이 큰 거 같습니다. 실제로 AWS을 이용하면서 SSH를 사용한 적이 있었는데 이번 시험에 운이 좋게 SSH에 대한 내용과 SSH에 포트번호가 나와 문제 푸는데 도움이 되었습니다.