컴퓨터공학 전공 핵심정리 중편: 소프트웨어공학, 데이터통신, 네트워크 — 객관식 완벽 대비

컴퓨터공학 전공 핵심정리 중편: 소프트웨어공학, 데이터통신, 네트워크

객관식에서 암기형 + 계산형 문제가 골고루 출제되는 3과목이다. 특히 서브넷 계산, 오류 검출, UML 다이어그램 해석 등은 반드시 손으로 풀어봐야 한다.


Part 1. 소프트웨어공학 (Software Engineering)

1. 소프트웨어 개발 생명주기 (SDLC)

1.1 주요 모델 비교

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
┌─────────────────────────────────────────────────────────────────────┐
│                    SDLC 모델 비교                                    │
├──────────────┬───────────────────────┬──────────────────────────────┤
│ 모델         │ 특징                  │ 장단점                       │
├──────────────┼───────────────────────┼──────────────────────────────┤
│ 폭포수       │ 순차적 진행           │ 장: 관리 용이, 문서화 충실   │
│ (Waterfall)  │ 요구→설계→구현→      │ 단: 요구 변경 어려움,        │
│              │ 테스트→유지보수       │     후반부 오류 수정 비용 큼 │
├──────────────┼───────────────────────┼──────────────────────────────┤
│ V-모델       │ 폭포수 + 테스트 대응  │ 장: 각 단계별 검증 명확      │
│              │ 요구분석↔인수테스트   │ 단: 반복 개발 불가           │
│              │ 설계↔통합테스트       │                              │
│              │ 상세설계↔단위테스트   │                              │
├──────────────┼───────────────────────┼──────────────────────────────┤
│ 프로토타입   │ 시제품 먼저 개발      │ 장: 요구사항 명확화          │
│              │ 사용자 피드백 반영    │ 단: 프로토타입 폐기 비용     │
├──────────────┼───────────────────────┼──────────────────────────────┤
│ 나선형       │ 계획→위험분석→개발→  │ 장: 위험 관리 우수           │
│ (Spiral)     │ 평가 반복             │ 단: 비용 큼, 관리 복잡       │
│              │ ★ 위험분석이 핵심!    │                              │
├──────────────┼───────────────────────┼──────────────────────────────┤
│ 애자일       │ 짧은 스프린트 반복    │ 장: 변화 대응 유연           │
│ (Agile)      │ 고객 협력 중시        │ 단: 문서화 부족 가능         │
│              │ XP, Scrum, Kanban 등  │                              │
├──────────────┼───────────────────────┼──────────────────────────────┤
│ RAD          │ 빠른 개발, CASE 도구  │ 장: 개발 속도 빠름           │
│              │ 활용                  │ 단: 대규모 프로젝트 부적합   │
└──────────────┴───────────────────────┴──────────────────────────────┘

★ 나선형 모델의 4단계: 계획 → 위험분석 → 개발 → 고객평가
★ V-모델: 왼쪽(개발)과 오른쪽(테스트)이 1:1 대응
★ 애자일 선언 4가지 가치:
  1) 프로세스/도구 < 개인과 상호작용
  2) 포괄적 문서 < 작동하는 소프트웨어
  3) 계약 협상 < 고객과의 협력
  4) 계획 따르기 < 변화에 대응

1.2 애자일 방법론 상세

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
┌─ XP (eXtreme Programming) ──────────────────────────────────────┐
│ 핵심 실천법 12가지 중 시험 빈출:                                  │
│  • 페어 프로그래밍 (Pair Programming): 2인 1조 코딩              │
│  • TDD (Test-Driven Development): 테스트 먼저 작성               │
│  • 리팩토링 (Refactoring): 기능 변경 없이 구조 개선              │
│  • 지속적 통합 (CI): 하루에 여러 번 빌드/통합                    │
│  • 작은 릴리즈 (Small Release): 짧은 주기로 배포                 │
│  • 코드 공동 소유: 누구나 어떤 코드든 수정 가능                  │
│  • 40시간 작업: 초과근무 지양                                     │
│  • 고객 상주 (On-site Customer)                                  │
└──────────────────────────────────────────────────────────────────┘

┌─ Scrum ─────────────────────────────────────────────────────────┐
│ 역할: Product Owner, Scrum Master, Development Team              │
│ 산출물: Product Backlog, Sprint Backlog, Increment               │
│ 이벤트:                                                          │
│  • Sprint: 1~4주 반복 주기                                       │
│  • Sprint Planning: 무엇을 할지 계획                              │
│  • Daily Scrum: 매일 15분 스탠드업                                │
│  • Sprint Review: 결과물 데모                                     │
│  • Sprint Retrospective: 프로세스 개선 회고                       │
│                                                                  │
│ ★ Scrum Master ≠ 관리자. 장애물 제거 역할(서번트 리더)           │
│ ★ Product Owner: 백로그 우선순위 결정 권한                        │
│ ★ Burndown Chart: 남은 작업량 추적 그래프                         │
└──────────────────────────────────────────────────────────────────┘

2. 요구공학과 UML

2.1 요구사항 분류

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
요구사항
├── 기능적 요구사항 (Functional)
│   └── 시스템이 "무엇을" 해야 하는가
│       예) 사용자가 로그인할 수 있어야 한다
│
└── 비기능적 요구사항 (Non-Functional)
    ├── 성능: 응답시간 2초 이내
    ├── 보안: 비밀번호 암호화 저장
    ├── 가용성: 99.9% 업타임
    ├── 확장성: 동시 접속 10,000명
    └── 이식성: Windows, Linux 지원

★ 요구사항 개발 프로세스:
  도출(Elicitation) → 분석(Analysis) → 명세(Specification) → 확인(Validation)
★ 요구사항 관리: 변경 관리, 추적성(Traceability), 형상 관리

2.2 UML 다이어그램

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
UML 다이어그램
├── 구조 다이어그램 (정적)
│   ├── 클래스 다이어그램 ★ 가장 빈출
│   ├── 객체 다이어그램
│   ├── 컴포넌트 다이어그램
│   ├── 배치(Deployment) 다이어그램
│   ├── 패키지 다이어그램
│   └── 복합 구조 다이어그램
│
└── 행위 다이어그램 (동적)
    ├── 유스케이스 다이어그램 ★ 빈출
    ├── 시퀀스 다이어그램 ★ 빈출
    ├── 활동(Activity) 다이어그램
    ├── 상태(State) 다이어그램
    ├── 통신(Communication) 다이어그램
    ├── 인터랙션 개요 다이어그램
    └── 타이밍 다이어그램

2.3 클래스 다이어그램 관계

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
┌─────────────────────────────────────────────────────────────────┐
│ 클래스 관계 (약한 결합 → 강한 결합 순)                           │
├───────────────┬───────────┬────────────────────────────────────┤
│ 관계          │ 표기      │ 설명                               │
├───────────────┼───────────┼────────────────────────────────────┤
│ 의존          │ ---->     │ 일시적 사용 (매개변수, 지역변수)   │
│ (Dependency)  │ (점선)    │ "uses"                             │
├───────────────┼───────────┼────────────────────────────────────┤
│ 연관          │ ────>     │ 지속적 참조 (멤버 변수)            │
│ (Association) │ (실선)    │ "has-a" (약한)                     │
├───────────────┼───────────┼────────────────────────────────────┤
│ 집합          │ ◇───>     │ 전체-부분, 독립 생명주기           │
│ (Aggregation) │ 빈 다이아 │ "has-a" (부분이 독립적 존재)       │
├───────────────┼───────────┼────────────────────────────────────┤
│ 합성          │ ◆───>     │ 전체-부분, 동일 생명주기           │
│ (Composition) │ 채운 다이아│ "has-a" (전체 소멸 시 부분도 소멸)│
├───────────────┼───────────┼────────────────────────────────────┤
│ 일반화        │ ──▷       │ 상속 관계                          │
│ (Generalizat.)│ 빈 삼각형 │ "is-a"                             │
├───────────────┼───────────┼────────────────────────────────────┤
│ 실체화        │ --▷       │ 인터페이스 구현                    │
│ (Realization) │ 점선+삼각 │ "implements"                       │
└───────────────┴───────────┴────────────────────────────────────┘

★ 집합(Aggregation) vs 합성(Composition) 차이:
  - 집합: 교실 ◇── 학생 → 교실 없어져도 학생은 존재
  - 합성: 주문 ◆── 주문항목 → 주문 삭제 시 항목도 삭제
★ 다중성 표기: 1, 0..1, 0..*, 1..*, n..m

2.4 유스케이스 다이어그램

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
┌────────────────────────────────────────────────────────────────┐
│ 유스케이스 관계                                                 │
├──────────────┬──────────────────────────────────────────────────┤
│ 포함         │ <<include>>: 반드시 실행되는 공통 기능           │
│              │ 예) "주문하기" --include--> "로그인"              │
│              │ (주문하려면 반드시 로그인 필요)                   │
├──────────────┼──────────────────────────────────────────────────┤
│ 확장         │ <<extend>>: 조건부 실행되는 선택 기능            │
│              │ 예) "결제하기" <--extend-- "쿠폰적용"            │
│              │ (쿠폰은 선택적으로 적용)                         │
├──────────────┼──────────────────────────────────────────────────┤
│ 일반화       │ 유스케이스 간 상속                               │
│              │ 예) "결제" ──▷ "카드결제", "현금결제"            │
└──────────────┴──────────────────────────────────────────────────┘

★ include: 화살표 방향 = 기본 → 포함되는 것
★ extend: 화살표 방향 = 확장하는 것 → 기본
  (방향이 반대라서 헷갈리기 쉬움!)
★ 액터(Actor): 시스템 외부에서 상호작용하는 존재 (사용자, 외부시스템)

3. 설계 원칙과 디자인 패턴

3.1 객체지향 설계 원칙 (SOLID)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
┌──────────────────────────────────────────────────────────────────┐
│ SOLID 원칙                                                       │
├─────┬──────────────────┬────────────────────────────────────────┤
│ S   │ SRP (단일 책임)  │ 클래스는 하나의 책임만 가져야 한다     │
│     │                  │ 변경 이유가 하나뿐이어야 함            │
├─────┼──────────────────┼────────────────────────────────────────┤
│ O   │ OCP (개방-폐쇄)  │ 확장에는 열려있고, 수정에는 닫혀있다   │
│     │                  │ 기존 코드 수정 없이 기능 추가 가능     │
├─────┼──────────────────┼────────────────────────────────────────┤
│ L   │ LSP (리스코프    │ 하위 타입은 상위 타입을 대체할 수      │
│     │      치환)       │ 있어야 한다 (행위적 호환성)            │
├─────┼──────────────────┼────────────────────────────────────────┤
│ I   │ ISP (인터페이스  │ 클라이언트는 사용하지 않는 메서드에    │
│     │      분리)       │ 의존하지 않아야 한다                   │
├─────┼──────────────────┼────────────────────────────────────────┤
│ D   │ DIP (의존 역전)  │ 고수준 모듈이 저수준 모듈에 의존 X     │
│     │                  │ 둘 다 추상화에 의존해야 한다           │
└─────┴──────────────────┴────────────────────────────────────────┘

★ OCP 구현 방법: 추상화, 다형성, 전략 패턴 등
★ DIP 핵심: "추상화에 의존하라, 구체화에 의존하지 마라"
★ 결합도(Coupling): 낮을수록 좋음
  내용 > 공통 > 외부 > 제어 > 스탬프 > 자료 (↑높음 ... 낮음↓)
★ 응집도(Cohesion): 높을수록 좋음
  기능적 > 순차적 > 통신적 > 절차적 > 시간적 > 논리적 > 우연적

3.2 GoF 디자인 패턴

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
┌─────────────────────────────────────────────────────────────────────┐
│ GoF 디자인 패턴 (23개)                                               │
├──────────────┬──────────────────────────────────────────────────────┤
│ 생성 패턴    │ 객체 생성 방법 추상화                                │
│ (5개)        │ • Singleton: 인스턴스 하나만 보장                    │
│              │ • Factory Method: 서브클래스가 생성할 객체 결정      │
│              │ • Abstract Factory: 관련 객체 가족 생성              │
│              │ • Builder: 복잡한 객체 단계별 생성                   │
│              │ • Prototype: 기존 객체 복제                          │
├──────────────┼──────────────────────────────────────────────────────┤
│ 구조 패턴    │ 클래스/객체 합성으로 구조 설계                       │
│ (7개)        │ • Adapter: 호환 안 되는 인터페이스 변환 ★            │
│              │ • Bridge: 추상-구현 분리                             │
│              │ • Composite: 트리 구조 동일 인터페이스               │
│              │ • Decorator: 기능 동적 추가 ★                       │
│              │ • Facade: 복잡한 서브시스템에 단순 인터페이스 ★      │
│              │ • Flyweight: 공유로 메모리 절약                      │
│              │ • Proxy: 대리 객체가 접근 제어                       │
├──────────────┼──────────────────────────────────────────────────────┤
│ 행위 패턴    │ 객체 간 알고리즘/책임 분배                           │
│ (11개)       │ • Observer: 상태 변화 시 구독자에게 통지 ★           │
│              │ • Strategy: 알고리즘 교체 가능 ★                     │
│              │ • Template Method: 알고리즘 뼈대 정의, 세부 위임     │
│              │ • Command: 요청을 객체로 캡슐화                      │
│              │ • State: 상태에 따라 행위 변경                       │
│              │ • Chain of Responsibility: 요청 처리 체인            │
│              │ • Iterator: 내부 표현 노출 없이 순차 접근            │
│              │ • Mediator: 객체 간 통신 중재                        │
│              │ • Memento: 상태 저장/복원 (Undo)                     │
│              │ • Visitor: 구조 변경 없이 새 연산 추가               │
│              │ • Interpreter: 언어 문법 해석                        │
└──────────────┴──────────────────────────────────────────────────────┘

★ 시험 단골: 패턴 설명 → 패턴 이름 고르기
  - "인스턴스가 하나만" → Singleton
  - "인터페이스 변환" → Adapter
  - "기능 동적 추가" → Decorator
  - "상태 변화 통지" → Observer
  - "알고리즘 캡슐화 교체" → Strategy
  - "복잡한 서브시스템 단순 접근" → Facade
  - "요청을 객체로" → Command

4. 소프트웨어 테스트

4.1 테스트 레벨

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
┌─────────────────────────────────────────────────────────────────┐
│ V-모델 기준 테스트 레벨                                          │
│                                                                  │
│  요구분석  ─────────────────────── 인수 테스트 (Acceptance)       │
│     │                                    │                       │
│  시스템설계 ────────────────── 시스템 테스트 (System)             │
│     │                                │                           │
│  상세설계 ─────────────── 통합 테스트 (Integration)              │
│     │                            │                               │
│  구현 ──────────────── 단위 테스트 (Unit)                        │
│                                                                  │
│ ★ 단위 테스트: 모듈/함수 단위, 개발자가 수행                     │
│ ★ 통합 테스트: 모듈 간 인터페이스 테스트                         │
│ ★ 시스템 테스트: 전체 시스템 요구사항 검증                       │
│ ★ 인수 테스트: 고객이 수행 (알파/베타 테스트)                    │
│   - 알파: 개발 환경에서 사용자가 테스트                          │
│   - 베타: 실제 환경에서 사용자가 테스트                          │
└─────────────────────────────────────────────────────────────────┘

4.2 화이트박스 vs 블랙박스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
┌──────────────┬────────────────────────┬─────────────────────────┐
│              │ 화이트박스 테스트       │ 블랙박스 테스트          │
├──────────────┼────────────────────────┼─────────────────────────┤
│ 관점         │ 내부 구조/로직 기반    │ 외부 명세/요구사항 기반 │
├──────────────┼────────────────────────┼─────────────────────────┤
│ 기법         │ • 문장 커버리지        │ • 동치 분할             │
│              │ • 분기 커버리지 ★      │   (Equivalence Part.)   │
│              │ • 조건 커버리지        │ • 경계값 분석 ★         │
│              │ • 경로 커버리지        │   (Boundary Value)      │
│              │ • MC/DC 커버리지       │ • 원인-결과 그래프      │
│              │ • 기본 경로 테스트     │ • 의사결정 테이블       │
│              │ • 루프 테스트          │ • 상태 전이 테스트      │
│              │                        │ • 유스케이스 테스트     │
├──────────────┼────────────────────────┼─────────────────────────┤
│ 커버리지     │ 코드 커버리지          │ 요구사항 커버리지       │
│ 측정         │                        │                         │
└──────────────┴────────────────────────┴─────────────────────────┘

★ 커버리지 강도: 문장 < 분기(결정) < 조건 < 조건/결정 < MC/DC < 경로
★ 분기 커버리지 100% → 문장 커버리지 100% (역은 성립 X)
★ McCabe 순환 복잡도 = E - N + 2 (E: 간선, N: 노드)
  → 이 값 = 최소 테스트 케이스 수

4.3 통합 테스트 전략

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
┌──────────────────────────────────────────────────────────────────┐
│ 통합 테스트 접근법                                                │
├──────────────┬───────────────────────────────────────────────────┤
│ 빅뱅         │ 모든 모듈 한꺼번에 통합. 오류 위치 파악 어려움    │
├──────────────┼───────────────────────────────────────────────────┤
│ 하향식       │ 상위 → 하위 모듈 순서. Stub(가짜 하위) 필요      │
│ (Top-down)   │ 주요 제어 흐름 먼저 검증 가능                    │
├──────────────┼───────────────────────────────────────────────────┤
│ 상향식       │ 하위 → 상위 모듈 순서. Driver(가짜 상위) 필요    │
│ (Bottom-up)  │ 하위 모듈 먼저 충분히 테스트                      │
├──────────────┼───────────────────────────────────────────────────┤
│ 샌드위치     │ 상향식 + 하향식 동시. Stub + Driver 모두 필요     │
│              │ 병렬 진행 가능                                    │
└──────────────┴───────────────────────────────────────────────────┘

★ 하향식: Stub 필요 / 상향식: Driver 필요 (반대로 알면 안 됨!)
★ Stub = 아직 개발 안 된 하위 모듈 대체
★ Driver = 테스트 대상을 호출하는 상위 모듈 대체

5. 프로젝트 관리

5.1 일정 관리 — CPM / PERT

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
┌──────────────────────────────────────────────────────────────────┐
│ CPM (Critical Path Method)                                       │
│                                                                  │
│ 예제 네트워크:                                                    │
│                                                                  │
│  시작 ──A(3)──→ B(4) ──→ D(2) ──→ 종료                          │
│    │                ↗                                            │
│    └──── C(5) ──┘                                                │
│                                                                  │
│ 경로 1: A → B → D = 3+4+2 = 9일                                 │
│ 경로 2: C → D      = 5+2   = 7일                                │
│                                                                  │
│ 임계 경로(CP) = 가장 긴 경로 = A→B→D (9일)                      │
│ 프로젝트 최소 완료 시간 = 9일                                     │
│                                                                  │
│ ★ 임계 경로 상의 작업은 여유시간(Slack) = 0                      │
│ ★ Slack = LS - ES = LF - EF                                     │
│   ES: 가장 빠른 시작, EF: 가장 빠른 종료                         │
│   LS: 가장 늦은 시작, LF: 가장 늦은 종료                         │
└──────────────────────────────────────────────────────────────────┘

┌──────────────────────────────────────────────────────────────────┐
│ PERT (Program Evaluation and Review Technique)                    │
│                                                                  │
│ 3점 추정: 낙관(O), 가능(M), 비관(P)                              │
│ 기대치 = (O + 4M + P) / 6                                        │
│ 표준편차 = (P - O) / 6                                            │
│                                                                  │
│ 예) O=2, M=5, P=14                                               │
│ 기대치 = (2 + 20 + 14) / 6 = 36/6 = 6일                         │
│ 표준편차 = (14 - 2) / 6 = 2                                      │
└──────────────────────────────────────────────────────────────────┘

5.2 비용 산정

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
┌──────────────────────────────────────────────────────────────────┐
│ 소프트웨어 비용 산정 기법                                         │
├──────────────┬───────────────────────────────────────────────────┤
│ LOC 기법     │ 코드 라인 수 기반 (a * LOC + b)                   │
│              │ 단순하지만 언어/개발자 차이 큼                     │
├──────────────┼───────────────────────────────────────────────────┤
│ FP 기법      │ Function Point (기능 점수)                        │
│              │ 입력/출력/질의/내부파일/외부인터페이스 가중합      │
│              │ 언어 독립적 ★                                     │
├──────────────┼───────────────────────────────────────────────────┤
│ COCOMO       │ 프로젝트 유형별 계수 적용                         │
│              │ Organic: 소규모 (a=2.4)                            │
│              │ Semi-detached: 중규모 (a=3.0)                      │
│              │ Embedded: 대규모 (a=3.6)                           │
│              │ 노력(MM) = a × (KDSI)^b                           │
├──────────────┼───────────────────────────────────────────────────┤
│ Putnam 모델  │ Rayleigh-Norden 곡선 기반                         │
│              │ 대형 프로젝트에 적합                               │
└──────────────┴───────────────────────────────────────────────────┘

★ COCOMO II: COCOMO 개선판, 재사용/COTS 고려
★ FP가 LOC보다 객관적 (언어 무관)

6. 형상 관리 (SCM)

1
2
3
4
5
6
7
8
9
10
11
12
13
┌──────────────────────────────────────────────────────────────────┐
│ 형상 관리 (Software Configuration Management)                     │
│                                                                  │
│ 활동:                                                             │
│  1) 형상 식별: 형상 항목(CI) 선정 및 식별 번호 부여              │
│  2) 형상 통제: 변경 요청 검토/승인 (CCB가 담당)                  │
│  3) 형상 감사: 형상 항목 무결성 검증                              │
│  4) 형상 기록/보고: 변경 이력 관리                                │
│                                                                  │
│ ★ CCB (Configuration Control Board): 변경 통제 위원회            │
│ ★ 베이스라인(Baseline): 공식 승인된 형상 항목의 스냅샷           │
│ ★ 도구: Git, SVN, CVS 등                                        │
└──────────────────────────────────────────────────────────────────┘

Part 2. 데이터통신 (Data Communication)

1. 데이터 전송 기초

1.1 신호와 전송

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
┌──────────────────────────────────────────────────────────────────┐
│ 아날로그 vs 디지털                                                │
├──────────────┬──────────────────────┬────────────────────────────┤
│              │ 아날로그              │ 디지털                     │
├──────────────┼──────────────────────┼────────────────────────────┤
│ 신호         │ 연속적인 파형        │ 이산적 (0, 1)              │
├──────────────┼──────────────────────┼────────────────────────────┤
│ 잡음 내성    │ 약함                 │ 강함                       │
├──────────────┼──────────────────────┼────────────────────────────┤
│ 재생         │ 증폭 시 잡음도 증폭  │ 리피터로 완벽 재생 가능    │
└──────────────┴──────────────────────┴────────────────────────────┘

★ 전송 방식
  • 단방향(Simplex): 한쪽만 전송 (TV 방송)
  • 반이중(Half-Duplex): 양방향이지만 동시 X (무전기)
  • 전이중(Full-Duplex): 양방향 동시 가능 (전화)

★ 직렬 vs 병렬 전송
  • 직렬: 한 비트씩 순서대로 (장거리, 저비용)
  • 병렬: 여러 비트 동시 (단거리, 고속, 고비용)

1.2 전송 용량 공식

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
┌──────────────────────────────────────────────────────────────────┐
│ 채널 용량 공식                                                    │
│                                                                  │
│ ▶ 나이퀴스트 정리 (무잡음 채널)                                   │
│   C = 2 × B × log₂(L)                                           │
│   B: 대역폭(Hz), L: 신호 레벨 수                                │
│   예) B=3000Hz, L=4 → C = 2×3000×2 = 12,000 bps                │
│                                                                  │
│ ▶ 섀넌 정리 (잡음 채널)                                           │
│   C = B × log₂(1 + SNR)                                         │
│   SNR: 신호 대 잡음비                                             │
│   SNR(dB) = 10 × log₁₀(SNR)                                     │
│   예) B=3000Hz, SNR=1023                                         │
│       C = 3000 × log₂(1024) = 3000 × 10 = 30,000 bps           │
│                                                                  │
│ ★ 실제 최대 전송률 = min(나이퀴스트, 섀넌)                       │
│ ★ dB 변환: SNR=1000 → 10×log₁₀(1000) = 30dB                    │
└──────────────────────────────────────────────────────────────────┘

1.3 디지털 변조와 부호화

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
┌──────────────────────────────────────────────────────────────────┐
│ 디지털 → 디지털 (부호화, Line Coding)                             │
├──────────────┬───────────────────────────────────────────────────┤
│ NRZ-L        │ 0→양전압, 1→음전압 (비트값이 레벨 결정)           │
│ NRZ-I        │ 1일 때 전이, 0일 때 유지 (차동 부호화)            │
│ Manchester   │ 0→저→고, 1→고→저 (중간에 항상 전이) ★ Ethernet   │
│ Diff.Manch.  │ 0→시작전이, 1→시작 유지 (Token Ring)              │
│ AMI          │ 0→0V, 1→교대로 +V/-V                              │
│ B8ZS/HDB3    │ AMI 개선, 연속 0 문제 해결                        │
└──────────────┴───────────────────────────────────────────────────┘

┌──────────────────────────────────────────────────────────────────┐
│ 디지털 → 아날로그 (변조, Modulation)                              │
├──────────────┬───────────────────────────────────────────────────┤
│ ASK          │ 진폭 변조: 0→작은 진폭, 1→큰 진폭               │
│ FSK          │ 주파수 변조: 0→저주파, 1→고주파                  │
│ PSK          │ 위상 변조: 비트별 위상 변경 ★ 가장 많이 사용     │
│ QAM          │ 진폭 + 위상 결합, 고속 전송                       │
│              │ 16-QAM: 4비트/심볼, 64-QAM: 6비트/심볼            │
└──────────────┴───────────────────────────────────────────────────┘

★ Baud Rate vs Bit Rate
  Bit Rate = Baud Rate × log₂(L)
  예) 1000 Baud, 16-QAM → 1000 × 4 = 4000 bps

2. 오류 검출과 정정

2.1 오류 검출 기법

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
┌──────────────────────────────────────────────────────────────────┐
│ 패리티 비트 (Parity Bit)                                         │
│                                                                  │
│ 짝수 패리티: 1의 개수가 짝수가 되도록                             │
│ 예) 데이터 1011001 → 1의 개수=4(짝수) → 패리티=0 → 10110010     │
│ 예) 데이터 1011011 → 1의 개수=5(홀수) → 패리티=1 → 10110111     │
│                                                                  │
│ ★ 단점: 짝수 개의 비트 오류 검출 불가                             │
│ ★ 2차원 패리티: 행+열 패리티로 1비트 정정 가능                   │
└──────────────────────────────────────────────────────────────────┘

┌──────────────────────────────────────────────────────────────────┐
│ CRC (Cyclic Redundancy Check) ★ 계산 문제 빈출                   │
│                                                                  │
│ 원리: 데이터를 생성 다항식으로 나눈 나머지를 붙임                │
│                                                                  │
│ 예) 데이터: 1101, 생성다항식: x³+x+1 = 1011                      │
│                                                                  │
│ 1) 데이터 뒤에 (다항식 차수=3)만큼 0 추가: 1101 000              │
│ 2) XOR 나눗셈:                                                    │
│    1101000                                                        │
│    1011                                                           │
│    ────                                                           │
│     1100                                                          │
│     1011                                                          │
│     ────                                                          │
│      1110                                                         │
│      1011                                                         │
│      ────                                                         │
│       1010                                                        │
│       1011                                                        │
│       ────                                                        │
│        001  ← 나머지(CRC)                                        │
│                                                                  │
│ 3) 전송 데이터: 1101 001                                          │
│ 4) 수신측: 1101001 ÷ 1011 → 나머지 0이면 오류 없음              │
│                                                                  │
│ ★ CRC-16, CRC-32 등 사용 (이더넷은 CRC-32)                       │
│ ★ 검출 능력: 모든 홀수 비트 오류, burst error 검출 우수           │
└──────────────────────────────────────────────────────────────────┘

┌──────────────────────────────────────────────────────────────────┐
│ 해밍 코드 (Hamming Code) ★ 1비트 오류 정정 가능                  │
│                                                                  │
│ 원리: 2^n 위치(1,2,4,8,...)에 패리티 비트 삽입                   │
│                                                                  │
│ 예) 4비트 데이터 d₁d₂d₃d₄에 3개 패리티 비트 추가                 │
│ 위치:  1  2  3  4  5  6  7                                       │
│        p₁ p₂ d₁ p₃ d₂ d₃ d₄                                     │
│                                                                  │
│ p₁ 검사: 위치 1,3,5,7 (이진수 끝자리가 1)                        │
│ p₂ 검사: 위치 2,3,6,7 (이진수 둘째자리가 1)                      │
│ p₃ 검사: 위치 4,5,6,7 (이진수 셋째자리가 1)                      │
│                                                                  │
│ 오류 위치 = 잘못된 패리티 위치의 합                               │
│ 예) p₁, p₃ 불일치 → 오류 위치 = 1+4 = 5번째 비트                │
│                                                                  │
│ ★ 해밍 거리(d): 두 코드워드 간 다른 비트 수                      │
│   - t비트 오류 검출: d ≥ t+1                                     │
│   - t비트 오류 정정: d ≥ 2t+1                                    │
└──────────────────────────────────────────────────────────────────┘

3. 데이터 링크 제어

3.1 흐름 제어

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
┌──────────────────────────────────────────────────────────────────┐
│ 흐름 제어 (Flow Control)                                         │
├──────────────┬───────────────────────────────────────────────────┤
│ Stop-and-Wait│ 프레임 1개 → ACK → 프레임 1개 → ...              │
│              │ 효율 = 1 / (1 + 2a), a = 전파지연/전송시간       │
│              │ 단순하지만 매우 비효율적                           │
├──────────────┼───────────────────────────────────────────────────┤
│ Go-Back-N    │ 윈도우 크기(W)만큼 연속 전송                      │
│ (GBN)        │ 오류 발생 시 해당 프레임부터 모두 재전송 ★        │
│              │ 수신측 윈도우 = 1 (순서대로만 수신)               │
│              │ 송신 윈도우 ≤ 2^n - 1                             │
├──────────────┼───────────────────────────────────────────────────┤
│ Selective     │ 윈도우 크기(W)만큼 연속 전송                     │
│ Repeat (SR)  │ 오류 프레임만 선택적 재전송 ★                     │
│              │ 수신측에 버퍼 필요 (재정렬)                       │
│              │ 송신 윈도우 ≤ 2^(n-1)                             │
└──────────────┴───────────────────────────────────────────────────┘

★ 시퀀스 번호 n비트일 때:
  GBN 최대 윈도우 = 2^n - 1
  SR 최대 윈도우 = 2^n / 2 = 2^(n-1)
★ 피기백킹(Piggybacking): 데이터 프레임에 ACK를 같이 실어 보냄

3.2 오류 제어

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
┌──────────────────────────────────────────────────────────────────┐
│ 오류 제어 방식                                                    │
├──────────────┬───────────────────────────────────────────────────┤
│ ARQ          │ 오류 검출 후 재전송 요청                           │
│ (Automatic   │ • Stop-and-Wait ARQ                               │
│  Repeat      │ • Go-Back-N ARQ                                   │
│  reQuest)    │ • Selective Repeat ARQ                             │
├──────────────┼───────────────────────────────────────────────────┤
│ FEC          │ 오류 검출 + 정정 (재전송 없이)                    │
│ (Forward     │ 해밍코드, 리드-솔로몬 코드 등                     │
│  Error       │ 실시간 통신에 적합 (재전송 시간 없음)             │
│  Correction) │                                                   │
└──────────────┴───────────────────────────────────────────────────┘

★ ARQ: 신뢰성 높지만 지연 발생
★ FEC: 지연 없지만 오버헤드 큼
★ 하이브리드 ARQ: FEC + ARQ 결합 (정정 불가 시 재전송)

3.3 다중 접속 (Multiple Access)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
┌──────────────────────────────────────────────────────────────────┐
│ 매체 접근 제어 (MAC)                                              │
├──────────────┬───────────────────────────────────────────────────┤
│ 경쟁 방식    │                                                   │
│ (Random)     │ • ALOHA: 충돌 시 랜덤 대기 후 재전송             │
│              │   - Pure ALOHA: 즉시 전송, 효율 18.4%            │
│              │   - Slotted ALOHA: 슬롯 시작에만, 효율 36.8%     │
│              │ • CSMA: 캐리어 감지 후 전송                       │
│              │   - 1-persistent: 빈 채널이면 즉시 전송           │
│              │   - non-persistent: 사용중이면 랜덤 대기          │
│              │   - p-persistent: 확률 p로 전송                   │
│              │ • CSMA/CD: 충돌 검출 (유선, Ethernet) ★           │
│              │ • CSMA/CA: 충돌 회피 (무선, Wi-Fi) ★              │
├──────────────┼───────────────────────────────────────────────────┤
│ 할당 방식    │ • TDMA: 시간 분할                                 │
│ (Controlled) │ • FDMA: 주파수 분할                               │
│              │ • CDMA: 코드 분할 (직교 코드)                     │
│              │ • 토큰 패싱: 토큰 보유자만 전송 (Token Ring)      │
│              │ • 폴링: 중앙 장치가 순서대로 전송 허가            │
└──────────────┴───────────────────────────────────────────────────┘

★ CSMA/CD (유선): 충돌 감지 → 즉시 중단 → Jam 신호 → 백오프
★ CSMA/CA (무선): 충돌 감지 어려움 → RTS/CTS로 사전 회피
★ 이더넷 = CSMA/CD, Wi-Fi = CSMA/CA

4. 다중화와 교환

4.1 다중화 (Multiplexing)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
┌──────────────────────────────────────────────────────────────────┐
│ 다중화 기법                                                       │
├──────────────┬───────────────────────────────────────────────────┤
│ FDM          │ 주파수 분할 다중화                                 │
│              │ 아날로그 신호, 보호 대역(Guard Band) 필요          │
│              │ 예) 라디오 방송                                    │
├──────────────┼───────────────────────────────────────────────────┤
│ TDM          │ 시간 분할 다중화                                   │
│              │ 동기식: 고정 타임슬롯 할당 (비어도 낭비)          │
│              │ 비동기식(통계적): 필요한 만큼만 할당              │
├──────────────┼───────────────────────────────────────────────────┤
│ WDM          │ 파장 분할 다중화 (광섬유)                          │
│              │ FDM의 광통신 버전                                  │
├──────────────┼───────────────────────────────────────────────────┤
│ CDM          │ 코드 분할 다중화 (CDMA)                            │
│              │ 직교 코드로 동시 전송                               │
└──────────────┴───────────────────────────────────────────────────┘

4.2 교환 방식

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
┌──────────────────────────────────────────────────────────────────┐
│ 교환(Switching) 방식 비교                                         │
├──────────────┬──────────────┬──────────────┬─────────────────────┤
│              │ 회선 교환    │ 패킷 교환    │ 메시지 교환         │
├──────────────┼──────────────┼──────────────┼─────────────────────┤
│ 연결         │ 전용 경로    │ 공유 경로    │ 공유 경로           │
│              │ 설정 필요    │ 연결 불필요  │ 연결 불필요         │
├──────────────┼──────────────┼──────────────┼─────────────────────┤
│ 전송 단위    │ 연속 데이터  │ 패킷        │ 메시지 전체         │
├──────────────┼──────────────┼──────────────┼─────────────────────┤
│ 지연         │ 설정 지연    │ 패킷별 지연  │ 큰 지연             │
│              │ 전송 중 없음 │ (Store&Fwd)  │ (Store&Forward)     │
├──────────────┼──────────────┼──────────────┼─────────────────────┤
│ 예           │ 전화망       │ 인터넷       │ 이메일              │
└──────────────┴──────────────┴──────────────┴─────────────────────┘

★ 패킷 교환:
  - 가상 회선(Virtual Circuit): 경로 설정 후 순서 보장 (ATM)
  - 데이터그램(Datagram): 독립 라우팅, 순서 보장 X (IP)

Part 3. 네트워크 (Network)

1. OSI 7계층과 TCP/IP

1.1 OSI 7계층 총정리

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
┌──────┬──────────────┬──────────────┬───────────────┬──────────────┐
│ 계층 │ 이름         │ PDU          │ 프로토콜 예    │ 장비         │
├──────┼──────────────┼──────────────┼───────────────┼──────────────┤
│  7   │ 응용         │ 데이터       │ HTTP,FTP,     │              │
│      │ (Application)│              │ SMTP,DNS,     │              │
│      │              │              │ SNMP,Telnet   │              │
├──────┼──────────────┼──────────────┼───────────────┼──────────────┤
│  6   │ 표현         │ 데이터       │ JPEG,MPEG,    │              │
│      │ (Presentat.) │              │ ASCII,SSL/TLS │              │
├──────┼──────────────┼──────────────┼───────────────┼──────────────┤
│  5   │ 세션         │ 데이터       │ NetBIOS,      │              │
│      │ (Session)    │              │ RPC,소켓      │              │
├──────┼──────────────┼──────────────┼───────────────┼──────────────┤
│  4   │ 전송         │ 세그먼트     │ TCP, UDP      │ L4 스위치    │
│      │ (Transport)  │              │               │              │
├──────┼──────────────┼──────────────┼───────────────┼──────────────┤
│  3   │ 네트워크     │ 패킷         │ IP, ICMP,     │ 라우터       │
│      │ (Network)    │              │ ARP, RARP,    │ L3 스위치    │
│      │              │              │ IGMP, OSPF    │              │
├──────┼──────────────┼──────────────┼───────────────┼──────────────┤
│  2   │ 데이터링크   │ 프레임       │ Ethernet,     │ 브리지       │
│      │ (Data Link)  │              │ PPP, HDLC     │ L2 스위치    │
├──────┼──────────────┼──────────────┼───────────────┼──────────────┤
│  1   │ 물리         │ 비트         │ RS-232,       │ 리피터       │
│      │ (Physical)   │              │ USB           │ 허브         │
└──────┴──────────────┴──────────────┴───────────────┴──────────────┘

★ 캡슐화 순서: 데이터→세그먼트→패킷→프레임→비트
★ ARP: IP→MAC 변환, RARP: MAC→IP 변환
★ ICMP: 오류 보고 (ping, traceroute)

1.2 TCP/IP 4계층 매핑

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
┌─────────────────────┬───────────────────────────────────────────┐
│ TCP/IP 4계층        │ OSI 7계층 대응                             │
├─────────────────────┼───────────────────────────────────────────┤
│ 응용 계층           │ 7. 응용 + 6. 표현 + 5. 세션               │
│ (Application)       │ HTTP, FTP, SMTP, DNS, SSH, DHCP           │
├─────────────────────┼───────────────────────────────────────────┤
│ 전송 계층           │ 4. 전송                                    │
│ (Transport)         │ TCP, UDP                                   │
├─────────────────────┼───────────────────────────────────────────┤
│ 인터넷 계층         │ 3. 네트워크                                │
│ (Internet)          │ IP, ICMP, ARP, IGMP                        │
├─────────────────────┼───────────────────────────────────────────┤
│ 네트워크 접근 계층  │ 2. 데이터링크 + 1. 물리                   │
│ (Network Access)    │ Ethernet, Wi-Fi, PPP                       │
└─────────────────────┴───────────────────────────────────────────┘

2. TCP vs UDP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
┌──────────────────┬─────────────────────┬──────────────────────────┐
│ 항목             │ TCP                 │ UDP                      │
├──────────────────┼─────────────────────┼──────────────────────────┤
│ 연결             │ 연결 지향(3-way)    │ 비연결                   │
├──────────────────┼─────────────────────┼──────────────────────────┤
│ 신뢰성           │ 순서 보장, 재전송   │ 보장 안 함               │
├──────────────────┼─────────────────────┼──────────────────────────┤
│ 흐름/혼잡 제어   │ 있음                │ 없음                     │
├──────────────────┼─────────────────────┼──────────────────────────┤
│ 전송 단위        │ 바이트 스트림       │ 데이터그램               │
├──────────────────┼─────────────────────┼──────────────────────────┤
│ 헤더 크기        │ 20~60 바이트        │ 8 바이트                 │
├──────────────────┼─────────────────────┼──────────────────────────┤
│ 속도             │ 느림                │ 빠름                     │
├──────────────────┼─────────────────────┼──────────────────────────┤
│ 사용 예          │ HTTP, FTP, 이메일   │ DNS, 스트리밍, VoIP      │
└──────────────────┴─────────────────────┴──────────────────────────┘

★ TCP 3-Way Handshake (연결):
  Client → SYN → Server
  Client ← SYN+ACK ← Server
  Client → ACK → Server

★ TCP 4-Way Handshake (종료):
  Client → FIN → Server
  Client ← ACK ← Server
  Client ← FIN ← Server
  Client → ACK → Server (TIME_WAIT 후 종료)

★ TCP 혼잡 제어:
  • Slow Start: 윈도우 1부터 시작, 지수적 증가(×2)
  • Congestion Avoidance: 임계값(ssthresh) 이후 선형 증가(+1)
  • Fast Retransmit: 3중복 ACK → 즉시 재전송
  • Fast Recovery: 3중복 ACK → ssthresh = cwnd/2, cwnd = ssthresh

3. IP 주소와 서브넷팅

3.1 IP 주소 클래스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
┌──────┬──────────────┬──────────────────┬──────────────┬──────────┐
│클래스│ 범위         │ 기본 서브넷마스크│ 네트워크:호스트│ 비고     │
├──────┼──────────────┼──────────────────┼──────────────┼──────────┤
│  A   │ 1~126        │ 255.0.0.0 (/8)   │ 8 : 24       │ 대규모  │
│  B   │ 128~191      │ 255.255.0.0 (/16)│ 16 : 16      │ 중규모  │
│  C   │ 192~223      │ 255.255.255.0    │ 24 : 8       │ 소규모  │
│      │              │ (/24)            │              │          │
│  D   │ 224~239      │ -                │ 멀티캐스트    │          │
│  E   │ 240~255      │ -                │ 예약/실험     │          │
└──────┴──────────────┴──────────────────┴──────────────┴──────────┘

★ 사설 IP 범위:
  A: 10.0.0.0 ~ 10.255.255.255
  B: 172.16.0.0 ~ 172.31.255.255
  C: 192.168.0.0 ~ 192.168.255.255
★ 루프백: 127.0.0.0/8 (보통 127.0.0.1)
★ 0.0.0.0: 모든 주소, 255.255.255.255: 제한된 브로드캐스트

3.2 서브넷팅 계산 ★★★ 빈출

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
┌──────────────────────────────────────────────────────────────────┐
│ 서브넷팅 완벽 가이드                                              │
│                                                                  │
│ ▶ 문제 유형 1: 서브넷 개수/호스트 수 구하기                      │
│                                                                  │
│ 예) 192.168.1.0/26                                               │
│                                                                  │
│ 서브넷 마스크: 255.255.255.192                                    │
│ (192 = 11000000 → 네트워크 비트 2개 빌림)                        │
│                                                                  │
│ 서브넷 수: 2^2 = 4개                                             │
│ 호스트 수: 2^6 - 2 = 62개 (네트워크, 브로드캐스트 제외)          │
│                                                                  │
│ 서브넷 목록:                                                      │
│ ┌──────────────────────────┬──────────────────┬─────────────────┐ │
│ │ 서브넷                   │ 호스트 범위      │ 브로드캐스트    │ │
│ ├──────────────────────────┼──────────────────┼─────────────────┤ │
│ │ 192.168.1.0/26           │ .1 ~ .62         │ .63             │ │
│ │ 192.168.1.64/26          │ .65 ~ .126       │ .127            │ │
│ │ 192.168.1.128/26         │ .129 ~ .190      │ .191            │ │
│ │ 192.168.1.192/26         │ .193 ~ .254      │ .255            │ │
│ └──────────────────────────┴──────────────────┴─────────────────┘ │
│                                                                  │
│ ▶ 문제 유형 2: IP가 속한 서브넷 찾기                             │
│                                                                  │
│ 예) 172.16.45.200/21이 속한 서브넷은?                            │
│ /21 → 호스트 비트 = 32-21 = 11비트                               │
│ 블록 크기 = 2^11 = 2048 → 3번째 옥텟 블록 = 2048/256 = 8       │
│ 45 ÷ 8 = 5.625 → 5 × 8 = 40                                    │
│ 서브넷: 172.16.40.0/21                                           │
│ 브로드캐스트: 172.16.47.255                                       │
│                                                                  │
│ ▶ 문제 유형 3: 필요한 서브넷 마스크 계산                         │
│                                                                  │
│ 예) 호스트 100개 필요 → 2^n ≥ 102 → n=7 → 2^7=128              │
│ 서브넷 마스크: /25 = 255.255.255.128                              │
│                                                                  │
│ ★ 빠른 참조표:                                                    │
│ /24=256호스트 /25=128 /26=64 /27=32 /28=16 /29=8 /30=4          │
│ 실제 사용가능 = 위 값 - 2                                        │
└──────────────────────────────────────────────────────────────────┘

3.3 CIDR와 슈퍼넷팅

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
┌──────────────────────────────────────────────────────────────────┐
│ CIDR (Classless Inter-Domain Routing)                             │
│                                                                  │
│ 클래스 경계를 무시하고 자유로운 서브넷 크기 사용                 │
│ 표기: IP/프리픽스 길이 (예: 10.0.0.0/12)                         │
│                                                                  │
│ 슈퍼넷팅 (Supernetting): 여러 네트워크를 하나로 합침             │
│ 예) 192.168.0.0/24 + 192.168.1.0/24                             │
│     = 192.168.0.0/23 (하나로 합침)                                │
│                                                                  │
│ ★ 슈퍼넷팅 가능 조건:                                            │
│   1) 연속된 주소 블록                                             │
│   2) 합칠 수 = 2의 거듭제곱                                      │
│   3) 첫 주소가 새 블록 크기로 나누어 떨어져야 함                 │
│                                                                  │
│ ★ VLSM (Variable Length Subnet Mask):                            │
│   서브넷마다 다른 마스크 사용 → 주소 낭비 최소화                 │
└──────────────────────────────────────────────────────────────────┘

3.4 IPv6

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
┌──────────────────────────────────────────────────────────────────┐
│ IPv4 vs IPv6 비교                                                 │
├──────────────┬──────────────────────┬────────────────────────────┤
│ 항목         │ IPv4                 │ IPv6                       │
├──────────────┼──────────────────────┼────────────────────────────┤
│ 주소 크기    │ 32비트               │ 128비트                    │
├──────────────┼──────────────────────┼────────────────────────────┤
│ 주소 표기    │ 10진수 (점)          │ 16진수 (콜론)              │
├──────────────┼──────────────────────┼────────────────────────────┤
│ 헤더 크기    │ 가변 (20~60B)        │ 고정 40바이트              │
├──────────────┼──────────────────────┼────────────────────────────┤
│ 브로드캐스트 │ 있음                 │ 없음 (멀티캐스트로 대체)   │
├──────────────┼──────────────────────┼────────────────────────────┤
│ 보안         │ IPSec 선택           │ IPSec 기본 내장            │
├──────────────┼──────────────────────┼────────────────────────────┤
│ NAT          │ 필요                 │ 불필요 (충분한 주소)       │
├──────────────┼──────────────────────┼────────────────────────────┤
│ 자동설정     │ DHCP                 │ SLAAC (자동)               │
└──────────────┴──────────────────────┴────────────────────────────┘

★ IPv4→IPv6 전환 기술:
  - 듀얼 스택: 양쪽 모두 지원
  - 터널링: IPv4 네트워크를 통해 IPv6 패킷 캡슐화
  - 변환(Translation): NAT64 등으로 주소 변환

4. 라우팅

4.1 라우팅 프로토콜 분류

1
2
3
4
5
6
7
8
9
10
11
12
13
┌──────────────────────────────────────────────────────────────────┐
│ 라우팅 프로토콜 분류                                              │
│                                                                  │
│ ┌── 정적 라우팅: 관리자가 수동 설정                               │
│ │                                                                │
│ └── 동적 라우팅                                                   │
│     ├── IGP (Interior Gateway Protocol) — AS 내부                │
│     │   ├── 거리 벡터: RIP                                       │
│     │   └── 링크 상태: OSPF ★, IS-IS                             │
│     │                                                            │
│     └── EGP (Exterior Gateway Protocol) — AS 간                  │
│         └── 경로 벡터: BGP ★                                     │
└──────────────────────────────────────────────────────────────────┘

4.2 RIP vs OSPF vs BGP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
┌──────────────┬──────────────────┬──────────────────┬─────────────┐
│              │ RIP              │ OSPF             │ BGP         │
├──────────────┼──────────────────┼──────────────────┼─────────────┤
│ 알고리즘     │ Bellman-Ford     │ Dijkstra (SPF)   │ 경로 벡터   │
│              │ (거리 벡터)      │ (링크 상태)      │             │
├──────────────┼──────────────────┼──────────────────┼─────────────┤
│ 메트릭       │ 홉 수 (최대 15)  │ 비용 (대역폭)    │ 정책 기반   │
├──────────────┼──────────────────┼──────────────────┼─────────────┤
│ 수렴 속도    │ 느림             │ 빠름             │ 느림        │
├──────────────┼──────────────────┼──────────────────┼─────────────┤
│ 확장성       │ 소규모           │ 대규모           │ 인터넷 전체 │
├──────────────┼──────────────────┼──────────────────┼─────────────┤
│ 특징         │ 30초 주기 전체   │ 변경 시 즉시     │ TCP 사용    │
│              │ 테이블 교환      │ LSA 전파         │ (포트 179)  │
│              │ Count-to-infinity│ Area 기반 계층   │ AS 간 라우팅│
│              │ 문제 있음        │                  │             │
└──────────────┴──────────────────┴──────────────────┴─────────────┘

★ RIP 문제점과 해결:
  - Count-to-infinity → Split Horizon, Poisoned Reverse
  - 느린 수렴 → Triggered Update
★ OSPF Area:
  - Area 0 = Backbone Area (모든 Area가 연결)
  - ABR: Area Border Router (Area 간 연결)
  - ASBR: AS Boundary Router (AS 간 연결)

5. 주요 네트워크 프로토콜

5.1 응용 계층 프로토콜

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
┌──────────────────────────────────────────────────────────────────┐
│ 주요 프로토콜과 포트 번호 ★ 암기 필수                             │
├──────────────┬───────┬───────────────────────────────────────────┤
│ 프로토콜     │ 포트  │ 설명                                      │
├──────────────┼───────┼───────────────────────────────────────────┤
│ FTP-Data     │ 20    │ 파일 전송 (데이터)                        │
│ FTP-Control  │ 21    │ 파일 전송 (제어)                          │
│ SSH          │ 22    │ 보안 원격 접속                             │
│ Telnet       │ 23    │ 원격 접속 (비암호화)                      │
│ SMTP         │ 25    │ 메일 전송                                 │
│ DNS          │ 53    │ 도메인 이름 해석 (TCP+UDP)                │
│ DHCP         │ 67/68 │ IP 자동 할당                              │
│ HTTP         │ 80    │ 웹 (비암호화)                             │
│ POP3         │ 110   │ 메일 수신 (다운로드)                      │
│ IMAP         │ 143   │ 메일 수신 (서버에 유지)                   │
│ HTTPS        │ 443   │ 웹 (SSL/TLS 암호화)                      │
│ SNMP         │ 161   │ 네트워크 관리                              │
└──────────────┴───────┴───────────────────────────────────────────┘

5.2 DNS 동작

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
┌──────────────────────────────────────────────────────────────────┐
│ DNS 질의 과정 (www.example.com)                                   │
│                                                                  │
│ 1) 클라이언트 → 로컬 DNS 서버 (재귀적 질의)                     │
│ 2) 로컬 DNS → 루트 DNS 서버 (".") (반복적 질의)                 │
│    → "com 담당 TLD 서버 주소 알려줌"                             │
│ 3) 로컬 DNS → com TLD 서버 (반복적 질의)                        │
│    → "example.com 담당 권한 서버 주소 알려줌"                    │
│ 4) 로컬 DNS → example.com 권한(Authoritative) 서버              │
│    → "www.example.com = 93.184.216.34"                           │
│ 5) 로컬 DNS → 클라이언트에게 응답 + 캐시 저장                   │
│                                                                  │
│ ★ 재귀적 질의: 클라이언트→로컬DNS (대신 다 알아와 줘!)          │
│ ★ 반복적 질의: 로컬DNS→상위DNS (다음에 누구한테 물어봐!)        │
│ ★ DNS 레코드: A(IPv4), AAAA(IPv6), CNAME(별칭),                │
│   MX(메일), NS(네임서버), SOA(권한), PTR(역방향)                 │
└──────────────────────────────────────────────────────────────────┘

5.3 DHCP 동작

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
┌──────────────────────────────────────────────────────────────────┐
│ DHCP DORA 과정                                                    │
│                                                                  │
│ 1) Discover: 클라이언트 → 브로드캐스트                           │
│    "DHCP 서버 어디 있어요?"                                       │
│                                                                  │
│ 2) Offer: DHCP 서버 → 클라이언트                                 │
│    "이 IP 어때요? (예: 192.168.1.100)"                           │
│                                                                  │
│ 3) Request: 클라이언트 → 브로드캐스트                            │
│    "그 IP로 할게요!" (다른 DHCP 서버에게도 알림)                 │
│                                                                  │
│ 4) Acknowledge: DHCP 서버 → 클라이언트                           │
│    "확인! IP, 서브넷마스크, 게이트웨이, DNS 정보 보내줌"         │
│                                                                  │
│ ★ 임대 갱신: 50% → 유니캐스트 갱신, 87.5% → 브로드캐스트 갱신   │
└──────────────────────────────────────────────────────────────────┘

6. 네트워크 보안

6.1 암호화와 보안 프로토콜

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
┌──────────────────────────────────────────────────────────────────┐
│ 암호화 방식 비교                                                  │
├──────────────┬────────────────────┬──────────────────────────────┤
│              │ 대칭키 암호화       │ 비대칭키(공개키) 암호화      │
├──────────────┼────────────────────┼──────────────────────────────┤
│ 키           │ 암복호화 동일 키   │ 공개키(암호화)+개인키(복호화)│
├──────────────┼────────────────────┼──────────────────────────────┤
│ 속도         │ 빠름               │ 느림                         │
├──────────────┼────────────────────┼──────────────────────────────┤
│ 키 관리      │ n명 → n(n-1)/2개   │ n명 → 2n개                  │
├──────────────┼────────────────────┼──────────────────────────────┤
│ 알고리즘     │ DES, 3DES, AES,    │ RSA, ECC, Diffie-Hellman    │
│              │ ARIA, SEED          │ ElGamal, DSA                │
├──────────────┼────────────────────┼──────────────────────────────┤
│ 용도         │ 데이터 암호화      │ 키 교환, 전자서명           │
└──────────────┴────────────────────┴──────────────────────────────┘

★ 하이브리드 암호화 (실제 사용 방식):
  1) 비대칭키로 세션키(대칭키) 교환
  2) 대칭키로 실제 데이터 암호화
  → 속도 + 보안 모두 확보

★ 해시 함수: MD5(128bit), SHA-1(160bit), SHA-256(256bit)
  - 단방향, 고정 길이 출력, 충돌 저항성
  - 비밀번호 저장, 무결성 검증에 사용

6.2 네트워크 공격과 방어

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
┌──────────────────────────────────────────────────────────────────┐
│ 주요 네트워크 공격 유형                                           │
├──────────────┬───────────────────────────────────────────────────┤
│ DoS/DDoS     │ 서비스 거부 공격 (대량 트래픽으로 마비)           │
│              │ SYN Flood, Smurf, Land Attack 등                   │
├──────────────┼───────────────────────────────────────────────────┤
│ 스니핑       │ 네트워크 패킷 도청 (Wireshark 등)                │
│ (Sniffing)   │ 방어: 암호화, 스위치 환경                         │
├──────────────┼───────────────────────────────────────────────────┤
│ 스푸핑       │ 주소 위조 (IP, ARP, DNS 스푸핑)                  │
│ (Spoofing)   │ ARP 스푸핑: MAC 테이블 조작 → MITM               │
├──────────────┼───────────────────────────────────────────────────┤
│ MITM         │ 중간자 공격 (통신 가로채기)                       │
│              │ 방어: SSL/TLS, 인증서 검증                         │
├──────────────┼───────────────────────────────────────────────────┤
│ SQL Injection│ 악성 SQL 삽입 → DB 조작                           │
│              │ 방어: Prepared Statement, 입력 검증               │
├──────────────┼───────────────────────────────────────────────────┤
│ XSS          │ 악성 스크립트 삽입 → 사용자 정보 탈취            │
│              │ 방어: 입력 이스케이프, CSP                         │
├──────────────┼───────────────────────────────────────────────────┤
│ 피싱         │ 위장 사이트로 개인정보 탈취                       │
│              │ 방어: URL 확인, 2FA                                │
└──────────────┴───────────────────────────────────────────────────┘

★ 방화벽 유형:
  - 패킷 필터링: IP/포트 기반 필터 (L3-L4)
  - 상태 검사(Stateful): 연결 상태 추적
  - 애플리케이션 게이트웨이(Proxy): 응용 계층 검사
  - WAF: 웹 애플리케이션 전용 방화벽

★ IDS vs IPS:
  - IDS (Intrusion Detection): 탐지 + 알림
  - IPS (Intrusion Prevention): 탐지 + 차단

6.3 VPN과 VLAN

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
┌──────────────────────────────────────────────────────────────────┐
│ VPN (Virtual Private Network)                                     │
│ • 공용 네트워크에서 사설 네트워크처럼 사용                       │
│ • 터널링 프로토콜: PPTP, L2TP, IPSec, SSL VPN                   │
│ • IPSec 모드:                                                     │
│   - 전송 모드: 페이로드만 암호화 (호스트 간)                     │
│   - 터널 모드: 패킷 전체 암호화 (게이트웨이 간) ★               │
│ • IPSec 구성: AH(인증) + ESP(암호화+인증)                        │
│                                                                  │
│ VLAN (Virtual LAN)                                                │
│ • 물리적 위치와 무관하게 논리적 네트워크 구성                    │
│ • 장점: 보안 강화, 브로드캐스트 도메인 분리, 유연한 관리         │
│ • 트렁크 포트: 여러 VLAN 트래픽 전달 (802.1Q 태깅)              │
│ • 액세스 포트: 하나의 VLAN에만 속함                               │
└──────────────────────────────────────────────────────────────────┘

7. 이더넷과 무선 네트워크

7.1 이더넷 (IEEE 802.3)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
┌──────────────────────────────────────────────────────────────────┐
│ 이더넷 프레임 구조                                                │
│                                                                  │
│ ┌──────────┬──────────┬──────┬───────────┬─────┬──────┐         │
│ │ Preamble │Dest MAC  │Src   │ Type/Len  │Data │ FCS  │         │
│ │ (8B)     │ (6B)     │MAC   │ (2B)      │(46- │(4B)  │         │
│ │          │          │(6B)  │           │1500)│ CRC  │         │
│ └──────────┴──────────┴──────┴───────────┴─────┴──────┘         │
│                                                                  │
│ ★ MAC 주소: 48비트 (6바이트), OUI(3B) + NIC(3B)                 │
│ ★ 최소 프레임: 64바이트 (데이터 최소 46바이트)                   │
│ ★ 최대 프레임: 1518바이트 (데이터 최대 1500바이트 = MTU)         │
│                                                                  │
│ 이더넷 표준:                                                      │
│ • 10BASE-T: 10Mbps, UTP, 100m                                   │
│ • 100BASE-TX: 100Mbps (Fast Ethernet)                            │
│ • 1000BASE-T: 1Gbps (Gigabit Ethernet)                          │
│ • 10GBASE-T: 10Gbps                                             │
└──────────────────────────────────────────────────────────────────┘

7.2 무선 네트워크 (IEEE 802.11)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
┌──────────────────────────────────────────────────────────────────┐
│ Wi-Fi 표준                                                        │
├──────────┬───────┬──────────┬────────────────────────────────────┤
│ 표준     │ 주파수│ 최대 속도│ 비고                               │
├──────────┼───────┼──────────┼────────────────────────────────────┤
│ 802.11a  │ 5GHz  │ 54Mbps   │ OFDM                              │
│ 802.11b  │ 2.4GHz│ 11Mbps   │ DSSS                              │
│ 802.11g  │ 2.4GHz│ 54Mbps   │ OFDM, b와 호환                   │
│ 802.11n  │ 2.4/5 │ 600Mbps  │ MIMO, Wi-Fi 4                    │
│ 802.11ac │ 5GHz  │ 6.9Gbps  │ MU-MIMO, Wi-Fi 5                 │
│ 802.11ax │ 2.4/5/│ 9.6Gbps  │ OFDMA, Wi-Fi 6                   │
│          │ 6GHz  │          │                                    │
└──────────┴───────┴──────────┴────────────────────────────────────┘

★ 무선 보안:
  WEP → WPA → WPA2(AES/CCMP) → WPA3(SAE) ★
  WEP는 취약하여 사용 금지!
★ 무선 접속: CSMA/CA (충돌 회피, RTS/CTS/ACK)

빈출 핵심 요약

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
┌──────────────────────────────────────────────────────────────────┐
│ ★★★ 계산 문제 공식 총정리 ★★★                                    │
│                                                                  │
│ [소프트웨어공학]                                                  │
│ • McCabe 순환복잡도 = E - N + 2                                  │
│ • PERT 기대치 = (O + 4M + P) / 6                                │
│ • CPM 임계경로 = 가장 긴 경로                                     │
│ • FP = ∑(기능별 가중치)                                          │
│                                                                  │
│ [데이터통신]                                                      │
│ • 나이퀴스트: C = 2B × log₂L                                    │
│ • 섀넌: C = B × log₂(1 + SNR)                                   │
│ • 비트레이트 = 보레이트 × log₂L                                 │
│ • CRC: 데이터 + 0(차수개) → 생성다항식으로 XOR 나눗셈           │
│ • 해밍 거리: 오류 검출 d≥t+1, 오류 정정 d≥2t+1                  │
│                                                                  │
│ [네트워크]                                                        │
│ • 서브넷: 호스트 수 = 2^(32-prefix) - 2                          │
│ • 서브넷 수 = 2^(빌린 비트 수)                                   │
│ • 대칭키: n(n-1)/2, 비대칭키: 2n                                 │
│                                                                  │
│ ★★★ 암기 포인트 ★★★                                              │
│ • 나선형모델 = 위험분석 핵심                                      │
│ • V-모델: 개발↔테스트 1:1 대응                                   │
│ • 하향식=Stub, 상향식=Driver                                     │
│ • 결합도: 내공외제스자 (높→낮)                                   │
│ • 응집도: 기순통절시논우 (높→낮)                                 │
│ • TCP: 3-way/4-way, 혼잡제어(Slow Start)                        │
│ • CSMA/CD=유선, CSMA/CA=무선                                     │
│ • RIP=홉수15, OSPF=Dijkstra, BGP=AS간                           │
│ • 포트: FTP(20/21) SSH(22) SMTP(25) DNS(53) HTTP(80) HTTPS(443)│
└──────────────────────────────────────────────────────────────────┘

다음 글: 컴퓨터공학 전공 핵심정리 하편: 알고리즘 코딩 & SQL 주관식 실전 대비에서 실제 코드 트레이싱과 SQL 작성 문제를 다룬다.