본문 바로가기
자격증/정보처리기사

[실기] 정보처리기사 23년 1회 기출 오답노트

by D.O.T 2024. 7. 26.

4번

  • 인터페이스 구현 
    • 송, 수신 시스템 간 데이터 교환 및 처리를 실현해주는 작업
    • 데이터 통신을 이용한 구현 - AJAX, Http2, Rest, ... 
      • Application 영역에서 data format을 인터페이스 대상으로 전송
      • 수신측에서 파싱하여 해석
      • JSON, XML 형식의 데이터 포맷이 있음.
      • JSON을 이용한 인터페이스 구현 순서
        • 송신 측
          • 생성할 데이터를 각 시스템 환경에 맞게 인터페이스 객체를 선택
          • JSON을 이용해 데이터를 인터페이스 객체로 만듦
          • 인터페이스 객체를 데이터 통신 기술 등을 이용해 수신측으로 전송
        • 수신 측
          • 인터페이스 객체를 수신
          • 파싱 후 처리
          • 송신 측으로 처리 결과 전송
      • AJAX (Asynchronous Javascript and XML)
        • js 를 사용해 클라이언트와 서버 간 XML 데이터를 주고 받는 '비동기 통신' 기술
      • JSON (JavaScript Object Notation)
        • 용량이 적은 데이터를 교환하기 위한 데이터의 쌍(Attribute-Value Pairs) 형태로 표현하는 개방형 표준 포맷
        • XML을 대체해서 사용되고 있음.
  • 인터페이스 엔티티를 이용한 인터페이스 구현 - API Docs (Swagger)
    • 인터페이스가 필요한 시스템 사이 별도의 인터페이스 엔티티를 두어 상호연계
    • 일반적으로 인터페이스 테이블을 엔티티로 활용 
    • 인터페이스 테이블을 이용한 인터페이스 구현 순서
      • 송신 측
        • 인터페이스 이벤트가 발생 시 인터페이스 테이블에 인터페이스 데이터를 기록
        • 인터페이스 테이블에서 정해진 주기에 따라 인터페이스 데이터를 전송
      • 수신측
        • 인터페이스 테이블에 인터페이스 데이터가 입력되면 정해진 주기에 따라 인터페이스 데이터를 읽음
        • 인터페이스 테이블에서 인터페이스 데이터를 읽은 후 사전에 정의된 데이터 트랜잭션을 수행

6번

  • VPN (Virtual Private Network, 가상 사설 통신망)
    • 인터넷 등 통신 사업자(ISP)의 공중 네트워크와 암호화 기술을 이용
    • 사용자가 마치 전용 회선을 사용하는 것처럼 해주는 보안 솔루션
    • SSL VPN
      • PC에 VPN Client 프로그램을 설치하여 VPN 서버에 접속하는 방식
      • 암호화를 위해 SSL 프로토콜을 사용한다.
    • IPSec VPN
      • VPN 서버가 설치된 각 네트워크를 서로 연결하는 방식
      • 암호화를 위해 IPSec 프로토콜을 사용
    • SSL(Secure Sockets Layer)
      • 송, 수신 하는 컴퓨터 사이 TCP/IP 계층과 애플리케이션 계층 사이에서 인증, 암호화, 무결성을 보장하는 표준 프로토콜
      • 즉, 전송 계층과 어플리케이션 계층
    • IPsec(IP security)
      • 네트워크 계층에서 IP 패킷 단위의 데이터 변조 방지 및 은닉 기능을 제공
    • PPTP(Point-to-Point Tunneling Protocol)
      • 지점 간 터널링 프로토콜
      • MS가 제안한 VPN 프로토콜
      • PPP에 기초, 두 대가 직렬 인터페이스를 이용해 통신 
      • 데이터 링크 계층
    • L2F(Layer 2 Forwarding)
      • Cisco Systems가 개발한 VPN 프로토콜
      • PPTP나 IPsec과 달리, 데이터 링크 수준에서 캡슐화가 가능
      • IP 네트워크 이외에서도 사용 가능
    • L2TP (Layer 2 Tunneling Protocol)
      • 터널링 프로토콜인 PPTP와 VPN 구현에 사용
      • L2F의 기술적 장점을 결합
      • 자체적으로 암호화 및 인증을 제공하지 않음.
      • 다른 보안 프로토콜과 같이 사용

8번

  • 워터링 홀 (Watering Hole)
    • 목표 조직이 자주 방문하는 웹 사이트를 사전에 감염
    • 목표 조직이 웹 사이트에 방문했을 때, 악성 코드에 감염되게 하는 웹 기반 공격
  • 웜 (Worm)
    • 네트워크를 통해 연속적으로 자신을 복제
    • 시스템 부하를 높여 시스템을 다운 시킴
    • 분산 서비스 공격 (Dos), 버퍼 오버플로 공격, 슬래머 등으로 진화
  • 좀비(Zombie) PC
    • 악성코드에 감염되어 다른 프로그램이나 컴퓨터를 조종함.
    • C&C (Command & Control) 서버의 제어를 받아 Ddos 공격 등에 이용되는 PC
  • C&C 서버
    • 해커가 원격지에서 감염된 좀비 PC에 명령을 내림
    • 악성코드를 제어하는 용도로 사용 됨.
  • 봇넷 (Botnet)
    • 악성 프로그램에 감염되어 악의적인 의도로 사용될 수 있는 다수의 PC가 네트워크로 연결된 형태
    • 즉, 좀비 PC의 네트워크(?)
    • 공격자는 Master 시스템(좀비 PC)으로 Agent 시스템(좀비 PC)를 조종해 공격대상에 분산 공격을 하든 할 수 있음
    • Master 시스템 역할을 핸들러(Handler)라고 하고 Agent 시스템 역할을 데몬(Demon)이라고 한다.
  • 제로 데이 공격 (Zero Day Attack)
    • 보안 취약점이 발견 되었을 때, 발견된 취약점이 공표되기 전 공격
    • 취약점을 통해 이루어지는 보안 공격, 신속하게 해야 하므로 제로데이
  •  키로거 공격 (Key Logger AttacK)
    • 컴퓨터 사용자의 키보드 움직임을 탐지해 중요한 정보를 빼감
  • 랜섬 웨어 (Ransomeware)
    • 인터넷 사용자 PC에 잠입, 내부 문서나 파일 등을 암호화 함.
    • 암호 해독용 프로그램을 조건으로 돈을 요구 하는 악질
  • 백도어 (Back Door, Trap Door)
    • 시스템 설계자가 서비스 기술자, 유지 보수 프로그래머 등의 접근 용이성을 위해 만들어 놓은 비밀 통로
    • 해커가 시스템 보안이 제거된 비밀 통로를 찾아서 컴퓨터 범죄에 악용함
    • 무결성 검사, 열린 포트, 로그 분석, setUID 파일 검사 등으로 백도어 탐지 가능 
  • 트로이 목마 (Trojan Horse)
    • 정상적인 기능을 하는 프로그램으로 위장해 프로그램 내 숨어 있음
    • 프로그램이 동작할 때, 활성화되어 부작용을 일으킴
    • 좀비 PC로 만들 때, 악성 프로그램을 정상 프로그램과 합성해서 배포
    • 정상 프로그램 실행 시 좀비 PC가 됨.

11번 

  • 디자인 패턴
    • 모듈 간 관계 및 인터페이스 설계 시 참조할 수 있는 전형적인 방식 또는 예제
    • GoF의 디자인 패턴

생성 패턴 (Creational Pattern)

  • 클래스나 객체의 생성과 참조 과정을 정의
  • 추상 팩토리 (Abstract Factory)
    • 구체적인 클래스에 의존하지 않음.
    • 서로 연관 및 의존하는 객체들의 그룹으로 생성해 추상적으로 표현
    • 인터페이스로 상위 객체를 만들 것들을 미리 정의해 둠.
    • 자동차의 바퀴, 엔진, 기능 들
  • 빌더 (Builder)
    • 작게 분리된 인스턴스를 건축 하듯이 조합해 객체를 생성
    • 객체의 생성 과정, 표현 방법을 분리하고 있음.
    • 동일한 객체 생성에서도 서로 다른 결과를 만들 수 있음.
  • 팩토리 메소드 (Factory Method)
    • Virtual Constructor(가상 생성자) 패턴
    • 객체 생성을 서브 클래스에서 처리하도록 분리 후 캡슐화 
    • 상위 클래스에서 인터페이스만 정의하고 실제 생성은 서브 클래스가 함.
  • 프로토타입 (Prototype)
    • 원본 객체를 복제하는 방법
    • 객체를 생성하는 패턴으로 일반적인 방법으로 객체를 생성 - new
    • 비용이 큰 경우 주로 이용
  • 싱글톤 (Singleton)
    • 하나의 객체를 생성하면 생성된 객체를 어디서든 참조할 수 잇다.
    • 여러 프로세스가 동시에 참조할 수는 없다.
    • 클래스 내에서 인스턴스가 하나 뿐임을 보장해야한다.
    • 불필요한 메모리 낭비를 최소화 할 수 있다.

구조 패턴(Structural Pattern)

  • 구조가 복잡한 시스템을 개발하기 쉽도록 클래스나 객체들을 조합하여 더 큰 구조로 만듬
  • 어댑터 (Adapter)
    • 호환성이 없는 클래스들의 인터페이스를 다른 클래스가 이용할 수 있도록 변환
    • 기존의 클래스를 이용하고 싶지만 인터페이스가 일치하지 않을 때, 어댑터로 변환해서 사용
  • 브리지 (Bridge)
    • 구현부에서 추상층을 분리
    • 서로가 독립적으로 확장할 수 있도록 구성한 패턴
    • 기능과 구현을 두 개의 별도 클래스로 구현한다.
    • Spring 에서 Repository, Controller에서 다른 Interface를 사용하는데 브리지로 되어있는거
  • 컴포지트 (Composite)
    • 여러 객체를 가진 복합 객체와 단일 객체를 구분 없이 다룰 때 사용
    • 객체들을 트리 구조로 구성한다.
    • 디렉터리 안에 디렉터리가 있듯, 복합 객체 안 복합 객체가 포함되도록 구조 가능
    • List
  • 데코레이터 (Decorator)
    • 객체 간의 결합을 통해 능동적으로 기능들을 확장할 수 있는 패턴
    • 임의의 객체에 부가적인 기능을 추가함.
    • 다른 객체들을 덧붙이는 방식으로 구현
  • 퍼싸드(Facade)
    • 복잡한 서브 클래스들을 피해 더 상위에 인터페이스를 구현
    • 서브 클래스들의 기능을 간편하게 사용할 수 있음.
    • 서브 클래스들 사이 통합 인터페이스를 제공하는 Wrapper 객체가 필요
  • 플라이웨이트(Flyweight)
    • 인스턴스가 필요할 때 마다 매번 생성하지 않음.
    • 가능한 공유해서 사용하면서 메모리를 절약
    • 다수의 유사 객체를 생성하거나 조작할 때 유용함.
    • MAP
  • 프록시 (Proxy)
    • 접근이 어려운 객체와 접근이 어려운 객체에 연결하려는 객체 사이에서 인터페이스를 수행

행위 패턴 (Behavioral Pattern)

  • 클래스나 객체들이 서로 상호작용하는 방법이나 책임 분배 방법을 정의하는 패턴
    • 책임 연쇄(Chain Of Responsibility)
      • 요청을 처리할 수 있는 객체가 둘 이상 존재할
      • 한 객체는 요청을 처리하지 못한다면 다음 객체로 넘어가는 형태의 패턴
      • 청을 처리하는 각 객체가 Chain으로 묶여 있는 형태
      • 요청이 해결 될 때까지 Chain을 따라 책임이 연쇄됨.
    • 커맨드 (Command)
      • 요청을 객체의 형태로 캡슐화하여 재이용, 취소, 저장, 기록을 하는 패턴
      • 요청에 사용되는 각종 명령을 추상 클래스와 구체 클래스로 분리해서 단순화
    • 인터프리터 (Interpreter)
      • 언어에 문법 표현을 정의, SQL 및 통신 프로토콜 개발 시 사용
    • 반복자 (Iterator)
      • 자료구조와 같이 접근이 잦은 객체에 대해 동일한 인터페이스를 사용하도록 하는 패턴
      • 내부 표현 방법의 노출 없이 순차적 접근 가능
    • 중재자 (Mediator)
      • 수많은 객체간 복잡한 상호작용을 캡슐화하여 객체로 정의
      • 객체 사이의 의존성을 줄여 결합도를 낮춤
    • 메멘토 (Memento)
      • 특정 시점에서의 객체 내부 상태를 객체화
      • 요청에 따라 객체를 해당 시점의 상태로 돌릴 수 있는 기능 제공
      • Ctrl + Z와 같은 되돌리기 기능
    • 옵저버 (Observer)
      • 한 객체의 상태가 변화하면 객체에 상속되어 있는 다른 객체들에게 변화된 상태를 전달
      • 일대다의 의존성을 정의
      • 분산 시스템 간 이벤트를 생성,발행(Publish)하고 수신(Subscribe)해야 할 때 이용
    • 상태 (State)
      • 객체의 상태에 따라 동일한 동작을 다르게 처리해야할 때 사용되는 패턴
      • 객체 상태를 캡슐화하고 이를  참조하는 방식으로 처리 
    • 전략 (Strategy)
      • 동일한 계열 알고리즘들을 개별적으로 캡슐화하여 상호 교환할 수 있게 정의
      • 클라이언트는 독립적으로 원하는 알고리즘 선택 가능
      • 클라이언트에 영향 없이 알고리즘 변경 가능
      • 스프링의 DI
    • 템플릿 메소드 (Template Method)
      • 상위 클래스에서 골격을 정의
      • 하위 클래스에서 세부 처리를 구체화 하는 구조의 패턴
      • 유사한 서브 클래스를 묶어 공통된 내용을 상위 클래스에서 정의
      • 코드의 양을 줄이고 유지보수를 용이하게 함
      • Spring-tx
    • 방문자 (Visitor)
      • 각 클래스들의 데이터 구조에서 처리 기능을 분리하여 별도의 클래스로 구성
      • 분리된 처리 기능은 각 클래스를 방문하여 수행

12번

  • 튜플 : 릴레이션을 구성하는 각각의 행, 파일 구조에서는 레코드에 해당
  • 속성 : 릴레이션을 구성하는 각각의 열
    • 속성의 개수를 차수(Degree)라고 함.
    • 한 속성의 필드를 제외한 릴레이션 인스턴스를 도메인이라고 함.
  • 릴레이션 인스턴스: 데이터 개체를 구성하고 있는 속성들에 데이터 타입이 정의되어 구체적인 값을 가진 것
    • 실제 값을 가진 튜플을 의미, 테이블의 바디
  • 릴레이션 스키마: 데이터 개체를 구성하고 있는 속성들의 데이터 타입이 정의 된 필드의 이름
    • 테이블의 헤더, 속성의 집합
  • 카디널리티 : 튜플의 개수 (기수, 대응수라고도 함)

18번

  • 외부 스키마
    • 사용자나 응용 프로그래머가 개인의 입장에서 필요로 하는 DB의 논리적 구조를 정의
    • 클라이언트 입장
  • 개념 스키마
    • DB의 전체적인 논리적 구조
    • 모든 응용프로그램이나 사용자가 필요로 하는 데이터를 종합한 전체 DB로 하나만 존재
    • 개체 간 관계와 제약 조건을 나타냄
    • DB의 접근 권한, 보안, 무결성 규칙에 대해 명세
    • ERD로 표현
  • 내부 스키마
    • 물리적 저장장치의 입장에서 본 DB
    • 실제로 DB에 저장될 레코드 형식을 정의
    • 저장될 데이터 항목의 표현 방법
    • 내부 레코드의 물리적 순서
    • 실제 DB에 셋팅, 인덱스 등을 추가해서 셋팅