2025.05.21.~ 2025.06.20.

 

몰랐는데 k디지털역량강화 강좌는 국취제 1유형도 본인부담금이 발생한다. 4만5천원을 결제했다.

열심히 들어봐야겠다.

 

성능

성능이란 무엇인가?

정답을 빠른 시간 내에 출력: 요구하는 자원이 최소 -> 성능, 효율이 좋다

performance (efficiency) = 결과/비용

  • 성능 또는 효율: 일을 잘 한다 + 소요된 시간 (자원)이 적다

 

성능의 세가지 측면

  1. 최선의 경우 : 빠르면 1초 내에 검색
  2. 평균의 경우: 평균 10초 내에 검색
  3. 최악의 경우: 아무리 늦어도 1분 이내에 검색

-> 최선, 평균의 경우는 과장광고.. 최악의 경우로 말해야 사용자의 만족도에 도움이 됨

최악의 경우를 보장하는 것

 

 

자원의 두 가지 측면: 공간과 시간

공간 복잡도 space-complexity

  • 공간에 관련된 성능
  • 특정 프로그램을 수행하는 데 요구되는 메모리
  • memory

시간 복잡도 time-complexity

  • 시간에 관련된 성능
  • 특정 프로그램을 수행하는 데 요구되는 시간
  • cpu

시간이 공간보다 소중한 자원이다.

cpu가 더 비쌈

 

 

 

예) n 개의정수를입력받아서합을구하는프로그램

1. 정수를 하나씩 읽어서 합을 구함

int i, x, sum;
    for ( i = 0, sum = 0; i < n; i++ ) {
        cin >> x;
        sum += x;
    }
cout << sum;

 

- 공간 복잡도 O(1)

n의 크기에 관계없이 일정한 공간만을 요구함

변수 3개의 공간만 쓰면 됨, n번 실행함

 

- 시간 복잡도 O(n)

n의 크기에 비례해서 시간이 걸림

for문 n번 루프

 

 

2. 정수를 하나씩 읽어서 저장한 후에 합을 구함

int i, *x, sum;
x = new int[n];
for ( i = 0; i < n; i++ )
    cin >> x[i];
for ( i = 0, sum = 0; i < n; i++ )
    sum += x[i];
cout << sum;
int i, *x, sum;
x = new int[n];                          // O(1) - 메모리 할당 (크기는 n이지만 상수 시간에 이루어짐)
for ( i = 0; i < n; i++ ) cin >> x[i];  // O(n) - 입력을 n번 받음
for ( i = 0, sum = 0; i < n; i++ )      // O(n) - n개의 요소를 더함
    sum += x[i];
cout << sum;                            // O(1) - 출력 한 번

 

- 공간 복잡도 O(n)

n의 크기에 비례해서 공간을 요구함

n개의 저장공간 요구

 

- 시간 복잡도 O(n)

n의 크기에 비례해서 시간이 걸림

for문 n번 루프 두번

O(n)+O(n)=O(n)

 

점근적 분석법

(asymptotic complexity)

성능은 입력의 크기에 따라 결정됨

n:입력의 크기

시간복잡도를 n의 함수로 표현 -> f(n)

성능 그래프: (n,f(n))

1) 입력이 증가하면 시간도 증가 (일반적)

2) 입력이 증가해도 시간은 일정 (이상적)

3) 입력이 증가하면 시간이 감소 (있을수없음)

시간 복잡도는 매우 큰 입력 (reasonably large length of input) 에 대해서 측정함

n이 매우 큰 경우에 대해서만 의미 잇는 성능이 측정됨

g(n)을 이용한 f(n)의 성능 표현

동일한 크기의 입력을 처리할 때, g(n)은 f(n)보다 더 많은 시간을 요구함

= g(n)은 f(n)보다 성능이 나쁨

= g(n)은 f(n)의 최악의 경우

f(n)의 상한은 g(n)

f(n) ≤ g(n)

  • g(n)은 f(n)의 성능을 나타내는 척도로 사용됨
  • 많이 사용되는 표준적인 함수 (1, n, log n, n², n log n, nⁿ) 이용

요약

(1) 최악의 경우의 성능 -> 보장
(2) 공간 복잡도보다 시간 복잡도가 더 중요
(3) (입력의 크기, 계산 시간) -> (n, f(n))
(4) 점근적 분석법 -> 매우 큰 입력을 가정
(5) 표준 함수를 사용 ->1, n, n², 2n, log n
(6) Big-O표기법: (1)+(2)+(3)+(4)+(5)

big-O 표기법

 

g(n)은 f(n)의 최악의 경우

 

빅오 표기법의 정의

f(n) is O( g(n)) as n->∞
  1. f(n) ≤ g(n)
  2. f(n) ≤ g(n) for  n₀ <n      -> 항상 n₀보다 큰 n에 대해서만 요구하겠다
  3. f(n) ≤ M g(n) for  n₀ <n  -> 동일한 비율로 증가하는 함수를 허용하기 위해서 상수 M을 인정함

 

3번 : g(n)이 5n이든 10n이든 f(n)=n에 비례함

 

 

 

성질 1

어떤 n > n₀ 에 대해서 g₁(n) < g₂(n) 이라면 f(n) = O( g₁(n) )은 f(n) = O( g₂(n) )을 의미한다.

 

예) f(n) = O(n)라면 f(n) = O()이다.

 

증명)

f(n) ≤ M g₁(n) --- (정의 1)

g₁(n) < g₂(n)

 

-> f(n) ≤ M g₁(n) ≤ M g₂(n)

 

-> f(n) ≤ M g₂(n)

 

 

 

 

성질 2

어떤 상수 k에 대해서  f(n) = O( k g(n) )이라면, f(n) = O( g(n) )이다.

 

예) f(n) = O( 5n² )라면 f(n) = O( )이다.

 

 

 

 

성질 3

f(n) = O( g₁(n)+ g₂(n) ) 이고 어떤 n > n₀ 에 대해서  g₁(n) < g₂(n) 이라면 f(n) = O( g₂(n) )이다.

 

예) f(n) = O( n²+n )이라면 f(n) = O(  )이다.

 

 

1-1

문제 1.

우리가 사용하는 다양한 앱에서는 (    )를 효율적으로 관리하는 기법이 구현되어 있다.
답: 자료


문제 2.

기차표 예매와 수강 신청 등을 관리하는 시스템에서는 자료와 함께 (    )를 관리한다.
답: 순서


1-2

문제 1.

다음 문장의 빈칸에 들어갈 말은?

컴퓨터에 저장할 수 있도록 프로그래밍 언어에서 미리 정의된 값들의 집합을 (    )이라고 한다.

 

답: 자료형


문제 2.

16 bit로 세상의 모든 문자를 표현할 수 있는 체계를 (    )라고 한다.

  1. EBCDIC 코드
  2. Uni 코드
  3. BCD 코드
  4. ASCII 코드

답: 2. Unicode

해설:

  • ASCII: 7bit (128자만 표현 가능)
  • EBCDIC: IBM의 8bit 문자 인코딩
  • BCD: Binary-Coded Decimal, 숫자 표현 방식
  • Unicode: 다양한 언어의 문자를 16bit 이상으로 표현 가능한 체계

문제 3.

정수형 표현에서 1의 보수와 2의 보수는 (    )을(를) 표현하기 위한 방법이다.
답: 음수


1-3

문제 1.

다음 문장의 참과 거짓을 판정하시오.

정렬된 리스트에서는 자료의 위치를 예측할 수 있기 때문에 효율적인 검색이 가능하다.

답: 


문제 2.

자료를 만난 순서에 따라서 저장하는 구조를 다음 중에서 선택하시오.

  1. 리스트
  2. 스택
  3. 배열

답: 1


문제 3.

족보와 같은 계층 구조를 효율적으로 표현하는 구조를 (    )(이)라고 한다.
답: 트리


2-1

문제 1.

특정한 프로그램을 수행하는 데 요구되는 메모리의 크기를 (    )(이)라고 한다.
답: 공간 복잡도


문제 2.

점근적 분석법에서 성능은 (    )에 따라서 결정된다.
답: 입력의 크기


문제 3.

다음 네 가지 표현 중에서 그 의미가 다른 것은 무엇인가?

  1. f(n)의 하한은 g(n)임
  2. 최악의 경우에도 f(n)은 g(n)보다 좋음
  3. g(n)은 f(n)보다 성능이 나쁨
  4. f(n) ≤ g(n)

답: 1

해설:

  1. "하한"은 보통 Ω(𝑔(𝑛))를 의미 → f(n)이 최소한 g(n)만큼의 성능을 요구함 → 나머지 선택지들과 방향이 다름
  2. ~ 4. 모두 f(n)이 g(n)보다 작거나 같다는 식의 의미를 갖고 있어, 상대적으로 f(n)의 성능이 더 좋다는 쪽에 가까움

2-2

문제 1.

f(n) = O(5n log n)이라면, f(n) = O(g(n))이다에서 g(n)에 올 수 없는 함수는?

  1. n log n
  2. n

답: 2


문제 2.

If g(n) ≥ M f(n) for n > n₀, then g(n) = (    ). 에서 (    )에 들어갈 식은?


답: Ω(f(n))

해설:
g(n) ≥ M·f(n) for n > n₀ 은 f(n)에 대한 하한(bound from below)을 의미


문제 3.

f(n) = O(n² + n)이라면, f(n) = O(g(n))이다. g(n)에 올 수 없는 함수는?

  1. n
  2. n⁴

답: 2

해설:
f(n) = O(n² + n) 은 O(n²)와 같다고 볼 수 있음
(n²), (n³), (n⁴) → f(n)의 상한이 될 수 있음
하지만 n은 f(n)보다 작기 때문에 상한으로는 올 수 없음


2-3

문제 1.

n 명인 반의 학생들이 모두 키 순으로 앉아있다. 여기에 새로운 학생 한 명이 전학을 왔다. 이 학생을 그냥 맨 앞에 앉도록 할 때, 걸리는 시간 복잡도는 무엇인가?

  1. O(n)
  2. O(n log n)
  3. O(1)
  4. O(log n)

답: 1


문제 2.

int func (int n) {
  for (k = 1; k < n; k = k * 10)
    printf("hello");
}

다음 함수의 시간 복잡도를 n의 함수로 나타내시오.

 

  1. O(log n)
  2. O(n log n)
  3. O(n²)
  4. O(n)

답: 1


문제 3.

다음 중 시간 복잡도가 가장 큰 함수는 무엇인가?

  1. O(nⁿ)
  2. O(n¹⁰⁰)
  3. O(n!)
  4. O(2ⁿ)

답: 1

해설:
(시간 복잡도 크기 순으로 정리):
𝑂(𝑛¹⁰⁰) → 다항식 (Polynomial)
𝑂(2ⁿ) → 지수 함수 (Exponential)
𝑂(𝑛!) → 팩토리얼 (Factorial)
𝑂(𝑛ⁿ) → 지수보다도 빠르게 커지는 초지수 함수


3-1

문제 1.

리스트의 가장 중요한 성질은 모든 원소들이 (    )에 1:1로 대응된다는 점이다.
답: 인덱스


문제 2.

연결 리스트는 리스트를 (    )에 기반하여 구현한 자료구조이다.
답: 포인터


문제 3.

“정렬되지 않은 리스트에서 원소를 추가하는 연산은 정렬된 리스트에서 원소를 추가하는 연산보다 더 좋은 시간 복잡도를 보인다”는 문장의 참과 거짓을 쓰시오.(참 또는 거짓을 쓸 것)
답: 


3-2

문제 1.

n개의 원소를 가진 배열에 대한 이진 검색의 시간 복잡도는 (    )이다.

 

오답: O(n) -> 이건 선형검색

정답: O(log n)

 

해설:

매번 검색 범위를 절반으로 줄임


문제 2.

n개의 원소를 가진 배열에 대한 선형 검색은 최선의 경우에는 [ ]의 시간이 걸리지만 최악의 경우에는 [ ]의 시간이 걸린다. 빈칸을 Big-O 표기법으로 표현한 쌍 중에서 맞는 것은?

  1. O(1), O(n)
  2. O(log n), O(n)
  3. O(1), O(log n)
  4. O(1), O(log n)

답: 1
해설:

최선의 경우: 첫 번째 원소에서 찾음 → O(1)

최악의 경우: 마지막에 찾거나 없을 때 → O(n)


문제 3.

선형 검색과 이진 검색 연산 중에서 분할 정복 알고리즘의 기법으로 설계된 검색 연산은 (    ) 연산이다.


답: 이진 검색


3-3

문제 1.

다음은 알파벳 순으로 정렬된 배열이다.

{BAT, CAT, EAT, FAT, JAT, LAT}

여기에 DAT라는 원소를 추가할 때, 가장 먼저 그 위치를 바꾸는 원소는 무엇인가?

  1. EAT
  2. FAT
  3. JAT
  4. LAT

답: 4

 


문제 2.

다음은 알파벳 순으로 정렬된 배열이다.

{BAT, CAT, EAT, FAT, JAT, LAT}

여기에 EAT라는 원소를 제거할 때, 가장 먼저 그 위치를 바꾸는 원소는 무엇인가?

  1. LAT
  2. FAT
  3. EAT
  4. JAT

답: 2

 


문제 3.

n개의 원소를 가진 정렬된 배열에 대한 추가 연산과 삭제 연산의 시간 복잡도는 (    )이다.
답: O(n)


 

4-1

문제 1.

배열에서는 원소의 위치와 접근 시간의 연관성이 없다. 이러한 성질을 (    )라고 한다.
답: random access


문제 2.

연결 리스트는 데이터와 링크의 결합인 (    )로 이루어져 있다.
답: 노드 (node)


문제 3.

연결 리스트의 각 노드는 다음 노드를 가리키는 (    )을(를) 포함하고 있다.
답: 링크


4-2

문제 1.

각 노드가 하나의 노드와 연결된 연결 리스트를 (    )(이)라고 한다.
답: 단일 연결 리스트


문제 2.

n개의 원소가 저장된 단일 연결 리스트의 제거 연산의 시간 복잡도를 다음 중에서 선택하시오.

  1. O(n log n)
  2. O(log n)
  3. O(1)
  4. O(n)

답: 4


4-3

문제 1.

각 노드가 두개의 노드와 연결된 연결 리스트를 (    )(이)라고 한다.
답: 이중 연결 리스트


문제 2.

“n개의 원소가 저장된 이중 연결 리스트의 제거 연산의 시간 복잡도는 추가 연산의 시간 복잡도와 같다“라는 문장의 참과 거짓을 쓰시오. (참 또는 거짓을 쓸 것)
답: 

해설:  삽입/삭제 모두 O(1) (단, 해당 노드를 알고 있는 경우)


문제 3.

 “n개의 원소가 저장된 이중 연결 리스트의 제거 연산의 시간 복잡도는 단일 연결 리스트의 제거 연산의 시간 복잡도보다 더 크다“라는 문장의 참과 거짓을 쓰시오. (참 또는 거짓을 쓸 것)
답: 거짓

해설:

단일 연결 리스트는 이전 노드를 찾기 위해 O(n)이 걸릴 수 있지만,

이중 연결 리스트는 이전 노드를 쉽게 알 수 있어 제거 시 더 효율적일 수 있다

 

자료구조의 소개

자료란 무엇인가?

  • 시스템에서 제공하는 자료형
  • 사용자가 정의하는 자료형

자료의 관리

1. 추가

2. 제거

3. 검색

검색을 가장 빈번하게 사용하므로 가장 중요

검색의 3가지 종류

  1. 임의의 원소 찾기 (Find arbitrary)
  2. 가장 먼저/늦게 온 원소 찾기 (Find earliest/last)
  3. 최대/최소인 원소 찾기 (Find top)

효율적인 기법

1. 기법이란 무엇인가?

  • 기법(테크닉)
  • 자료를 적절한 구조 (structure)를 갖도록 조직하고 그에 따른 연산 (operation)을 제공
  • 구조 (structure)
  • 개별적인 자료들이 목적에 적합한 관계를 갖도록 배치된 상태

구조 1. 리스트 (list)

자료를 한곳에 보관하기

구조 2. 정렬된 리스트 (sorted list)

검색을 쉽게 정렬한 리스트

구조 3. 큐 (queue)

도착한 순서대로 정렬한 리스트

구조 4. 계층 구조 (hierarchy)

족보를 표현하는 법

구조 5. 그래프 (graph)

관계를 시각적으로 표현

추상화

공통된 속성을 추출하여 이를 이용하는 과정
추상 자료형: c++이나 Java의 클래스 개념으로 구현

2. 효율이란?

어떤 성과를 얻기 위해서 얼마나 많은 자원을 투입하였는지 측정
성능이라고도함
= solution/resource

  1. 최선의 경우 -> 최고기록
  2. 평균의 경우 -> 평점
  3. 최악의 경우 -> 대기 시간

컴퓨터의 자원

  1. 시간 = cpu
  2. 공간 = memory

시간이 더 중요함 (비쌈)

자료구조의 성능

입력된 자료의 크기에 따른 시간의 증가 속도를 표현





 

'🍀 강의 수강 기록 > 자료구조' 카테고리의 다른 글

자료구조 2주차 성능 분석  (0) 2025.04.24
자료구조 퀴즈 1~4주차  (0) 2025.04.24

 

 

https://www.kmooc.kr/view/course/detail/9030?tm=20250422164815

 

K-MOOC

 

www.kmooc.kr

 


 

강좌 소개

수업내용/목표

  • 자료구조의 개념을 이해하여 소프트웨어의 구현 원리를 파악할 수 있다.
  • 자료구조를 구현하는 데에 C와 C++ 언어에 적용하여 프로그래밍 능력을 개발할 수 있다.
  • 자료구조의 원리를 이해하고 이를 알고리즘 개발에 적용하여 코딩 능력을 향상할 수 있다.

강좌 계획

1 자료구조의 소개 개요 퀴즈1
자료와 관리 퀴즈2
효율적인 기법 퀴즈3
2 성능 분석 (Performance Analysis) 성능과 점근적 분석법 퀴즈1
Big–O 표기법 퀴즈2
Big–O 표기법의 예 퀴즈3
3 배열 (Array) 리스트와 배열 퀴즈1
배열의 검색 퀴즈2
추가와 제거 퀴즈3, 과제
4 연결 리스트 (linked list) 연결 리스트 퀴즈1
단일 연결 리스트 퀴즈2
이중 연결 리스트 퀴즈3, 토론
5 스택/큐 (stack.queue) 스택과 연산 퀴즈1
스택의 응용 퀴즈2
큐와 연산 퀴즈3
특수한 큐 퀴즈4, 과제
6 정렬 (sorting) O(n²) 정렬 퀴즈1
합병 정렬 퀴즈2
쾌속 정렬 퀴즈3
7 트리 (Tree) 트리의 개념 퀴즈1
이진 트리 퀴즈2
중간시험
9 이진 탐색 트리 이진 탐색 트리의 개념 퀴즈1
이진 탐색 트리의 연산 (1) 퀴즈2
이진 탐색 트리의 연산 (2) 퀴즈3, 과제
10 우선 순위 큐 히입의 개념 퀴즈1
히입의 연산:추가와 제거 퀴즈2
11 탐색 선형 자료구조의 탐색 퀴즈1
계층적 자료구조의 탐색 퀴즈2
해쉬 퀴즈3
12 그래프 깊이 우선 탐색 알고리즘 퀴즈1
깊이 우선 탐색 알고리즘의 응용 (1) 퀴즈2
깊이 우선 탐색 알고리즘의 응용 (2) 퀴즈3
13 깊이 우선 탐색 그래프의 기본 개념 퀴즈1
그래프의 용어 퀴즈2
그래프의 기본 연산 퀴즈3
14 넓이 우선 탐색 넓이 우선 탐색 알고리즘 퀴즈1
넓이 우선 탐색 알고리즘의 응용 (1) 퀴즈2
넓이 우선 탐색 알고리즘의 응용 (2) 퀴즈3, 토론
기말시험

'🍀 강의 수강 기록' 카테고리의 다른 글

[K-MOOC] 컴퓨터 네트워크 2025.04.21 ~  (0) 2025.04.21

네트워크 개요

네트워크란?

컴퓨터 간에 정보를 주고받을 수 있도록 연결하는 통신망

인터페이스

  • 시스템과 전송 매체의 연결 지점에 대한 규격
  • usb 등

프로토콜

  • 전송매체 간에 데이터를 교환하기 위한 통신 규칙

네트워크

  • 프로토콜을 사용하여 데이터를 교환하는 시스템의 집합

인터넷 프로토콜: IP

시스템

시스템 이란?

  • 정보를 처리하고 전송 매체를 통해 데이터를 주고받음

노드

  • 네트워크 구축에 사용
  • 가장 일반적인 용어

Host 호스트

  • 컴퓨터 네트워크를 구축하는 노드
  • 서버, 클라이언트
  • 호스트는 다른 호스트의 서버인 동시에 또 다른 호스트에 요청을 보내는 클라이언트일 수 있다.

OSI 7계층 모델

  1. 물리 계층(Physical Layer)
  • 물리적으로 데이터를 전송하는 역할을 수행
  • 전선, 광케이블, 와이파이 등
  1. 데이터 링크 계층(Data Link Layer)
  • 물리적 전송 오류 해결
  • 일반적인 상황에서 발생하는 수많은 오류 처리
  1. 네트워크 계층(Network Layer)
  • 올바른 전송 경로 선택
  • 혼잡 제어 역할 포함
  1. 전송 계층(Transport Layer)
  • 송·수신 프로세스 사이의 연결 기능 지원
  • 호스트와 호스트 사이의 연결을 지원
  1. 세션 계층(Session Layer)
  • 대화 개념을 지원하는 상위의 논리적 연결을 지원
  • 사용자의 정보를 이용하여 계층을 만듦
  1. 표현 계층(Presentation Layer)
  • 데이터 표현의 방법
  1. 응용 계층(Application Layer)
  • 다양한 응용 환경을 지원
  • 일반적인 어플리케이션의 표현과 맞닿아 있음

물리 계층부터 상위 계층으로 갈수록 데이터가 많아지므로 데이터를 압축함

상위 계층: 응용, 표현, 세션, 전송

하위 계층: 네트워크, 데이터 링크, 물리

네트워크에서 연결 간의 설정 부분은 보통 하위 계층에서 처리 (hw)

상위 계층은 프로세스 연결 (sw)

프로토콜

  • 프로토콜의 기능
    • 오류제어, 흐름제어, 혼잡제어
    • 주소 지정, 동기화, 캡슐화, 오류 제어, 데이터 분할 및 조합, 연결 제어 등

랜카드 드라이버: 데이터 링크 레이어
tcp: 전송 프로토콜
ftp 클라이언트: 소프트웨어

데이터 단위

  • 전송 계층
    • tcp 세그먼트
    • udp 데이터그램
  • 네트워크 계층
    • npdu 패킷
  • 데이터 링크 계층
    • dpdu 프레임

게이트웨이

리피터

  • 물리 계층 지원
  • 신호 증폭

브리지

  • 물리 계층과 데이터링크 계층의 연결을 도움

라우터

  • 물리, 데이터, 네트워크 계층을 지원하는 하드웨어
  • 데이터링크 이상의 네트워크 계층 지원
  • 노드를 찾아가기 위한 hw

네트워크 주소

IP 주소

  • ipv6도 있지만 ipv4를 많이 사용

호스트 이름->URL

  • 호스트
  • 단체 이름
  • 단체 종류
  • 국가 도메인
  • 호스트 이름->DNS->ip주소

네트워크 모델

계층 구조

모듈화

  • 장점: 오류격리 등등
  • 단점: 모듈이 없는 상황에 전체 시스템 중 하나가 바뀌면 한꺼번에 고쳐야함
  • 함수와 같은 개념

게층 구조의 장점

  • 전체구조 이해하기쉬움
  • 설계 및 구현 용이
  • 독립성
  • 복잡한 작업 손쉽게 구현
  • 인터페이스 프로토콜 단순화
  • 표준화

프로토콜 설계시 고려사항

  • 프로토콜 설계시 계층에 알맞은 주소 표현 필요
  • 주소 표현이 달라서 설계가 어려움 (데이터 링크 계층: 맥어드레스하드웨어의 주소, 네트워크계층: tcp/ip계층 인터넷 프로토콜 주소 사용)
  • 서로를 구분하는 것이 기본적인 역할
    • 주소의 표현 설정 선행 필요
  • 일대다통신지원(브로드캐스팅, 멀티캐스팅)
  • 오류 제어
    • 데이터의 변형, 분실
    • 복구하기 위한 기능이 프로토콜에 필요
  • 흐름 제어
    • 수신 호스트의 버퍼 처리 속도보다 송신 호스트의 데이터 전송 속도가 더 빠른 경우
    • 데이터 분실 오류 발생
    서비스 프리미티브
    • 연결형 서비스를 이용하는 3단계
      • 연결설정, 데이터 전송, 연결 해제
    • 비연결형 서비스
      • 연결을 설정하지 않음
        • 프로토콜이 잘 구성되어 있다면 제대로 동작한다

인터페이스: 상하위 계층 사이의 접속 방법
서비스: 상위 게층이 하위 계층을 사용하는 방법

계층별로 필요한 추가 정보는 헤더에 담음

라우터: 중개노드

요즘은 표현+응용 계층 통틀어 처리

ARP: IP->MAC
RARP: MAC->IP
ICMP: 컨트롤메시지전달

네트워크 교환 방식

  • 회선 교환 방식
    • 양방향 전설 연결
      • 고정된 대역폭의 전송률 지원
      • 전송 전 미리 경로 설정
      • 구조 단순
      • 장점: 네트워크 지연이 발생하지 않을 가능성이 높음, 고정된 대역폭 설정
      • 단점: 전용 채널이 사용되지 않는 동안 채널이 낭비 됨
  • 패킷 교환 방식
    • 네트워크 구성에서의 포인트에 패킷을 전달
    • 가변적 대역폭의 전송률 지원
    • 구조 복잡
    • 비음성 데이터를 송수신하기 위해 설계된 기술
    • Best Effort Service
    • 최적의 경로를 선택, 패킷마다 다른 경로로 전달
    • 데이터는 패킷으로 나뉘고 각 패킷이 독립적인 라우팅을 거쳐 목적지에 도달
    • 호스트 무제한 수용 (모두 처리하지 못하는 상황이 발생)
    • 패킷의 도착 지연 시간이 다양함
    • 정적 경로 동적 경로 등 형태에 따라 상황을 고려해야 함
    • 장점: 채널을 효과적으로 공유 / 특정 패킷을 여러 목적지로 전달 가능 / 오류.흐름 제어로 정확한 데이터 전송
    • 단점: 오류제어, 흐름제어, 재정렬에 기능적인 시간이 필요함/ 패킷이 몰리면 서비스가 되지 않음
  • 프레임, 셀 릴레이 교환 방식
    • 패킷+회선
    • 데이터 전송 속도 향상
    • 네트워크 구조를 적절하게 함
    • 프레임 릴레이
    • 동일한 속도의 전송 매체로 고속 데이터 전송을 지원할 수 있도록 고안된 기술
    • 데이터 링크 계층의 기능을 단순하게 설계
    • 셀 릴레이
    • ATM(Asyncronous Transfer Mode) 방식
    • 회선 교환과 패킷 교환 방식의 장점을 모아서 고안
    • 오류 제어에 대한 오버헤드 최소화
    • 셀이라는 고정 크기의 패킷을 사용
    • 속도를 올리고 안정성을 확보

<---단순  ------------ 구조 ------------  복잡--->

회선 교환 - 셀 릴레이 - 프레임 릴레이 - 패킷 교환

<---고정------------ 비트율 ------------ 가변--->

네트워크 구성 형태

메시형

고비용 고신뢰 소규모네트워크

 

스타형

비용 저렴하고 선이 적음
hub 고장나면 전체 네트워크에 영향
single point failure

트리형

허브+허브
허브만 준비되면 많은 컴퓨터를 쉽게 연결할 수 있지만 허브가 고장나면 모든 노드 접속 불가

버스형

장점: 통신 회선에 추가 삭제가 간단함
단점: 통신 회선이 하나라 성능이 떨어지고 통신 회선의 특정 부분이 고장나면 전체 네트워크가 분리됨

링형

장점: 대규모 네트워크 구성
단점: 하나만 분리되거나 끊어져도 전체 네트워크 성능 하락

하이브리드형

실제 네트워크 구성

대규모- 링형
중규모- 버스형
소규모- hub

네트워크 분류

근거리 통신망(LAN)

Local Area Network

  • 가까운 기기를 회선으로 연결
  • 버스 형태
  • 브로드캐스팅도시 통신망 (MAN)Metropolitan Area Network
  • 도시 규모의 거리에 있는 컴퓨터를 통신 회선으로 연결

광역 통신망 (WAN)

Wide Area Network

  • 국가 이상의 넓은 지역 지원
  • 점대점으로 연결
  • 교환 기능이 반드시 필요 교환기능이 포함된 node가 중요
  • 전송 매체 비용 많이 듦

인터네트워킹

  • 둘 이상의 네트워크를 연결하는 기능
  • 라우터: 네트워크를 연결하는 장비. 일반적으로 3계층 기능을 수행
  • 게이트웨이
    • 라우터: 네트워크 계층 지원
    • 브리지: 데이터 링크 계층 지원
    • 브리지에 연결된 LAN의 종류만큼 MAC/물리 계층 처리
    • 연결되는 랜이 다른 종류인 경우 프레임 해석, 변환 등의 복잡한 작업 필요
    • 서로 다른 랜을 붙여주는 역할을 함
    • 리피터: 물리 계층 지원
    • 신호 증폭

IP 인터네트워킹

  • 패킷 중개 기능이 IP 프로토콜을 통해 진행
  • 양쪽 MAC 계층이 다를 경우 패킷 변환 기능 필요
  • 필요 시 패킷 분할과 병합 과정도 수행

서비스 품질

  • QoS(Quality of Service) 특징
    • 연결 설정 지연(Connection Establishment Delay)
    • 연결 설정 실패 확률(Connection Establishment Failure Probability)
    • HTTP 요청을 웹브라우저를 통해 보냈지만, 10초 후 연결시 해당 부분들 고려하여 품질 확인
    • 전송률(Throughput), 전송 지연(Transit Delay)
    • 오류율(Residual Error Rate), 우선순위(Priority)인터넷에서의 QoS

◆ IP 프로토콜
⊙ 모든 패킷에 동일한 기준을 적용
⊙ 데이터 도착 순서를 100% 보장하지 않음

◆ IP 프로토콜에서의 QoS 지원
⊙ 서로 다른 QoS 기준을 제시
• 각 라우터에서 이를 처리함
◆ 전송 데이터의 종류별 특징
⊙ 영상 정보
• 대용량의 실시간 전송
• 전송 오류에 대해 관대함
⊙ 컴퓨터 데이터
• 실시간 전송 불필요
• 전송 오류에 대해 민감함

 

인터넷 딜레이 측정 방법
◆ Traceroute
⊙ 하나의 컴퓨터에서 원하는 목적지까지 가는 중간에 멈추는 노드들에게 3번씩 프로브를 보내고딜레이를 평균내서 보여주게 됨

패킷 손실(Packet Loss)

◆ 큐에 담지 못하는 패킷들에 의해 발생
◆ 발생 원인
⊙ 노드가 한꺼번에 네트워크 사용
⊙ 혼잡한 상황 발생
◆ 혼합 제어 알고리즘을 통해 패킷 로스 방지

처리량(Throughput)

◆ 얼마나 빠르게 보낼 수 있는지에 대한 성능 지표
⊙ 특정 시간의 지표, 평균 지표
◆ 각 링크 별로 달라짐
⊙ 보내는 쪽 < 받는 쪽
⊙ 보내는 쪽 > 받는 쪽
◆ 보내는 쪽의 처리량이 큰 경우
⊙ 라우터에서 드랍이 많이 발생하게 됨 → Bottleneck 발생
• Bottleneck 해소를 위해 흐름 제어가 필요함

https://www.kmooc.kr/view/course/detail/16382?tm=20250421183716

 

K-MOOC

 

www.kmooc.kr

 

 

 

 

 

 

컴퓨터 네트워크 과목 학습을 위해 우리 학교에서 운영하는 k-mooc 강의 컨텐츠를 수강하려고 한다.

한 강의가 짧아서 빠르게 진도를 나가는 것이 목표다.

 

 

수업계획서

주차 주차명(주제) 차시 차시명(학습내용) 평가방법
1 컴퓨터 네트워크와 인터넷 1-1 네트워크 개요 퀴즈
1-2 네트워크모델 퀴즈
1-3 네트워크기술 퀴즈
2 물리 계층 Ⅰ: 시간 및 주파수축에서의 신호 1-1 시간축에서의신호 퀴즈
1-2 주파수축에서의신호 퀴즈
1-3 데이터전송률및대역폭 퀴즈
3 물리 계층 Ⅱ: 디지털 데이터, 디지털 신호 1-1 디지털데이터와디지털신호의관계 퀴즈
1-2 인코딩기술 퀴즈
1-3 스크램블링기술 퀴즈
4 물리 계층 Ⅲ: 디지털 데이터, 아날로그 신호 1-1 디지털데이터와아날로그신호의관계 퀴즈
1-2 변조기술Ⅰ 퀴즈
1-3 변조기술Ⅱ 퀴즈
5 물리 계층 Ⅳ: 아날로그 데이터, 디지털 신호 1-1 아날로그데이터와디지털신호의관계 퀴즈
1-2 Pulse Code Modulation 퀴즈
1-3 Delta Modulation 퀴즈
6 데이터 링크 계층 Ⅰ 1-1 가장간단한네트워크, CSMA/CD 퀴즈
1-2 MAC Address 퀴즈
1-3 오류검출 퀴즈
7 데이터 링크 계층 Ⅱ 1-1 프레이밍 퀴즈
1-2 스위치 퀴즈
1-3 ARP 퀴즈
8 중간고사
9 데이터 링크 계층 Ⅲ 1-1 Switch 구조 퀴즈
1-2 STP 퀴즈
1-3 VLAN 퀴즈
10 네트워크계층Ⅰ 1-1 네트워크 계층 개요 퀴즈
1-2 인터넷 프로토콜(IP) 퀴즈
1-3 데이터평면과 제어평면 퀴즈
11 네트워크계층Ⅱ 1-1 라우팅 프로토콜 퀴즈
1-2 외부 라우팅과 SDN 퀴즈
1-3 기타 네트워크 프로토콜 퀴즈
12 네트워크전송계층Ⅰ 1-1 전송 계층 개요 퀴즈
1-2 신뢰적 데이터 전송 원리 퀴즈
1-3 파이프라인 프로토콜 및 혼잡 제어 원리 퀴즈
13 네트워크전송계층Ⅱ 1-1 TCP 개요 퀴즈
1-2 TCP 동작 원리 퀴즈
1-3 UDP RTP 퀴즈
14 네트워크전송계층Ⅲ 1-1 네트워크 응용 계층 개요 퀴즈
1-2  HTTP 그리고 DNS 퀴즈
1-3 이메일, 스트리밍 CDN P2P 퀴즈
15 기말고사

 

'🍀 강의 수강 기록' 카테고리의 다른 글

[K-MOOC] 자료구조 2025.04.22 ~  (0) 2025.04.22

+ Recent posts