정처기요약
시험 직전 정리본 · 인쇄용

구조 다이어그램 (Structure Diagrams) — 7종

시스템의 정적인 구조를 표현합니다.

다이어그램 핵심 내용
Class Diagram 클래스, 속성, 메서드, 관계
Object Diagram 특정 시점의 객체 인스턴스
Component Diagram 소프트웨어 컴포넌트 구성 및 의존성
Deployment Diagram 하드웨어/서버에 소프트웨어 배치 구조
Package Diagram 패키지(모듈) 간 관계와 계층
Composite Structure Diagram 클래스 내부의 세부 구조
Profile Diagram UML 확장을 위한 메타모델 정의

행위 다이어그램 (Behavior Diagrams) — 7종

시스템의 동적인 흐름과 상호작용을 표현합니다.

다이어그램 핵심 내용
Use Case Diagram 사용자(액터)와 시스템 기능 간 관계
Activity Diagram 작업 흐름, 분기, 병렬 처리
State Diagram (State Machine) 단일 객체의 상태 변화와 전이
Sequence Diagram 객체 간 메시지 교환 순서 (시간 축)
Communication Diagram 객체 간 상호작용 (구조 중심)
Timing Diagram 시간에 따른 상태/조건 변화
Interaction Overview Diagram 여러 상호작용 다이어그램의 흐름 요약

데이터 흐름도는 시스템 내에서 데이터가 어떻게 흐르고 처리되는지를 시각적으로 표현하는 구조적 분석 도구입니다.

DFD의 구성 요소는 정확히 4가지입니다.

구성 요소 영문 표기 기호 설명
프로세스 Process 원 (○) 데이터를 변환·처리하는 기능
데이터 흐름 Data Flow 화살표 (→) 데이터가 이동하는 경로
데이터 저장소 Data Store 평행선 (=) 데이터를 저장하는 공간 (파일, DB 등)
단말 Terminator / External Entity 사각형 (□) 시스템 외부의 입출력 주체 (사람, 조직 등)

럼바우(Rumbaugh) 분석 기법 — OMT(Object Modeling Technique)

3가지 모델

1. 객체 모델링 (Object Modeling)

2. 동적 모델링 (Dynamic Modeling)

3. 기능 모델링 (Functional Modeling)

한눈에 비교

모델 핵심 질문 산출물 관점
객체 모델링 무엇이 있는가 객체 다이어그램 정적 구조
동적 모델링 어떻게 변하는가 상태 다이어그램 시간·상태
기능 모델링 무엇을 하는가 DFD 데이터 처리

학습 팁

정적 분석 도구

정적 분석이란 프로그램을 실제로 실행하지 않고 소스 코드 자체를 분석하여 오류, 보안 취약점, 코딩 규칙 위반 등을 찾아내는 기법입니다.

반대 개념인 동적 분석은 프로그램을 직접 실행하면서 분석합니다.

정적 vs 동적 분석 비교

구분 정적 분석 동적 분석
실행 여부 실행 안 함 실행함
분석 시점 개발 중, 컴파일 전후 런타임
발견 대상 코드 결함, 보안 취약점, 규칙 위반 메모리 누수, 성능 병목, 런타임 오류
대표 도구 pmd, cppcheck, SonarQube Valgrind, JUnit

대표적인 정적 분석 도구

도구 대상 언어 특징
pmd Java 등 코드 스타일, 중복 코드, 불필요한 코드 탐지
cppcheck C, C++ 메모리 오류, 널 포인터, 버퍼 오버플로 탐지
SonarQube 다중 언어 코드 품질 종합 관리 플랫폼, 대시보드 제공
FindBugs / SpotBugs Java 바이트코드 분석으로 버그 패턴 탐지
Checkstyle Java 코딩 컨벤션 준수 여부 검사

시험에서는 pmd, cppcheck가 정적 분석 도구의 대표 예시로 자주 등장합니다.

"실행 없이 코드만 본다 = 정적" 으로 기억하세요.

정적 분석은 개발 초기에 결함을 발견할 수 있어 비용 효율이 높다는 점도 출제 포인트입니다.

선택 정렬 (Selection Sort)

개념

전체 데이터에서 가장 작은(또는 큰) 값을 선택하여 앞에서부터 차례로 채워나가는 정렬 방식입니다.


동작 원리

배열: [5, 3, 8, 1, 4] 를 오름차순 정렬하는 예시

초기: [5, 3, 8, 1, 4]

1회전: 최솟값 1 선택 → 5와 교환

​ [1, 3, 8, 5, 4]

2회전: 나머지 중 최솟값 3 선택 → 제자리

​ [1, 3, 8, 5, 4]

3회전: 나머지 중 최솟값 4 선택 → 8과 교환

​ [1, 3, 4, 5, 8]

4회전: 나머지 중 최솟값 5 선택 → 제자리

​ [1, 3, 4, 5, 8] ← 정렬 완료


핵심 특징

항목 내용
시간 복잡도 최선 / 평균 / 최악 모두 O(n²)
공간 복잡도 O(1) — 제자리 정렬 (추가 메모리 불필요)
안정성 불안정(Unstable) 정렬
비교 횟수 항상 n(n-1)/2 번으로 고정
교환 횟수 최대 n-1번으로 버블 정렬보다 교환이 적음

다른 O(n²) 정렬과 비교

정렬 방식 안정성 특징
선택 정렬 최솟값 선택 후 교환 불안정 교환 횟수 가장 적음
버블 정렬 인접 요소 비교·교환 안정 구현 가장 단순
삽입 정렬 적절한 위치에 삽입 안정 거의 정렬된 경우 빠름

학습 팁

EAI 4가지 구축 유형

1. Point-to-Point

2. Hub & Spoke

3. Message Bus (ESB 방식)

4. Hybrid


유형별 핵심 비교

유형 연결 방식 병목 확장성 특징
Point-to-Point 1:1 직접 연결 없음 낮음 미들웨어 없음
Hub & Spoke 중앙 허브 경유 있음 중간 단일 장애점
Message Bus 공유 버스 경유 적음 높음 분산 처리
Hybrid 혼합 최소화 높음 두 방식 결합

학습 팁

1. 단위 테스트 (Unit Test)

2. 통합 테스트 (Integration Test)

3. 시스템 테스트 (System Test)

4. 인수 테스트 (Acceptance Test)


한눈에 비교

단계 대상 범위 주체 핵심 키워드
단위 테스트 개별 모듈 하나 개발자 모듈, 기능 정확성
통합 테스트 모듈 간 결합 개발자 인터페이스, 연동
시스템 테스트 전체 시스템 개발팀 요구사항 전체 검증
인수 테스트 전체 시스템 사용자/고객 요구사항 만족 여부

통합 테스트와 단위 테스트는 범위로 구분하세요. 모듈 하나면 단위, 여러 모듈 결합이면 통합입니다.

**스텁(Stub)과 드라이버(Driver)**는 통합 테스트에서 사용하는 도구로, 함께 출제되는 경우가 많습니다.

소프트웨어 테스트에서 오류의 80%는 전체 모듈의 20% 내에서 발견된다는 법칙은?

Pareto

이 문제가 테스트하는 지식: 자료 구조의 종류와 특징

선형/비선형 구조의 분류, 그리고 스택·큐의 동작 방식과 활용처를 정확히 알고 있는지를 평가합니다.

핵심 개념: 자료 구조 분류

선형 구조 (Linear)

데이터가 일렬로 나열된 구조입니다.

자료 구조 특징
배열 (Array) 인덱스로 접근, 크기 고정
연결 리스트 (Linked List) 포인터로 연결, 크기 가변
스택 (Stack) LIFO (Last In First Out)
큐 (Queue) FIFO (First In First Out)
데크 (Deque) 양쪽 끝에서 삽입/삭제 가능

비선형 구조 (Non-Linear)

데이터가 계층적 또는 망형으로 연결된 구조입니다.

자료 구조 특징
트리 (Tree) 계층 구조, 부모-자식 관계
그래프 (Graph) 노드와 간선, 순환 가능

스택과 큐 상세 비교

구분 스택 (Stack) 큐 (Queue)
처리 방식 LIFO (후입선출) FIFO (선입선출)
삽입 Push (top에 추가) Enqueue (rear에 추가)
삭제 Pop (top에서 제거) Dequeue (front에서 제거)
구조 분류 선형 선형
활용 예 함수 호출, 인터럽트, 수식 계산, 되돌리기(Undo) 프로세스 스케줄링, 프린터 대기열, BFS

스택의 주요 활용처 (시험 자주 출제)

서브루틴(함수) 호출: 복귀 주소를 스택에 저장

인터럽트 처리: 현재 상태를 스택에 보관 후 복귀

수식 계산: 후위 표기법(Postfix) 계산에 활용

수식 표기법 변환: 중위 → 후위 변환 시 사용

되돌리기(Undo): 최근 작업을 역순으로 취소

학습 팁

"스택 = LIFO = 선형", "큐 = FIFO = 선형" 을 한 세트로 암기하세요.

트리와 그래프만 비선형입니다. 스택과 큐를 비선형으로 혼동하는 경우가 많으니 주의하세요.

스택의 활용처 4가지(서브루틴, 인터럽트, 수식 계산, 수식 표기법)는 통째로 암기해 두는 것이 좋습니다.

분류 명령어
DDL CREATE, ALTER, DROP, TRUNCATE
DML SELECT, INSERT, UPDATE, DELETE
DCL GRANT, REVOKE
TCL COMMIT, ROLLBACK, SAVEPOINT

DDL (Data Definition Language) — 데이터 정의어

구조(스키마)를 생성·변경·삭제합니다.

명령어 기능
CREATE 테이블, 뷰 등 객체 생성
ALTER 구조 변경 (컬럼 추가/수정)
DROP 객체 완전 삭제
TRUNCATE 데이터만 전체 삭제 (구조 유지)

AUTO COMMIT — 실행 즉시 반영, ROLLBACK 불가

DML (Data Manipulation Language) — 데이터 조작어

데이터를 조회·삽입·수정·삭제합니다.

명령어 기능
SELECT 데이터 조회
INSERT 데이터 삽입
UPDATE 데이터 수정
DELETE 행 단위 삭제 (구조 유지)

COMMIT 전까지 ROLLBACK 가능

DCL (Data Control Language) — 데이터 제어어

권한을 부여하고 회수합니다.

명령어 기능
GRANT 권한 부여 (TO, WITH GRANT OPTION)
REVOKE 권한 회수 (FROM, CASCADE)

TCL (Transaction Control Language) — 트랜잭션 제어어

트랜잭션 상태를 제어합니다.

명령어 기능
COMMIT 변경사항 영구 확정
ROLLBACK 변경사항 취소·복귀
SAVEPOINT 중간 저장점 설정

핵심 암기 포인트

DDL → 구조 정의 → AUTO COMMIT (롤백 불가)

DML → 데이터 조작 → 트랜잭션 대상 (롤백 가능)

DCL → 권한 제어 → GRANT / REVOKE

TCL → 트랜잭션 제어 → COMMIT / ROLLBACK

핵심 개념: E-R 다이어그램 기호 체계

E-R(Entity-Relationship) 다이어그램은 데이터베이스의 개념적 설계 단계에서 사용하며, 각 요소를 고유한 도형으로 표현합니다.

기호 도형 의미
사각형 (□) 직사각형 개체 타입 (Entity Type)
타원 (○) 타원형 속성 (Attribute)
마름모 (◇) 다이아몬드 관계 타입 (Relationship Type)
선 (—) 실선 개체-속성 연결 / 개체-관계 연결
이중 타원 이중 타원형 다중값 속성
이중 사각형 이중 직사각형 약한 개체 타입
밑줄 타원 밑줄 있는 타원 기본키 속성

핵심 4가지만 압축 암기

사각형 → 개체 (Entity)

타원 → 속성 (Attribute)

마름모 → 관계 (Relationship)

선 → 연결


학습 팁

카디널리티 (Cardinality)

차수 (Degree)

핵심 개념: 관계대수 (Relational Algebra)


관계대수 vs 관계해석 비교

이 문제의 핵심 혼동 포인트입니다.

구분 관계대수 관계해석
언어 유형 절차적 비절차적
표현 방식 How (어떻게 구할 것인가) What (무엇을 원하는가)
기반 연산자 중심 논리식(술어 논리) 중심
종류 - 튜플 관계해석, 도메인 관계해석

관계대수 연산자 종류

일반 집합 연산

연산 기호 설명
합집합 두 릴레이션의 모든 튜플
교집합 공통 튜플
차집합 - 한쪽에만 있는 튜플
카티션 프로덕트 × 두 릴레이션의 모든 조합

순수 관계 연산

연산 기호 설명
셀렉트 σ 조건에 맞는 선택
프로젝트 π 원하는 선택
조인 공통 속성으로 두 릴레이션 결합
디비전 ÷ 특정 릴레이션을 포함하는 튜플 추출

학습 팁

IPv4 vs IPv6 핵심 비교


구분 IPv4 IPv6
주소 길이 32비트 128비트
표현 방식 10진수, 점(.) 구분 16진수, 콜론(:) 구분
예시 192.168.0.1 2001:0db8:85a3::8a2e
주소 개수 약 43억 개 사실상 무한
헤더 길이 가변 길이 40 octet 고정
주소 자동설정 지원 안 함 (DHCP 필요) Auto Configuration 지원
보안 IPSec 선택 적용 IPSec 기본 내장
QoS 미흡 흐름 레이블로 향상
브로드캐스트 지원 미지원
멀티캐스트 선택적 지원 기본 지원
애니캐스트 미지원 기본 지원
체크섬 헤더에 포함 헤더에서 제거

전송 방식 비교

방식 IPv4 IPv6
유니캐스트 (1:1)
멀티캐스트 (1:다)
브로드캐스트 (1:전체)
애니캐스트 (1:가장 가까운 1)

이 문제와 연결되는 핵심 포인트

IPv6 헤더 = 40 octet 고정 (32 octet이 아님)

IPv6 = Auto Configuration 지원

IPv4 = 주소 자동설정 미지원, 수동 또는 DHCP 사용

IPv4 클래스(A/B/C/D/E) = 네트워크/호스트 비트 수가 클래스마다 다름


학습 팁

IPv4 클래스별 주소 범위

클래스 시작 주소 끝 주소 네트워크/호스트 비트
A 0.0.0.0 127.255.255.255 8 / 24
B 128.0.0.0 191.255.255.255 16 / 16
C 192.0.0.0 223.255.255.255 24 / 8
D 224.0.0.0 239.255.255.255 멀티캐스트용
E 240.0.0.0 255.255.255.255 연구/예약용

첫 번째 옥텟 범위로 암기

A클래스: 0 ~ 127

B클래스: 128 ~ 191

C클래스: 192 ~ 223

D클래스: 224 ~ 239

E클래스: 240 ~ 255

C언어 연산자 우선순위 (높음 → 낮음)

순위 연산자 종류 대표 연산자
1 단항 연산자 ++ -- ! ~ (type) sizeof
2 산술 연산자 * / % → + -
3 시프트 연산자 << >>
4 관계 연산자 < > <= >= → == !=
5 비트 연산자 & → ^ → `
6 논리 연산자 && → `
7 조건 연산자 ? :
8 대입 연산자 = += -= 등
9 쉼표 연산자 ,

핵심 개념: 흐름 제어 (Flow Control)

송신 측과 수신 측의 데이터 처리 속도 차이로 인한 데이터 손실을 방지하기 위해 송신량을 조절하는 기법입니다.


두 가지 흐름 제어 방식

1. 정지-대기 (Stop-and-Wait)

2. 슬라이딩 윈도우 (Sliding Window)


슬라이딩 윈도우 크기 조절 원리

상황 윈도우 크기 변화
ACK 수신 (정상) 증가 → 더 많은 패킷 전송 가능
NAK 수신 (오류 발생) 감소 → 전송량 줄임
타임아웃 발생 감소 → 혼잡 제어와 연계

ACK vs NAK

신호 의미 송신 측 반응
ACK (Acknowledgement) 정상 수신 확인 윈도우 크기 유지 또는 증가
NAK (Negative Acknowledgement) 오류 수신 윈도우 크기 감소, 재전송

학습 팁

핵심 개념: 구역성 (Locality)

프로세스가 실행될 때 일부 특정 페이지만 집중적으로 참조하는 경향을 말합니다. 캐시 메모리와 가상 메모리의 성능 이론적 근거가 됩니다.


두 가지 구역성 비교

구분 시간 구역성 (Temporal) 공간 구역성 (Spatial)
의미 최근에 참조한 데이터를 가까운 미래에 다시 참조 참조한 데이터 근처의 데이터를 참조
핵심 키워드 같은 위치를 반복 참조 인접한 위치를 참조
대표 예시 루프, 서브루틴, 스택, 카운터 변수 배열 순회, 순차적 코드 실행

각 선택지와 구역성의 관계

시간 구역성에 해당하는 것들

공간 구역성에 해당하는 것


학습 팁

*(p1 + 2)는 결국 str1[2] (0,1,2)

핵심 개념: 결합도 (Coupling)

모듈 간의 상호 의존 정도를 나타내며, 낮을수록 좋은 설계입니다.


결합도 6종류 (높음 → 낮음)

순위 종류 핵심 특징
1 (가장 나쁨) 내용 결합도 (Content) 한 모듈이 다른 모듈의 내부 기능·내부 자료를 직접 참조
2 공통 결합도 (Common) **두 모듈이 *전역 변수(공유 데이터)*를 함께 사용
3 외부 결합도 (External) 외부에서 선언된 변수를 공유
4 제어 결합도 (Control) ***제어 신호(플래그, 스위치)*를 파라미터로 전달하여 상대 모듈의 흐름을 제어
5 스탬프 결합도 (Stamp) ***자료 구조(레코드, 구조체 전체)*를 파라미터로 전달
6 (가장 좋음) 자료 결합도 (Data) 필요한 데이터만 단순 파라미터로 전달

각 결합도 구체적 구분

내용 결합도 (Content)

모듈 A가 모듈 B의 내부 변수나 코드를 직접 수정·참조

→ "남의 집 내부를 마음대로 들어가 건드리는 것"

공통 결합도 (Common)

모듈 A와 B가 같은 전역변수(global variable)를 공유

→ "공용 창고를 함께 쓰는 것"

제어 결합도 (Control)

모듈 A가 모듈 B에게 flag 값을 넘겨 B의 실행 흐름을 결정

→ "리모컨으로 상대방을 조종하는 것"

스탬프 결합도 (Stamp)

구조체나 배열 전체를 넘기지만 일부만 사용

→ "필요한 것 하나 때문에 서류 뭉치 전체를 건네는 것"

자료 결합도 (Data)

꼭 필요한 단순 값만 파라미터로 전달

→ "필요한 것만 딱 건네는 것" (가장 이상적)


암기 팁

"내공외제스자" 로 순서를 외우세요.

내용 → 공통 → 외부 → 제어 → 스탬프 → 자료

(나쁨 ←————————————————→ 좋음)

C 언어 주요 표준 라이브러리


1. <stdio.h> — 입출력

Standard Input/Output

함수 기능
printf() 형식 지정 출력
scanf() 형식 지정 입력
gets() / puts() 문자열 입출력
getchar() / putchar() 문자 단위 입출력
fopen() / fclose() 파일 열기/닫기
fread() / fwrite() 파일 읽기/쓰기

2. <stdlib.h> — 일반 유틸리티

Standard Library

함수 기능
malloc() 동적 메모리 할당
calloc() 동적 할당 + 0으로 초기화
realloc() 할당된 메모리 크기 변경
free() 동적 메모리 해제
atoi() 문자열 → 정수 변환
atof() 문자열 → 실수 변환
rand() 난수 생성
srand() 난수 시드 설정
exit() 프로그램 종료
abs() 정수 절댓값

3. <string.h> — 문자열 처리

함수 기능
strlen() 문자열 길이 반환
strcpy() 문자열 복사
strcat() 문자열 이어붙이기
strcmp() 문자열 비교
strchr() 문자 탐색
strstr() 부분 문자열 탐색
memset() 메모리 블록 초기화
memcpy() 메모리 블록 복사

4. <math.h> — 수학 함수

함수 기능
sqrt() 제곱근
pow() 거듭제곱
abs() / fabs() 절댓값 (정수/실수)
ceil() 올림
floor() 내림
sin() / cos() / tan() 삼각함수
log() / log10() 자연로그 / 상용로그

5. <ctype.h> — 문자 분류·변환

함수 기능
isalpha() 알파벳 여부
isdigit() 숫자 문자 여부
isspace() 공백 여부
isupper() / islower() 대/소문자 여부
toupper() / tolower() 대/소문자 변환

6. <time.h> — 시간 처리

함수 기능
time() 현재 시간 반환
clock() CPU 실행 시간 측정
difftime() 두 시간의 차이

시험 출제 빈도 기준

★★★ stdio.h, stdlib.h, string.h

★★ math.h, ctype.h

★ time.h

이 문제가 테스트하는 지식: 파일 디스크립터(File Descriptor)의 개념, 특징, 저장 위치


핵심 개념: 파일 디스크립터(File Descriptor)란?

파일 디스크립터는 운영체제가 파일을 관리하기 위해 필요한 파일에 대한 정보를 담고 있는 제어 구조입니다.

주요 특징:


핵심 포인트: 저장 위치

파일 디스크립터의 저장 위치는 시험에서 자주 출제되는 핵심 사항입니다.

상태 저장 위치
파일이 열리지 않은 상태 (평상시) 보조기억장치 (디스크)
파일이 열린(open) 상태 주기억장치 (메모리)로 이동

즉, 파일이 개방(open)되면 보조기억장치에 있던 파일 디스크립터가 주기억장치로 이동하여 운영체제가 빠르게 참조할 수 있게 됩니다.


혼동 포인트 정리

선택지 ④의 방향성에 주목하세요.

이동 방향이 실제와 일치하는지, 반대인지를 정확히 확인하는 것이 이 문제의 핵심입니다.


학습 팁

핵심 개념: 암호화 방식의 두 가지 분류

개인키 암호화 = 대칭키 암호화

암호화와 복호화에 동일한 하나의 키를 사용하는 방식입니다.

항목 대칭키(개인키) 암호화 비대칭키(공개키) 암호화
키 구성 암호화 = 복호화 (같은 키) 공개키(암호화) + 개인키(복호화)
속도 빠름 느림
키 관리 어려움 (키 배송 문제) 상대적으로 용이
대표 알고리즘 DES, AES, ARIA, SEED, 3DES RSA, ECC, Diffie-Hellman

각 선택지 알고리즘 상세

DES (Data Encryption Standard)

ARIA

SEED

RSA (Rivest–Shamir–Adleman)


학습 팁

이 문제가 테스트하는 지식: 해시(Hash) 알고리즘과 대칭키 암호화 알고리즘의 분류 구분


핵심 개념: 암호 알고리즘의 두 가지 성격

이 문제는 선택지 4개 중 3개는 같은 범주, 1개는 다른 범주에 속하는 것을 찾는 유형입니다. 따라서 각 알고리즘이 어떤 종류인지 분류하는 것이 핵심입니다.


해시(Hash) 알고리즘

**임의의 길이 데이터를 *고정된 길이의 값(해시값)*으로 변환하는 단방향 함수입니다.

알고리즘 출력 비트 특징
MD4 128비트 Ron Rivest 개발, 보안 취약
MD5 128비트 MD4 개선판, 현재 충돌 취약점 발견됨
SHA-1 160비트 미국 NIST 표준, 현재는 SHA-256 권장

대칭키(블록) 암호화 알고리즘

데이터를 암호화하고 복호화할 수 있는 양방향 암호화 알고리즘입니다.

알고리즘 키 길이 특징
AES 128/192/256비트 미국 NIST 표준 대칭키 암호화, DES 대체

핵심 비교 정리

구분 MD4 MD5 SHA-1 AES
종류 해시 해시 해시 대칭키 암호화
방향성 단방향 단방향 단방향 양방향
복호화 가능 여부 불가 불가 불가 가능

학습 팁

DoS 공격이란?

DoS는 서비스 거부 공격으로, 시스템/네트워크 자원을 고갈시켜 정상 사용자가 서비스를 이용하지 못하게 만드는 공격입니다. 직접 데이터를 훔치는 게 아니라 "서비스 불능 상태"를 만드는 것이 목적입니다.


각 공격 유형 상세 설명

1. Ping of Death

2. Smurf 공격

브로드캐스트 vs 멀티캐스트

3. SYN Flooding

4. Land 공격 (Local Area Network Denial)


추가로 알아둘 DoS/DDoS 공격 유형

공격명 핵심 메커니즘
DDoS 여러 좀비 PC(봇넷)를 동원한 분산 DoS 공격
Teardrop 조각(Fragment) 패킷의 offset 값을 조작해 재조합 오류 유발
UDP Flood 대량의 UDP 패킷으로 대역폭 소진
HTTP GET Flood 정상처럼 보이는 HTTP 요청을 대량 전송 (애플리케이션 계층 공격)
Slowloris HTTP 연결을 아주 느리게 유지해 서버 연결 자원 고갈

시험에서 자주 헷갈리는 포인트 요약