정보처리기사 실기 2025년 2회차 기출 복원입니다. 각 문제 아래의 「정답·해설 보기」를 펼치면 정답과 해설이 나타나요. 실제 시험 환경(타이머·자동 채점·오답 누적)에서 풀어보고 싶다면 글 맨 아래 「직접 풀러가기」를 눌러주세요.
문제 1
4지선다다음은 파일 구조와 관련된 설명이다. 괄호 안에 들어갈 가장 알맞은 용어는?
<설명> 데이터베이스의 물리 설계 시, 레코드에 접근하는 방법은 순차 접근 방법, ( ) 방법, 해싱 방법 등이 있다.
이 중 ( ) 방법은 레코드의 키 값과 포인터를 쌍으로 묶어 저장하며, 검색 시 키 값을 기준으로 빠르게 탐색할 수 있도록 설계되어 있다.
접근 방법 설명 순차 접근 레코드를 처음부터 하나씩 검사 ( ) 접근 키-포인터 쌍으로 구성되어 빠르게 검색 해싱 접근 해시 함수를 이용해 직접 주소 계산 후 접근 - 1.인덱스
- 2.스택
- 3.큐
- 4.그래프
정답·해설 보기▾
정답
1번. 인덱스
해설
정답: 1. 키 값과 포인터 쌍을 이용해 레코드 주소를 빠르게 찾는 접근 방법은 인덱스 접근 방법이다.
오답 풀이
- 1번: 키와 포인터를 이용한 색인 구조이므로 정답이다.
- 2번: 스택은 후입선출 자료구조이다.
- 3번: 큐는 선입선출 자료구조이다.
- 4번: 그래프는 정점과 간선으로 관계를 표현하는 자료구조이다.
보충 개념 인덱스는 검색 성능 향상을 위해 사용된다. 인덱스는 키 값과 실제 레코드 위치를 가리키는 포인터 정보를 이용해 원하는 데이터를 빠르게 찾는다.
문제 2
4지선다다음은 데이터베이스 릴레이션의 구성 요소 중 하나에 대한 설명이다. 설명을 읽고 보기에서 알맞은 기호를 고르시오.
<설명> 릴레이션에서 열(Column)을 의미하며 데이터 항목의 속성 또는 특성을 나타낸다. 각 열은 고유한 이름을 가지며 특정 도메인에서 정의된 값을 갖는다. 예를 들어 학생 릴레이션에서 학번, 이름, 전공 등은 각각 하나의 열이며 학생의 고유한 특성을 나타낸다.
<보기> ㄱ. Cardinality ㄴ. Domain ㄷ. Attribute ㅁ. Degree ㅂ. Schema ㅅ. Tuple
- 1.ㄱ
- 2.ㄴ
- 3.ㄷ
- 4.ㅅ
정답·해설 보기▾
정답
3번. ㄷ
해설
정답: 3. 릴레이션에서 열을 의미하는 용어는 Attribute이다.
오답 풀이
- 1번: Cardinality는 릴레이션의 튜플 수를 의미한다.
- 2번: Domain은 속성이 가질 수 있는 값의 범위이다.
- 3번: Attribute는 릴레이션의 열 또는 속성을 의미한다.
- 4번: Tuple은 릴레이션의 행을 의미한다.
보충 개념 릴레이션의 차수는 속성 수, 카디널리티는 튜플 수이다. 속성은 각 데이터 항목의 의미와 값을 정의한다.
문제 3
4지선다다음 설명에 해당하는 보안 프로토콜은?
<설명> 원격 접속과 관련된 보안 프로토콜이며 암호화된 통신을 제공한다. 공개키 기반 인증 방식을 사용하고, 주로 원격 서버에 안전하게 접속할 때 사용된다. 기본 포트 번호는 22번이며 Telnet의 보안 취약점을 보완한 대안으로 널리 사용된다.
- 1.SSH
- 2.FTP
- 3.SMTP
- 4.SNMP
정답·해설 보기▾
정답
1번. SSH
해설
정답: 1. SSH는 암호화된 원격 접속을 제공하는 보안 프로토콜이며 기본 포트는 22번이다.
오답 풀이
- 1번: 원격 서버 보안 접속 프로토콜이므로 정답이다.
- 2번: FTP는 파일 전송 프로토콜이다.
- 3번: SMTP는 전자우편 전송 프로토콜이다.
- 4번: SNMP는 네트워크 장비 관리 프로토콜이다.
보충 개념 SSH는 Telnet과 달리 통신 내용을 암호화한다. 원격 로그인, 명령 실행, 파일 전송 등에 활용된다.
문제 4
4지선다스케줄링 알고리즘에 관한 다음 설명을 읽고 (1), (2)에 들어갈 명칭으로 가장 적절한 것은?
<설명> (1) CPU Burst 시간이 짧은 프로세스를 우선적으로 처리하는 스케줄링 방식이다. "Shortest Job First" 또는 "Shortest Next CPU Burst"라고도 하며, 실행 시간이 짧은 작업을 먼저 선택한다.
(2) 위의 스케줄링 방식을 선점형으로 구현한 형태로, 실행 중인 프로세스보다 더 짧은 남은 Burst 시간을 가진 프로세스가 도착하면 현재 CPU를 선점한다.
- 1.(1) SJF, (2) SRT
- 2.(1) FCFS, (2) RR
- 3.(1) RR, (2) SJF
- 4.(1) HRN, (2) FCFS
정답·해설 보기▾
정답
1번. (1) SJF, (2) SRT
해설
정답: 1. 짧은 작업을 우선 처리하는 방식은 SJF이고, 그 선점형 형태는 SRT이다.
오답 풀이
- 1번: 두 설명 모두 올바르게 연결되었다.
- 2번: FCFS는 도착 순서, RR은 시간 할당량 기반 방식이다.
- 3번: RR은 선점형 시간 할당 방식이지만 짧은 작업 우선 방식이 아니다.
- 4번: HRN은 응답률을 기준으로 우선순위를 정한다.
보충 개념 SJF는 평균 대기 시간을 줄일 수 있지만 실행 시간 예측이 필요하다. SRT는 남은 시간이 더 짧은 프로세스가 오면 현재 실행 중인 프로세스를 선점한다.
문제 5
4지선다다음 Java 코드의 출력 결과는?
Javapublic class Main { public static void change(String[] data, String s){ data[0] = s; s = "Z"; } public static void main(String[] args) { String data[] = { "A" }; String s = "B"; change(data, s); System.out.print(data[0] + s); } }- 1.AB
- 2.BB
- 3.BZ
- 4.ZZ
정답·해설 보기▾
정답
2번. BB
해설
정답: 2. 배열 객체의 0번 원소는 "B"로 바뀌지만, 매개변수 s에 "Z"를 대입해도 main의 s는 바뀌지 않는다.
오답 풀이
- 1번: data[0]이 "B"로 변경된 점을 반영하지 않았다.
- 2번: data[0]은 B, main의 s도 B이므로 정답이다.
- 3번: 지역 매개변수 s의 변경이 main의 s에 반영된다고 잘못 본 결과이다.
- 4번: 배열 원소와 main의 s가 모두 Z로 바뀌지 않는다.
보충 개념 Java는 값에 의한 호출을 사용한다. 참조값이 복사되어 전달되므로 같은 객체의 내부 상태는 바꿀 수 있지만, 매개변수 자체를 새 값으로 바꿔도 호출자 변수는 바뀌지 않는다.
문제 6
4지선다다음 IP 주소와 서브넷 마스크에 대한 설명으로 가장 적절한 것은?
<조건> 호스트 IP 주소가
223.13.234.132이고 서브넷 마스크가255.255.255.192이다.이 호스트가 속한 네트워크 주소는
223.13.234.(①)이고, 이 네트워크에서 사용 가능한 호스트 수는(②)개이다. 단, 네트워크 주소와 브로드캐스트 주소는 제외한다.- 1.① 0, ② 254
- 2.① 64, ② 62
- 3.① 128, ② 62
- 4.① 192, ② 30
정답·해설 보기▾
정답
3번. ① 128, ② 62
해설
정답: 3. 255.255.255.192는 /26이고 블록 크기는 64이다. 132는 128~191 범위에 있으므로 네트워크 주소의 마지막 옥텟은 128이고 사용 가능 호스트 수는 64-2=62개이다.
오답 풀이
- 1번: /24로 계산한 값에 가깝다.
- 2번: 132가 64~127 범위에 속한다고 잘못 계산했다.
- 3번: 네트워크 주소와 호스트 수가 모두 맞다.
- 4번: 192는 132가 속한 블록의 시작 주소가 아니다.
보충 개념 /26은 한 서브넷당 64개 주소를 가진다. 각 블록은 0, 64, 128, 192로 시작한다.
문제 7
4지선다다음 설명에 해당하는 디자인 패턴은?
<설명> 어떤 객체에 대한 접근을 제어하거나 추가적인 기능을 부여하기 위해 해당 객체의 대리 객체를 사용하는 방식의 디자인 패턴이다. 실제 객체에 대한 접근 전에 필요한 작업을 수행할 수 있으며 실제 객체의 생성을 지연시켜 메모리와 자원을 절약할 수 있다. 또한 실제 객체를 감추어 정보 은닉을 강화할 수 있다.
- 1.Proxy
- 2.Adapter
- 3.Observer
- 4.Builder
정답·해설 보기▾
정답
1번. Proxy
해설
정답: 1. Proxy 패턴은 실제 객체에 대한 접근을 대리 객체가 제어하거나 부가 기능을 제공하는 구조이다.
오답 풀이
- 1번: 대리 객체를 사용하는 패턴이므로 정답이다.
- 2번: Adapter는 서로 다른 인터페이스를 변환한다.
- 3번: Observer는 상태 변화 알림을 구독자에게 전달한다.
- 4번: Builder는 복잡한 객체 생성 과정을 분리한다.
보충 개념 Proxy는 가상 프록시, 보호 프록시, 원격 프록시 등으로 활용된다. 접근 제어, 지연 로딩, 로깅 등에 사용할 수 있다.
문제 8
4지선다다음 설명에 해당하는 웹 개발 기법은?
<설명> 웹 페이지 전체를 다시 불러오지 않고 JavaScript와 XML 또는 JSON을 이용하여 일부 콘텐츠만 비동기적으로 갱신할 수 있는 기술이다. HTML만으로는 구현하기 어려운 동적인 기능을 가능하게 하여 사용자가 웹 페이지와 보다 자유롭게 상호작용할 수 있도록 해준다.
- 1.AJAX
- 2.REST
- 3.SOAP
- 4.JWT
정답·해설 보기▾
정답
1번. AJAX
해설
정답: 1. AJAX는 비동기 통신을 이용해 페이지 전체 새로고침 없이 일부 데이터를 갱신하는 웹 개발 기법이다.
오답 풀이
- 1번: JavaScript 기반 비동기 갱신 기술이므로 정답이다.
- 2번: REST는 자원 중심 API 설계 스타일이다.
- 3번: SOAP은 XML 기반 메시지 교환 프로토콜이다.
- 4번: JWT는 JSON 기반 토큰 형식이다.
보충 개념 AJAX는 XMLHttpRequest나 Fetch API 등을 통해 서버와 비동기 통신한다. 최근에는 XML보다 JSON을 주로 사용한다.
문제 9
4지선다다음 Java 코드의 출력 결과는?
Javapublic class Main { static interface F { int apply(int x) throws Exception; } public static int run(F f) { try { return f.apply(3); } catch (Exception e) { return 7; } } public static void main(String[] args) { F f = (x) -> { if (x > 2) { throw new Exception(); } return x * 2; }; System.out.print(run(f) + run((int n) -> n + 9)); } }- 1.12
- 2.19
- 3.7
- 4.21
정답·해설 보기▾
정답
2번. 19
해설
정답: 2. 첫 번째 run(f)는 x=3에서 예외가 발생해 7을 반환하고, 두 번째 run은 3+9=12를 반환하므로 합은 19이다.
오답 풀이
- 1번: 첫 번째 run의 예외 처리 결과 7을 누락했다.
- 2번: 7 + 12 = 19로 맞다.
- 3번: 두 번째 run 결과를 누락했다.
- 4번: 첫 번째 람다의 정상 반환값을 잘못 더한 값이다.
보충 개념 람다식도 함수형 인터페이스의 구현체로 전달될 수 있다. 예외가 발생하면 catch 블록의 반환값이 사용된다.
문제 10
4지선다다음 Java 코드의 출력 결과는?
Javapublic class Main{ public static class Parent { public int x(int i) { return i + 2; } public static String id() { return "P";} } public static class Child extends Parent { public int x(int i) { return i + 3; } public String x(String s) { return s + "R"; } public static String id() { return "C"; } } public static void main(String[] args) { Parent ref = new Child(); System.out.println(ref.x(2) + ref.id()); } }- 1.4P
- 2.5P
- 3.5C
- 4.4C
정답·해설 보기▾
정답
2번. 5P
해설
정답: 2. 인스턴스 메서드 x(int)는 오버라이딩되어 Child의 메서드가 실행되므로 2+3=5이다. static 메서드 id()는 참조 타입 Parent 기준으로 호출되어 P가 붙는다.
오답 풀이
- 1번: x(int)를 Parent 기준으로 계산한 값이다.
- 2번: 동적 바인딩과 static 메서드 숨김 규칙을 모두 반영한 결과이다.
- 3번: static 메서드도 동적 바인딩된다고 잘못 본 결과이다.
- 4번: x와 id 모두 잘못 판단한 값이다.
보충 개념 Java에서 오버라이딩된 인스턴스 메서드는 실제 객체 타입 기준으로 실행된다. static 메서드는 오버라이딩이 아니라 숨김이며 참조 타입 기준으로 결정된다.
문제 11
4지선다다음 제어 흐름 그래프가 분기 커버리지를 만족하기 위한 테스팅 순서로 가장 적절한 것은?
<그래프 설명> 노드 1에서 시작하여 2로 이동한다. 2에서는 3 또는 4로 분기한다. 3은 4로 이동하고, 4는 5로 이동한다. 5에서는 6으로 이동한다. 6에서는 1로 되돌아가는 경로와 7로 종료되는 경로가 존재한다. 분기 커버리지를 만족하려면 각 분기 간선을 최소 한 번 이상 수행해야 한다.
- 1.1234561, 124567 또는 1234567, 124561
- 2.1234567만 수행
- 3.124567만 수행
- 4.123451만 수행
정답·해설 보기▾
정답
1번. 1234561, 124567 또는 1234567, 124561
해설
정답: 1. 분기 커버리지는 각 조건 분기의 참/거짓 경로를 최소 한 번 이상 수행해야 하므로 두 개의 경로 조합이 필요하다.
오답 풀이
- 1번: 2의 분기와 6의 반복/종료 분기를 모두 포함할 수 있다.
- 2번: 한 경로만으로는 반대 분기를 모두 커버하지 못한다.
- 3번: 3을 거치는 분기가 누락된다.
- 4번: 그래프 설명상 5에서 1로 직접 이동하지 않으므로 부적절하다.
보충 개념 분기 커버리지는 모든 결정 지점에서 가능한 분기 결과가 최소 한 번씩 실행되도록 테스트 케이스를 구성한다. 문장 커버리지보다 강한 기준이다.
문제 12
4지선다다음 C 코드의 출력 결과는?
C#include <stdio.h> #define SIZE 3 typedef struct { int a[SIZE]; int front; int rear; } Queue; void enq(Queue* q, int val){ q->a[q->rear] = val; q->rear = (q->rear + 1) % SIZE; } int deq(Queue* q) { int val = q->a[q->front]; q->front = (q->front + 1) % SIZE; return val; } int main() { Queue q = {{0}, 0, 0}; enq(&q, 1); enq(&q, 2); deq(&q); enq(&q, 3); int first = deq(&q); int second = deq(&q); printf("%d 그리고 %d", first, second); return 0; }- 1.1 그리고 2
- 2.2 그리고 3
- 3.1 그리고 3
- 4.3 그리고 2
정답·해설 보기▾
정답
2번. 2 그리고 3
해설
정답: 2. 1과 2를 삽입한 뒤 1을 제거하고 3을 삽입한다. 이후 두 번 제거하면 2, 3 순서로 나온다.
오답 풀이
- 1번: 첫 번째 deq로 1이 이미 제거되었다.
- 2번: 큐의 선입선출 순서를 올바르게 추적한 결과이다.
- 3번: 제거된 1을 다시 포함했다.
- 4번: 큐 순서를 후입선출처럼 잘못 계산했다.
보충 개념 원형 큐는 front와 rear를 배열 크기로 나눈 나머지로 갱신한다. deq는 front 위치의 값을 반환한 뒤 front를 증가시킨다.
문제 13
4지선다라운드로빈(RR) 스케줄링을 이용해 평균 대기시간을 구하시오.
<조건>
- 시간 할당량: 4ms
- 컨텍스트 스위칭 시간은 무시한다.
프로세스 도착 시간(ms) 실행 시간(ms) P1 0 8 P2 1 4 P3 2 9 P4 3 5 - 1.10.75ms
- 2.11.75ms
- 3.12.75ms
- 4.13.75ms
정답·해설 보기▾
정답
2번. 11.75ms
해설
정답: 2. 실행 순서는 P1(0
4), P2(48), P3(812), P4(1216), P1(1620), P3(2024), P4(2425), P3(2526)이다. 완료 시각은 P1=20, P2=8, P3=26, P4=25이고 대기시간은 완료시간 - 도착시간 - 실행시간으로 각각 12, 3, 15, 17이다. 평균 대기시간은 (12+3+15+17)/4 = 11.75ms이다.오답 풀이
- 1번: 일부 프로세스의 재대기 시간을 누락한 값에 가깝다.
- 2번: 각 프로세스의 대기시간 평균을 올바르게 계산한 값이다.
- 3번: 특정 완료 시간을 과대 계산한 값이다.
- 4번: 실행 시간과 대기 시간을 중복 계산한 값이다.
보충 개념 대기시간은 완료시간 - 도착시간 - 실행시간으로 계산할 수 있다. 라운드로빈은 시간 할당량이 끝나면 준비 큐의 뒤로 이동한다.
문제 14
4지선다다음 C 코드의 출력 결과는?
C#include <stdio.h> struct dat { int x; int y; }; int main() { struct dat a[] = {{1, 2}, {3, 4}, {5, 6}}; struct dat* ptr = a; struct dat** pptr = &ptr; (*pptr)[1] = (*pptr)[2]; printf("%d 그리고 %d", a[1].x, a[1].y); return 0; }- 1.3 그리고 4
- 2.5 그리고 6
- 3.1 그리고 2
- 4.5 그리고 4
정답·해설 보기▾
정답
2번. 5 그리고 6
해설
정답: 2.
(*pptr)[1] = (*pptr)[2]는 a[2]의 구조체 값을 a[1]에 복사하므로 a[1]은 {5, 6}이 된다.오답 풀이
- 1번: 대입 전 a[1]의 값이다.
- 2번: a[2]가 a[1]로 복사된 결과이다.
- 3번: a[0]의 값이다.
- 4번: x만 복사된다고 잘못 본 결과이다.
보충 개념 C에서 구조체 대입은 멤버 값을 통째로 복사한다. 포인터 배열 접근식
(*pptr)[i]는 ptr이 가리키는 배열의 i번째 원소를 의미한다.문제 15
4지선다다음 Java 코드의 출력 결과는?
Javapublic class Main{ public static class BO { public int v; public BO(int v) { this.v = v; } } public static void main(String[] args) { BO a = new BO(1); BO b = new BO(2); BO c = new BO(3); BO[] arr = {a, b, c}; BO t = arr[0]; arr[0] = arr[2]; arr[2] = t; arr[1].v = arr[0].v; System.out.println(a.v + "a" + b.v + "b" + c.v); } }- 1.1a3b3
- 2.3a2b1
- 3.1a2b3
- 4.3a3b1
정답·해설 보기▾
정답
1번. 1a3b3
해설
정답: 1. arr[0]과 arr[2]의 참조가 교환되어 arr[0]은 c를 가리킨다. 이후 arr[1].v, 즉 b.v에 arr[0].v인 3이 대입된다. a.v=1, b.v=3, c.v=3이므로 1a3b3이 출력된다.
오답 풀이
- 1번: 참조 교환과 객체 필드 변경을 올바르게 반영했다.
- 2번: a와 c 객체 자체의 값이 바뀐 것으로 오해한 결과이다.
- 3번: b.v 변경을 누락한 값이다.
- 4번: a.v와 c.v를 잘못 계산했다.
보충 개념 Java 배열에 객체를 저장하면 객체 자체가 아니라 참조가 저장된다. 배열 원소 교환은 참조 교환이며, 참조를 통해 필드를 변경하면 실제 객체 값이 바뀐다.
문제 16
4지선다다음 C 코드의 출력 결과는?
C#include <stdio.h> #include <stdlib.h> struct node { int p; struct node* n; }; int main() { struct node a = {1, NULL}; struct node b = {2, NULL}; struct node c = {3, NULL}; a.n = &b; b.n = &c; c.n = NULL; c.n = &a; a.n = &b; b.n = NULL; struct node* head = &c; printf("%d %d %d", head->p, head->n->p, head->n->n->p); return 0; }- 1.1 2 3
- 2.3 1 2
- 3.3 2 1
- 4.2 1 3
정답·해설 보기▾
정답
2번. 3 1 2
해설
정답: 2. 최종 연결은 c → a → b → NULL이다. head가 c를 가리키므로 출력은 3 1 2이다.
오답 풀이
- 1번: 초기 연결 a→b→c를 기준으로 본 값이다.
- 2번: 최종 연결 상태를 올바르게 추적했다.
- 3번: c 다음을 b로 잘못 본 결과이다.
- 4번: head를 b로 잘못 본 결과이다.
보충 개념 연결 리스트 문제는 마지막으로 대입된 포인터 값이 최종 구조를 결정한다. 같은 포인터 필드에 다시 대입하면 이전 연결은 덮어써진다.
문제 17
4지선다다음 Python 코드의 출력 결과는?
Pythonlst = [1, 2, 3] dst = {i: i * 2 for i in lst} s = set(dst.values()) lst[0] = 99 dst[2] = 7 s.add(99) print(len(s & set(dst.values())))- 1.1
- 2.2
- 3.3
- 4.4
정답·해설 보기▾
정답
2번. 2
해설
정답: 2. 처음 dst 값은 {2,4,6}이고 s도 {2,4,6}이다. dst[2]=7 이후 dst 값은 {2,7,6}이고 s에 99를 추가하면 {2,4,6,99}이다. 교집합은 {2,6}이므로 길이는 2이다.
오답 풀이
- 1번: 교집합 원소 하나를 누락한 값이다.
- 2번: {2,6} 두 개가 교집합이므로 정답이다.
- 3번: 4나 7을 잘못 포함한 값이다.
- 4번: s 전체 크기와 혼동한 값이다.
보충 개념 딕셔너리 컴프리헨션은 생성 시점의 리스트 값을 사용한다. 이후 리스트를 바꿔도 이미 만들어진 딕셔너리에는 자동 반영되지 않는다.
문제 18
4지선다다음 C 코드의 출력 결과는?
C#include <stdio.h> #include <stdlib.h> struct node { char c; struct node* p; }; struct node* func(char* s) { struct node* h = NULL, *n; while (*s) { n = malloc(sizeof(struct node)); n->c = *s++; n->p = h; h = n; } return h; } int main() { struct node* n = func("BEST"); while (n) { putchar(n->c); struct node* t = n; n = n->p; free(t); } return 0; }- 1.BEST
- 2.TSEB
- 3.BETS
- 4.ESTB
정답·해설 보기▾
정답
2번. TSEB
해설
정답: 2. func는 새 노드를 항상 head 앞에 붙이므로 문자열 BEST가 역순 연결 리스트로 저장된다. 따라서 출력은 TSEB이다.
오답 풀이
- 1번: 입력 문자열 순서 그대로 출력한 값이다.
- 2번: 앞쪽 삽입으로 인해 역순 출력되므로 정답이다.
- 3번: 일부 문자 순서가 잘못되었다.
- 4번: 첫 글자와 나머지 순서를 혼동한 값이다.
보충 개념 연결 리스트에서 head 앞에 계속 삽입하면 입력 순서의 역순으로 노드가 연결된다. 문자열 끝은 널 문자로 판단한다.
문제 19
4지선다다음 설명을 이용한 공격 기법으로 가장 적절한 것은?
<설명> TCP는 연결을 수립하기 위해 클라이언트가 서버에 SYN 패킷을 보내고 서버는 SYN-ACK 패킷으로 응답한 후, 클라이언트가 다시 ACK 패킷을 보내는 3-way-handshake 과정을 거친다. 이때 공격자는 수많은 SYN 패킷을 서버에 전송한 뒤 마지막 ACK를 고의로 보내지 않아 서버가 연결 대기 상태를 계속 유지하게 만든다. 이로 인해 서버의 연결 대기 큐가 가득 차 정상 접속 요청을 처리하지 못하게 된다.
- 1.SYN Flooding
- 2.Smurf Attack
- 3.Land Attack
- 4.Ping of Death
정답·해설 보기▾
정답
1번. SYN Flooding
해설
정답: 1. SYN Flooding은 대량의 SYN 요청을 보내고 연결을 완료하지 않아 서버의 연결 대기 자원을 고갈시키는 공격이다.
오답 풀이
- 1번: TCP 3-way-handshake의 반열림 상태를 악용하므로 정답이다.
- 2번: Smurf Attack은 ICMP와 브로드캐스트를 악용한다.
- 3번: Land Attack은 출발지와 목적지 주소를 같게 조작한다.
- 4번: Ping of Death는 비정상적으로 큰 ICMP 패킷을 이용한다.
보충 개념 SYN Flooding은 서비스 거부 공격의 한 유형이다. SYN 쿠키, 연결 큐 조정, 방화벽 정책 등으로 완화할 수 있다.
문제 20
4지선다다음 employee 테이블에서 관계대수식
πTTL(employee)의 연산 결과로 가장 적절한 것은?<employee 테이블 일부>
TTL 부장 대리 과장 차장 대리 <조건>
πTTL(employee)는 employee 릴레이션에서 TTL 속성만 추출하는 프로젝트 연산이다.- 1.TTL, 부장, 대리, 과장, 차장
- 2.부장, 대리, 과장, 차장, 대리
- 3.부장, 대리
- 4.TTL만 출력
정답·해설 보기▾
정답
1번. TTL, 부장, 대리, 과장, 차장
해설
정답: 1. 프로젝트 연산은 지정한 속성만 추출하며, 관계대수에서는 중복 튜플을 제거하므로 TTL 속성의 서로 다른 값인 부장, 대리, 과장, 차장이 결과가 된다.
오답 풀이
- 1번: 속성명 TTL과 중복 제거된 값들이 포함되어 가장 적절하다.
- 2번: 대리가 중복되어 관계대수의 프로젝트 결과와 맞지 않는다.
- 3번: 과장과 차장이 누락되었다.
- 4번: 속성명만 출력하는 연산이 아니다.
보충 개념 관계대수의 프로젝트 연산 π는 특정 속성 열을 선택한다. 관계는 집합 개념이므로 일반적으로 중복 튜플은 제거된다.