본문 바로가기
Certificate/정보처리기사

[정보처리기사] 2021년 1회차 실기

by HJ0216 2023. 9. 6.

정보처리기사 실기

1. OSI 7 Layer Model

  1. 물리 계층(Physical Layer)
    • 0과 1의 비트 정보를 회선에 보내기 위한 전기적 신호 변환
    • 단위: 비트
    • 주요 장비: 허브, 리피터
  2. 데이터 링크 계층(Data Link Layer)
    • 인접 노드 간 프레임 전송, 신뢰성 있는 정보 전달
    • 단위: 프레임
    • 주요 장비: 스위치, 브릿지
  3. 네트워크 계층(Network Layer)
    • 단말기 간 데이터 전송을 위한 최적화된 경로 제공
    • 단위: 패킷
    • 주요 장비: 라우터
    • 프로토콜
      • IP: 데이터 전달
      • ICMP: IP 패킷을 처리할 때 발생되는 문제를 알려주는 프로토콜
      • ARP: 논리 주소인 IP 주소 ▶ 실제적인 물리 주소인 MAC 주소로 변환
      • RARP: 실제적인 물리 주소인 MAC 주소 ▶ 논리 주소인 IP 주소로 변환
  4. 전송 계층(Transport Layer)
    • 단말기(종단)간의 연결, 신뢰성 있는 정보 전달
    • 단위: 세그먼트(TCP) / 데이터그램(UDP)
    • 프로토콜
      • TCP
        • FTP(20-데이터, 21-제어): 파일 전송
        • telnet(23): 원격지의 호스트 컴퓨터에 접속하기 위해 사용되는 인터넷 프로토콜
        • HTTP(80): 웹 서비스
        • SMTP(25): 메일 송신
        • POP3(110): 메일 수신
      • UDP
        • DHCP: IP 자동 할당
        • SNMP: 네트워크 관리
        • DNS(53): 도메인 ▶ IP 주소로 변환
  5. 세션 계층(Session Layer)
    • 송수신 간의 논리적 연결
    • 단위: 데이터
  6. 표현 계층(Presentation Layer)
    • 데이터 형식 설정, 암/복호화
    • 단위: 데이터
  7. 응용 계층(Application Layer)
    • 일반적인 응용 서비스를 수행
    • 단위: 데이터

Routing Protocol

routing_protocol

  • 정적: 관리자가 직접 라우터에 경로 설정
  • 동적: 라우터가 직접 경로 설정
  • EGP: 외부 게이트웨이 프로토콜
    • BGP: Board Gateway Protocol
  • IGP: 내부 게이트웨이 프로토콜
    • Distance Vector
      • RIP: Routing Information Protocol
        • 인접한 라우터간 일정 시간마다 상태 공유
        • 최대 홉수 15로 제한
    • Link State
      • OSPF: Open Shortest Path First (Protocol)
        • 변경된 데이터가 있을 때마다 상태 공유
        • 가장 많이 사용되는 내부 라우팅 프로토콜
        • 홉 수 제한 X

 

2. 데이터 베이스 설계 순서

요구사항 분석 → 개념적 설계 → 논리적 설계 → 물리적 설계 → 구현

데이터 모델링 3단계

  1. 개념적 설계
    • 사람이 이해할 수 있는 형태의 정보구조를 만들어가는 과정
    • ERD 생성
  2. 논리적 설계
    • 개념적 설계에서 만들어진 구조를 컴퓨터가 이해하고 처리할 수 있도록 변환하는 과정
    • 정규화
    • Transaction Interface 설계
  3. 물리적 설계
    • 실제 저장정치에 어떻게 저장할지 설계하는 단계
    • 성능 향상(인덱스, 파티션, 반정규화 등)

Index Hint

  • 쿼리 실행 시 특정 인덱스를 사용하도록 강제하는 주석
  • SELECT /*+ [힌트절] */ ... FROM ...;

 

3. 용어

  • 튜플(Tuple):
    • 개체 인스턴스, 릴레이션 인스턴스
    • 릴레이션을 구성하는 각각의
    • 하나의 릴레이션에 포함된 튜플은 모두 상이
    • 속성의 모임
    • 튜플의 수: Cardinality 또는 기수
  • 속성(Attribute):
    • 개체 스키마, 릴레이션 스키마
    • 데이터베이스를 구성하는 가장 작은 논리적 단위
    • 개체의 특성을 기술
    • 속성의 수를 Degree 또는 차수
  • 도메인(Domain)
    • 하나의 속성(attribute)이 취할 수 있는 같은 타입의 원자값들의 집합
  • 릴레이션(Relation)
    • 테이블
  • 스키마(Schema)
    • 데이터베이스의 구조와 제약조건에 관해 전반적인 명세를 기술한 것

 

4. EAI(Enterprise Application Integration) 유형

: 기업에서 운영하는 서로 다른 플래폼, App간의 정보 전달, 연계, 통합을 위한 솔루션

  • Point To Point
    • 중간에 미들웨어를 두지 않고, 각 애플리케이션 간 연결
    • 상대적으로 저렴하게 통합 가능
    • 변경, 재사용이 어려움
  • Hub & Spoke
    • 허브 시스템을 통해 데이터를 전송하는 중앙 집중적 방식
    • 확장, 유지보수 용이
    • 허브 장애 시, 전체에 영향
  • Message Bus(ESB)
    • 애플리케이션 사이 미들웨어(버스)를 두어 처리
    • 시스템과 버스를 두어 연결하여 확장성이 뛰어나고, 대용량 처리가 가능
  • Hybrid
    • 그룹 내: Hub & Spoke, 그룹 외: Message Bus
    • 데이터 병목 최소화

SOAP

  • HTTP, HTTPS 등을 통해 XML 기반의 메세지를 컴퓨터 네트워크 상에서 교환하는 프로토콜
  • XML을 이용하여 분산처리환경에서 정보 교환을 쉽게 할 수 있도록 도와줌
  • WSDL: SOAP 사용 설명서, XML 형식 ▶ UDDI에 등록 ▶ SOAP을 이용해 실제 통신
    • WSDL: 서비스 제공 장소, 서비스 메시지 포맷, 프로토콜 등 웹 서비스의 구체적 내용이 기술되어 있는 언어

REST

  • 자원을 표현, 즉 이름으로 자원의 상태, 정보를 주고받는 것
  • URI로 자원을 표현하고, HTTP Method(GET, POST 등)를 통해 자원의 행위를 표현

 

5. 데이터 모델 구성요소

  • 구조
    • 논리적으로 표현된 개체 타입들 간의 관계로서 데이터 구조 및 정적 성질 표현
  • 연산
    • 데이터베이스에 저장된 실제 데이터를 처리하는 작업에 대한 명세로 데이터베이스를 조작하는 도구
  • 제약조건
    • 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약조건

 

6. 화이트/블랙박스 테스트

  • 화이트 박스 테스트: 모듈 내부 소스 코드를 보면서 수행하는 테스트
    • 종류
      • 기본 경로 커버리지(Base Path Coverage): 수행 가능한 모든 경로 테스트
      • 데이터 흐름 테스트(Data Flow Testing): 프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞추어 검사
      • 조건 커버리지(Condition Coverage): 각 개별 조건식이 적어도 한 번은 참과 거짓의 결과가 되도록 수행
      • 루프 테스트
  • 블랙 박스 테스트: 외부 사용자의 요구사항 명세를 보면서 수행하는 테스트
    • 동등(동치, 균등) 분할 테스트(Equivalence Partitioning Testing)
      • 입력값의 범위를 유사한 특징을 갖는 동등그룹으로 나누고 각 그룹마다 대표값을 선정하는 테스트
      • 유효값과 그렇지 않은 범위의 값을 나누어야 할 경우 사용하는 테스트
    • 경계값 분석 테스트(Boundary Value Analysis Testing): 경계값을 테스트 케이스로 선정하여 검사
    • 원인-결과 그래프 테스트(Cause-Effect Graphing Testing)
    • 오류 예측 테스트
    • 의사 결정 테이블 테스트
    • 상태 전이 테스트

 

7. 공격 기법

Dos(Denial of Service)

  • Ping Of Death: 정상 크기보다 큰 ICMP 패킷을 작은 조각(Fragment)으로 쪼개어 공격 대상이 조각화된 패킷을 처리하게 만드는 공격
  • Smurf: IP를 위조하여 ICMP 받을 대상에 과부하
  • Land Attack: Packet의 보내는 사람과 받는 사람을 동일하게 설정
  • Teardrop Attack: Fragment를 재조립 시 정확한 조립을 위해 오프셋이라는 값을 더하게 되는데 이 오프셋 값을 고의적으로 수정하여 시스템의 기능을 마비시켜 버리는 방법
  • SYN Flooding: 접속을 요청하는 SYN Packet을 대량으로 전송해 네트워크를 마비 시킴
  • UDP Flooding: 많은 수의 UDP packet을 전송하여 정상적인 서비스가 불가능하도록 하는 공격
  • Ping Flooding: 많은 ICMP Echo를 보내 이에 대한 응답을 하기 위해 자원을 모두 사용해버려 시스템이 정상적으로 동작하지 못하도록 하는 공격

DDoS (Distributed Denial of Service)

  • Phishing: 공격자가 사람들을 속이기 위해 악성 이메일을 보내는 것
  • Pharming: 피싱 기법 중 하나로, 정확한 웹 페이지 주소를 입력해도 가짜 웹 페이지에 접속하게 하여 개인정보를 훔치는 것
  • Sniffing: 네트워크 중간에서 남의 패킷 정보를 도청하는 것
  • Smishing: SMS와 Phishing의 결합어로 문자메시지를 이용한 피싱
  • Qshing: QR코드와 피싱(Phishing)의 합성어로 QR코드를 이용한 피싱
  • Ransomware: 컴퓨터 시스템을 감염시켜 접근을 제한하고 일종의 몸값을 요구하는 악성 소프트웨어
  • Key Logger: 컴퓨터 사용자의 키보드 움직임을 탐지해 ID, 패스워드 등 개인의 중요한 정보를 몰래 빼가는 해킹 공격
  • SQL Injection: 임의로 작성한 SQL 구문을 애플리케이션에 삽입하는 공격 방식
  • XSS(Cross Site Scripting): 악의적인 스크립트를 포함하여 정보 유출 등의 공격을 하는 것

기타

  • Rainbow Table Attack
    • 해시함수에 입력한 값과 해시값을 저장한 일종의 정답지를 갖고 일치하는 해시값을 통해 Key 값을 찾는 방식
    • Salt: 해커들의 레인보우 테이블이 키 값에 대한 해시값을 갖고 있으므로, 해당 값에 다른 값을 덧붙여서 다른 암호 값으로 저장되도록 추가하는 값
  • Session HiJacking
    • 다른 사람의 세션 상태를 훔치거나 가로채는 해킹 기법
    • 로그인된 상태를 가로채는 것

 

8. IP 주소 체계

  • IPv4
    • 주소 길이: 32bit (8bit*4)
    • 주소 개수: 2^32개
    • 주소 할당: A, B, C 클래스 등 비순차적 할당
    • 주소 체계: 유니캐스트(1:1), 멀티캐스트(1:다), 브로드캐스트(방송)
    • 보안: IPSec, SSL(HTTPS), S-HTTP Protocol 별도 설치
  • IPv6
    • 주소 길이: 128bit (16bit*8)
    • 주소 개수: 2^128
    • 주소 할당: 순차적 할당
    • 주소 체계: 유니캐스트(1:1), 멀티캐스트(1:다), 애니캐스트(가장 자까운 수신자에게 전달)
    • 보안: 자체 보안기능 제공

IPv4 → IPv6 전환 기술

  • 듀얼 스택(Dual Stack)
    • IPv4 / IPv6 동시 지원
  • 터널링(Tunneling)
    • 두 IPv6 네트워크 간 터널을 이용하는 기술
    • 캡슐화
  • 주소 변환(Addressing Translation)
    • IPv4와 IPv6 간 주소를 변환하여 두 버전을 이용

 

9. 모듈의 독립성

모듈의 독립성을 판단하는 두 가지 지표로, 결합도(Coupling)는 모듈과 모듈간의 상호 의존 정도, 응집도(Cohesion)는 모듈 내부의 기능적인 집중 정도이다.

결합도(Coupling)

: 모듈과 모듈간의 상호 의존 정도

  1. 자료(Data): 파라미터로 만을 전달하는 경우
  2. 스탬프(Stamp): 파라미터로 배열이나 오브젝트, 스트럭쳐 등의 객체가 전달되는 경우
  3. 제어(Control): 파라미터로 값뿐만 아니라 제어 요소도 전달되는 경우
  4. 외부(External): 어떤 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조하는 경우
  5. 공통(Common): 공유되는 공통 데이터 영역(전역변수)을 여러 모듈이 사용하는 경우
  6. 내용(Content): 한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조하거나 수정하는 경우
    • 내용 결합도가 높을 경우, 스파게티 코드가 될 수 있음
  • Spaghetti Code: 소스 코드가 복잡하게 얽힌 경우
  • Alien Code: 아주 오래되거나 참고문서가 없어 유지보수가 어려운 경우
  • Legacy Code: 더 이상 쓰기 힘들고 난해한 경우

응집도(Cohesion)

: 모듈 내부의 기능적인 집중 정도

  1. 우연적(Coincidental): 모듈 내부의 각 구성요소들이 연관이 없을 경우
  2. 논리적(Logical): 유사한 성격을 갖는 요소들이 한 모듈에서 처리
  3. 시간적(Temporal): 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리
  4. 절차적(Procedural): 모듈 안의 구성요소들이 그 기능을 순차적으로 수행
  5. 통신적(Communicational): 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여있을 경우
  6. 순차적(Sequential): 모듈 내에서 한 활동에서 나온 출력값을 다른 활동이 사용할 경우
  7. 기능적(Functional): 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우

 

10. 요구사항 분석

  • 기능적 분석: 기능 관련
  • 비기능적 분석: 기능의 성능, 보안, 품질 관련

 

접근 제어

  1. 강제적 접근제어(MAC, Mandatory Access Control)
    : 높은 보안 수준을 요구하는 정보가 낮은 보안 수준의 주체에게 노출되지 않도록 하는 접근 제어 방법
  2. 임의적 접근제어(DAC, Discretionary Access Control)
    : 객체의 소유주가 접근 여부를 결정
  3. 역할기반 접근제어(RBAC, Role Based Access Control)
    : 조직내에서 맡은 역할에 기초하여 자원에 대한 접근허용 여부를 결정하는 방법

MAC 보안 모델

  1. Bell-LaPadula Confidentiality Model; BLP
    • 기밀성 강조
    • No Read Up: 낮은 등급의 주체는 높은 등급의 객체를 읽을 수 없음
    • No Write Down: 높은 등급의 주체는 낮음 등급의 객체를 수정할 수 없음
  2. Biba Integrity Model
    • 무결성 강조
    • No Read Down: 높은 등급의 주체는 낮은 등급의 객체를 읽을 수 없음
    • No Write Up: 낮은 등급의 주체는 상위 등급의 객체를 수정할 수 없음
  3. Clark-Wilson Integrity Model
    • 무결성 강조
    • 상업용
  4. Brewer Nash, Chinese Wall Model
    • 이익 충돌 방지를 위한 모델
  5. Lattice
    • 정보의 흐름을 안전하게 제어

 

13. V모델

  1. 단위(Unit) 테스트
    : 개발자가 명세서의 내용대로 정확히 구현되었는지 단위 중심으로 테스트
    • 정적
      • 소스코드의 실행없이 내부 확인
      • 도구
        • PMD, SonarQube, FindBugs, CheckStyle, CppCheck, Cobertura
    • 동적: 입력값에 대한 출력값 확인
  2. s
    : 단위 테스트를 통과한 컴포넌트 간의 인터페이스를 테스트
    • 빅뱅 테스트: 모든 모듈이 결합된 프로그램 전체가 대상
    • 상향식 테스트: 드라이버(Driver) 사용
    • 하향식 테스트: 깊이 우선 통합법, 넓이 우선 통합법 사용, 스텁(Stub) 사용
    • 혼합식 통합 테스트: : 하위 수준-상향식 통합, 상위 수준-하향식 통합 사용, 샌드위치(Sandwich)식 통합 테스트 방법
    • 회귀 테스팅(Regression Testing): 통합 테스트가 완료 된 후 변경된 모듈이나 컴포넌트가 있을 경우, 다른 부분에 영향을 미치는지 테스트하여 새로운 오류 여부를 확인
  3. 시스템(System) 테스트
    : 전체 시스템 또는 제품의 동작에 대해 테스트
    • 기능 요구사항 테스트
    • 비기능 요구사항 테스트
  4. 인수(Acceptance) 테스트
    : 계약상의 요구사항이 만족되었는지 확인
    • 알파 테스트: 개발자 + 사용자
    • 베타 테스트: 사용자
    • 형상 테스트: 구조 확인

소프프웨어 개발 방법론

애자일 방법론: 일정한 주기를 갖고 계속 검토해 나가며 필요할 때마다 요구사항을 더하고 수정하여 커다랗게 살을 붙이면서 개발하는 프로세스 모델 방식

소프트웨어 생명 주기

  • 폭포수 모형 (Waterfall Model)
    • 계획 → 분석 → 설계 → 구현 → 테스트 → 유지보수
    • 이전 단계로 돌아갈 수 없다는 전제
    • 각 단계가 끝난 후에는 다음 단계를 수행하기 위한 결과물이 명확하게 산출되어야 함
  • 나선형 모델
    • 계획 및 정의 → 위험 분석 → 공학적 개발 → 고객 평가
  • 프로토타입 모형(Prototype Model, 원형 모델)
    • 실제 개발될 소프트웨어에 대한 견본품을 만들어 최종 결과물을 예측하는 모형
  • RAD 기법 모델
    • 짧은 개발 기간동안 개발하기위한 순차적 프로세스 모델
  • V 모델
    • 단위 테스트 → 통합 테스트 → 시스템 테스트 → 인수 테스트
    • 작업 결과의 검증(테스트)에 초점
  • 4세대 기법
    • 자동화 도구들을 이용하여 요구사항 명세서로부터 실행코드를 자동으로 생성할 수 있게 해주는 방법

 

15. IPC(Inter Process Communication)

프로세스 간 통신을 가능하게 하는 기술로, 파이프, 메시지 큐, 공유메모리, 세마포어, 소켓 등이 있다.

 

16. SQL

SELECT COUNT(*) 
  FROM TABLE01 
 WHERE EMPNO > 100 
   AND SAL >= 3000 
    OR EMPNO = 200;

-- 1
-- DML
INSERT INTO TABLE_NAME(COLUMN1, COLUMN2, ...) VALUES(VAL1, VAL2, ...);
SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ...;
UPDATE TABLE_NAME SET COL1=VAL1, COL2=VAL2 WHERE ...;
DELETE FROM TABLE_NAME WHERE ...;

 

17. Python

class arr:
    a = ["Seoul", "Kyeonggi", "Incheon", "Daejeon", "Daegu", "Pusan"];
str = '';
for i in arr.a:
    str = str + i[0];
print(str);

# SKIDDP

 

18. Java

int i, sum;
for(i = 0; i <= 5; i++){
    sum += i;
    System.out.print(i);
    if(i==5){
        System.out.print("=");
        System.out.print(sum);
    }
    else {
        System.out.print("+");
    }
}

// 0 + 1 + 2 + 3 + 4 + 5 = 15

 

19. Java

int val[][] = {{45, 50, 75}, {89}};
System.out.println(val[0].length); // 3
System.out.println(val[1].length); // 1
System.out.println(val[0][0]); // 45
System.out.println(val[0][1]); // 50
System.out.println(val[1][0]); // 89

 

20. C

개행, 띄어쓰기 유의

int main(){
    struct insa {
        char name[10];
        int age;
    } a[] = {"Kim", 28, "Lee", 38, "Park", 41, "Choi", 30};
    struct insa *p;
    p = a;
    p++;
    print("%s ", p → name);
    print("%d", p → age);
}

 /* Lee 38 */

 

 

 

🔗 마크다운 파일

GitHub

 

📚 참고 자료

 

흥달쌤

흥달쌤과 함께하는 IT 채널입니다. 정보처리기사 자격증 관련된 강의 및 실무 노하우, 프로그래밍 언어(JAVA, C언어, Python) 특강 등이 진행됩니다. 앞으로 진행 예정인 동영상은 IT 관련된 이야기

www.youtube.com