25년2학기/컴퓨터 네트워크

컴넷) (11.05)

kimchangmin02 2025. 11. 5. 19:42

[  ] 라우터 온 어 스틱, L3 스위치

 

 

 

 

 

 

Ⅰ. 데이터 링크 계층 마무리: 가상 LAN (VLAN)

1. 이더넷의 발전과 방송/충돌 영역

이더넷은 세 가지 방식으로 발전해왔습니다.

  • 전통적 이더넷 (버스 토폴로지): 방송 영역 1개, 충돌 영역 1개
  • 허브 이더넷 (스타 토폴로지): 방송 영역 1개, 충돌 영역 1개
  • 스위치 이더넷 (스타 토폴로지): 방송 영역 1개, 충돌 영역이 포트별로 분리됨

이더넷 스위치의 등장으로 충돌 문제는 사실상 해결되었습니다. 따라서 다음 개선 방향은 방송 영역(Broadcast Domain)을 제어하는 것이 되었습니다.

2. 방송 영역 제어의 필요성

방송 영역은 무조건 크거나 작은 것이 좋은 것이 아니며, 장단점이 명확합니다.

  • 세그먼트 단일화 (방송 영역을 크게 만듦):
    • 장점: 네트워크 프린터, 파일 서버 등 모든 자원을 쉽게 발견하고 공유할 수 있음.
    • 단점: 자원들이 자신을 알리기 위해 보내는 브로드캐스트 패킷이 많아져 실제 데이터 전송 효율이 떨어짐.
  • 세그먼트 세분화 (방송 영역을 잘게 나눔):
    • 장점: 불필요한 브로드캐스트 트래픽이 줄어들어 링크 효율성이 높아짐.
    • 단점: 다른 방송 영역에 있는 자원을 공유하기 어려워짐.

3. 가상 LAN (VLAN)의 개념과 동작

VLAN은 물리적으로는 하나의 큰 네트워크(세그먼트 단일화)로 구성한 뒤, 소프트웨어 설정으로 방송 영역을 논리적으로 분할하는 기술입니다.

  • 동작 원리: 스위치가 특정 포트 그룹을 하나의 VLAN으로 묶습니다. 한 그룹에서 발생한 브로드캐스트 프레임은 같은 그룹에 속한 포트로만 전달되고 다른 그룹으로는 전달되지 않습니다. 이를 통해 마치 여러 개의 독립된 이더넷 링크가 있는 것처럼 동작합니다.

4. VLAN 간 통신 문제와 해결책

VLAN으로 네트워크를 분할하면, 서로 다른 VLAN에 속한 호스트들은 직접 통신할 수 없습니다. 이 문제를 해결하기 위해 라우터가 필요합니다. 하지만 VLAN이 많아지면 라우터의 포트가 부족해지는 문제가 발생하며, 해결책은 다음과 같습니다.

  1. 라우터 온 어 스틱 (Router on a Stick): 라우터의 물리적 포트 하나를 논리적으로 여러 개인 것처럼 나누어 사용하는 방식입니다.
  2. L3 스위치: 이더넷 스위치(L2)와 라우터(L3)의 기능을 하나의 장비로 통합한 것입니다. 내부적으로 포트를 많이 만들 수 있어 포트 부족 문제를 저렴하게 해결합니다.

5. 여러 스위치 환경에서의 VLAN과 802.1Q 프로토콜

VLAN이 여러 스위치에 걸쳐 구성될 때 문제가 발생합니다. 스위치 A에서 발생한 브로드캐스트 프레임이 스위치 B로 전달될 때, 스위치 B는 이 프레임이 어떤 VLAN에 속하는지 알 수 없습니다. 이더넷 헤더에는 VLAN 정보가 없기 때문입니다.

  • 해결책: 802.1Q 프로토콜
    • 스위치 간에 프레임을 전달할 때, 이더넷 헤더 중간에 틈을 만들어 VLAN ID를 포함한 태그(Tag) 정보를 추가하는 프로토콜입니다.
    • 이 작업은 메모리 복사와 CRC 재계산 등 장비에 큰 부담을 주지만, 모든 프레임이 아닌 스위치 간 전달되는 프레임에만 적용되고, VLAN의 필요성이 매우 절실했기 때문에 채택되었습니다.
    • 오늘날 거의 모든 이더넷 스위치는 VLAN과 802.1Q를 기본으로 지원합니다.

Ⅱ. 네트워크 계층 (Network Layer)

1. 네트워크 계층의 핵심 임무: 라우팅 (Routing)

물리/데이터 링크 계층이 좋은 '링크'를 만드는 데 집중했다면, 네트워크 계층의 핵심 임무는 **길찾기(라우팅)**입니다. 즉, 수많은 링크들을 거쳐 최종 목적지까지 가는 최적의 경로를 찾는 역할을 합니다.

  • 라우팅의 개념:
    • 좁은 의미: 목적지까지의 경로를 계산하는 것 (라우팅 알고리즘 수행).
    • 넓은 의미: 경로 계산 + 계산된 경로에 따라 패킷을 전달(포워딩)하는 것.
  • 동작 과정: 라우터들은 라우팅 프로토콜을 통해 인접 라우터와 정보를 교환하고, 라우팅 알고리즘을 실행하여 라우팅 테이블을 생성 및 관리합니다. 패킷이 도착하면 목적지 주소를 보고 이 테이블을 참조하여 다음 경로로 포워딩합니다.

2. 라우터의 내부 구조

  • 스위칭 패브릭: 입력 포트로 들어온 패킷을 적절한 출력 포트로 연결해주는 핵심 부분입니다.
    • 메모리 공유/버스 방식: 구조는 간단하지만 공유 자원 충돌 문제로 고속 라우터에는 부적합합니다.
    • 크로스바 방식: 동시에 여러 개의 전용 경로를 만들 수 있어 충돌이 적고 고속 라우터에 적합합니다.
  • 버퍼 위치: 패킷이 순간적으로 몰릴 때를 대비한 임시 저장 공간입니다.
    • 입력단 버퍼: 헤드 오브 라인 블로킹(Head-of-Line Blocking) 문제가 발생할 수 있어 속도가 저하될 수 있습니다. (앞선 패킷이 막히면 뒷 패킷도 기다려야 하는 현상)
    • 출력단 버퍼: 위 문제가 없어 고속 처리에 유리하지만, 스위칭 패브릭의 속도가 매우 빨라야 한다는 전제 조건이 붙습니다. 고속 라우터는 보통 크로스바 패브릭과 출력단 버퍼 구조를 사용합니다.

3. 라우팅의 분류

  • 목적지 범위에 따른 분류:
    • 유니캐스트: 1:1 통신 (가장 기본)
    • 멀티캐스트: 1:N 그룹 통신 (인터넷에서 비효율적이나 지원은 함)
    • 브로드캐스트: 1:All 통신 (인터넷 라우터는 지원하지 않음)
  • 경로 설정 방식에 따른 분류:
    • 정적(Static) 라우팅: 관리자가 수동으로 라우팅 테이블을 설정. 연결된 다음 라우터가 하나뿐인 경우(예: 일반 PC)에 효율적입니다.
    • 동적(Dynamic) 라우팅: 라우터가 프로토콜을 통해 스스로 최적 경로를 찾아 테이블을 자동 갱신. 일반적인 네트워크 환경에서 사용됩니다.

Ⅲ. 인터넷의 네트워크 계층: IP 프로토콜

인터넷의 네트워크 계층은 IP, ICMP, 라우팅 프로토콜 등으로 구성되며, 그중 가장 핵심은 **IP(Internet Protocol)**입니다.

1. IP 프로토콜의 핵심 역할

  1. 주소 부여 (가장 중요): 모든 네트워크 인터페이스에 고유한 IP 주소를 할당합니다. 이는 라우팅의 시작점이기 때문에 핵심 역할로 꼽힙니다.
  2. 정보 전달: IP 헤더를 통해 각종 제어 정보를 전달합니다.
  3. 패킷 분할(Fragmentation) 및 재조립(Reassembly): 큰 패킷을 작은 조각으로 나누고 목적지에서 다시 합치는 역할을 합니다.

2. IP 헤더 (IPv4 기준, 기본 20바이트)

  • Version (버전): IP 프로토콜의 버전 (주로 4). IPv6는 주소 길이를 32비트에서 128비트로 확장한 차세대 프로토콜입니다.
  • Header Length (헤더 길이): 옵션 필드 때문에 헤더 길이가 가변적이므로 길이를 명시합니다.
  • Total Length (전체 길이): IP 패킷 전체(헤더+데이터)의 크기. 최대 약 64KB까지 가능하지만, 실제로는 이더넷의 최대 전송 단위(MTU)인 1500바이트를 거의 넘지 않습니다.
  • TTL (Time To Live): 패킷의 수명. 라우터를 하나 거칠 때마다 1씩 감소하며 0이 되면 패킷은 폐기됩니다. 이는 라우팅 루프에 빠져 패킷이 무한히 떠도는 것을 방지합니다.
  • Protocol (상위 프로토콜): 페이로드(데이터 부분)가 TCP인지 UDP인지 등을 명시합니다.
  • Source/Destination IP Address (출발지/목적지 IP 주소): 가장 중요한 필드. 이 주소를 기반으로 라우팅이 이루어집니다.

3. IP 패킷 분할(Fragmentation)과 재조립

패킷이 자신의 크기보다 작은 MTU를 가진 링크를 통과해야 할 때 분할이 일어납니다.

  • 분할 및 재조립 주체: 중간 라우터가 분할하고, 최종 목적지 호스트가 재조립합니다.
  • 관련 헤더 필드:
    • Identification (ID): 원본 패킷의 고유 ID. 분할된 모든 조각들은 이 ID를 공유합니다.
    • Flags (플래그): 3개의 비트. 'More Fragments' 비트는 뒤에 쪼개진 조각이 더 있는지를 표시합니다. (마지막 조각은 0, 나머지는 1)
    • Fragment Offset (분할 오프셋): 해당 조각이 원본 패킷의 어느 위치에 해당되는지를 나타내는 값. 이 정보를 이용해 목적지에서 조각들을 순서에 맞게 재조립합니다.

Ⅳ. 인터넷 라우팅의 현실과 계층적 라우팅

1. 단일 라우팅 알고리즘의 한계

인터넷은 수억 개 이상의 노드로 구성된 초거대 네트워크입니다. 다익스트라나 벨만-포드 같은 라우팅 알고리즘을 인터넷 전체에 직접 적용하는 것은 계산 복잡도 때문에 불가능합니다.

2. 해결책: 계층적 라우팅

이 문제를 해결하기 위해 전화망처럼 네트워크를 여러 계층으로 나누어 라우팅을 수행합니다.

  • 전화망의 예시: 국가번호(82) -> 지역번호(053) -> 국번(810) -> 가입자번호 순으로 범위를 좁혀가며 경로를 찾습니다.
  • 인터넷의 계층 구조: AS (Autonomous System, 자율 시스템)
    • 인터넷은 수많은 AS들의 집합으로 구성됩니다. AS는 KT, SKT와 같이 단일 관리 정책 하에 운영되는 네트워크 집단을 의미합니다.
    • 라우팅은 3단계로 이루어집니다:
      1. AS 간 라우팅: 내가 속한 AS에서 목적지 AS까지의 경로를 찾습니다. (가장 상위 레벨)
      2. AS 내 라우팅: 목적지 AS에 도착하면, 그 안에서 특정 네트워크까지의 경로를 찾습니다.
      3. 네트워크 내 라우팅: 최종적으로 해당 네트워크 내에서 목적지 호스트를 찾습니다.

3. 인터넷 라우팅의 규모와 과제

  • 2017년 기준, AS의 수는 약 6만 개, 전체 네트워크 수는 약 80만 개에 달하며 계속 증가하고 있습니다.
  • 이로 인해 인터넷의 핵심 라우터(코어 라우터)들은 80만 개가 넘는 항목을 가진 거대한 라우팅 테이블을 유지해야 합니다.
  • 매 패킷마다 이 거대한 테이블을 초고속으로 검색해야 하므로, 오늘날에는 소프트웨어 최적화뿐만 아니라 하드웨어 기반의 병렬 검색 기술이 사용됩니다.

 

 

 

 

 

 

 

 

 

1. "포트(Port)"란 무엇인가요?

A: 랜선을 꽂는 구멍입니다.

"자, 이 스위치의 1번부터 8번까지의 구멍(포트)들은 이제부터 **'A팀'**이다! 그리고 9번부터 16번까지의 구멍(포트)들은 **'B팀'**이다!"

이렇게 선언하는 것과 같습니다. 물리적으로는 아무것도 바꾸지 않고, 소프트웨어로 팀을 나눠주는 것이죠.

 

 

 

 

 

[  ]

2. "마치 독립된 이더넷 링크가 있는 것처럼 동작한다"는 무슨 뜻인가요?

A: 물리적으로는 스위치 1대지만, 실제로는 스위치 2대가 있는 것처럼 행동한다는 뜻입니다.

 

 

 

 

네트워크의 실체: 컴퓨터와 연결 지점

우리가 '네트워크'라고 말할 때, 눈에 보이지 않는 거대한 개념처럼 느껴지지만, 그 실체는 아주 간단합니다.

  1. 여러 대의 컴퓨터가 있습니다.
  2. 이 컴퓨터들을 서로 연결해주는 **'스위치'**라는 장비가 있습니다.
  3. 컴퓨터는 랜선을 통해 스위치에 연결됩니다.
  4. 이 랜선이 스위치에 꽂히는 **'구멍'**이 바로 **'포트'**입니다.

즉, **포트는 컴퓨터가 네트워크에 물리적으로 접속하는 바로 그 '연결 지점'**입니다.

 

 

 

 

 

"스위치는 도대체 무엇을 기준으로 컴퓨터를 그룹으로 나눌 수 있을까요?"

스위치는 A컴퓨터가 '기획팀' 소속인지, B컴퓨터가 '개발팀' 소속인지 알지 못합니다. 스위치가 유일하게 확실히 아는 것은 이것뿐입니다.

"A컴퓨터는 1번 구멍(포트)에 연결되어 있군."
"B컴퓨터는 9번 구멍(포트)에 연결되어 있군."

따라서 관리자가 스위치에게 컴퓨터 그룹을 나누라고 명령을 내릴 때, 컴퓨터 이름을 댈 수는 없습니다. 대신, 스위치가 알아들을 수 있는 언어, 즉 **'포트 번호'**로 명령을 내려야 합니다.

"스위치야, 앞으로 **1번부터 8번 포트까지는 '기획팀(VLAN 10)'**으로 취급해라. 그 포트들끼리만 소통하게 해줘."
"그리고 **9번부터 16번 포트까지는 '개발팀(VLAN 20)'**으로 취급해라. 그쪽은 그쪽끼리만 소통하게 하고."

 

 

 

 

질문: 왜 갑자기 포트라는 말이 나오나요?

답변: VLAN은 '컴퓨터'를 그룹으로 묶는 개념이지만, 실제로 그 명령을 내리고 실행하는 대상은 바로 그 컴퓨터가 연결된 스위치의 **'포트(연결 지점)'**이기 때문입니다. 포트를 기준으로 팀을 나누는 것이 VLAN을 구현하는 가장 기본적인 방법입니다.

 

 

 

 

 

 

 

 

  • 동작 방식: 스위치는 '똑똑'합니다. 1번 포트로 데이터가 들어오면, 그 데이터의 **'목적지 주소'(MAC 주소)**를 확인합니다. 그리고 그 목적지 주소를 가진 컴퓨터가 연결된 포트를 정확히 찾아내어 오직 그 포트로만 데이터를 보내줍니다.

공유링크, 데이터 링크계층임

 

 

 

 

  • 스위치 1개일 때: 스위치 자신이 모든 VLAN 정보를 알고 있으므로, 방송이 들어오면 **"아, 이건 A팀(VLAN 10)용이구나"**라고 즉시 판단하고 해당 팀에게만 전달할 수 있습니다.
  • 스위치 2개일 때: 스위치 A에서 스위치 B로 방송이 넘어갈 때, 일반적인 방법으로는 "이 방송은 A팀(VLAN 10)용이야"라는 정보가 함께 전달되지 않습니다. 스위치 B는 그냥 출처 불명의 방송을 하나 받았을 뿐, 이걸 어느 팀에게 전달해야 할지 알 길이 없습니다.

 

 

 

"스위치-스위치 형태는 그냥 더 큰 스위치 한 개랑 똑같은 거 아닌가?" 라고 생각하기 쉽습니다.

하지만 VLAN 환경에서는 전혀 다릅니다. 그리고 그 차이의 핵심은 바로 '정보의 경계' 때문입니다.

 

 

 

 

 

  1. 손님 A(1번 계산대행)와 손님 B(2번 계산대행)가 동시에 마트 입구(입력 포트)로 들어옵니다.
  2. 두 사람은 줄을 설 필요 없이, 즉시 초고속 무빙워크를 타고 각자 가고 싶은 계산대로 동시에 달려갑니다.

 

 

 

 

 

줄 서는 위치 도착하자마자 입구에서 한 줄로 목적지 계산대 앞에서 각자 줄로
문제점 앞사람(패킷)이 막히면 뒷사람 전체가 멈춤 (Head-of-Line Blocking) 다른 사람(패킷)에게 영향을 주지 않음

 

 

 

 

 

 

 

 

 

상황 설정: 왜 분할이 필요한가?

강의에서 나온 예시를 그대로 가져오겠습니다.

  • 내가 보내려는 큰 IP 패킷이 하나 있습니다. 크기는 4000 바이트입니다.
  • 그런데 이 패킷이 중간에 이더넷(Ethernet) 링크를 통과해야 합니다.
  • 이더넷 링크가 한 번에 나를 수 있는 데이터의 최대 크기(MTU, Maximum Transmission Unit)는 1500 바이트로 정해져 있습니다.
  • 4000 바이트짜리 패킷은 1500 바이트짜리 문을 통과할 수 없으므로, 잘게 쪼개서 통과해야 합니다.

1. '1480'이라는 숫자는 어떻게 나왔는가? (계산 과정)

"1500 바이트까지 되니까, 1500, 1500, 1000 이렇게 세 조각으로 쪼개면 되지 않을까?" 라고 생각하기 쉽습니다. 하지만 여기서 중요한 함정이 있습니다.

쪼개진 조각들도 각각 독립적인 IP 패킷으로 취급됩니다. 즉, 모든 조각은 자기만의 **IP 헤더(기본 20바이트)**를 가져야 합니다.

따라서 계산은 이렇게 해야 합니다.

한 조각이 담을 수 있는 순수 데이터(Payload)의 최대 크기
= (이더넷의 최대 허용 크기) - (새로 붙일 IP 헤더 크기)
= 1500 바이트 - 20 바이트
= 1480 바이트

이것이 바로 1480이라는 숫자의 정체입니다. 이더넷을 통과하기 위해 만들 수 있는 가장 큰 데이터 덩어리의 크기인 셈이죠.

이제 4000바이트 패킷(헤더 20 + 데이터 3980)을 쪼개보겠습니다.

  1. 첫 번째 조각: 데이터 1480 바이트를 담습니다. 여기에 헤더 20바이트를 붙여 총 1500 바이트짜리 패킷을 만듭니다.
  2. 두 번째 조각: 데이터 1480 바이트를 또 담습니다. 헤더 20바이트를 붙여 총 1500 바이트짜리 패킷을 만듭니다.
  3. 남은 데이터: 3980 - 1480 - 1480 = 1020 바이트가 남습니다.
  4. 세 번째 조각: 남은 데이터 1020 바이트를 담습니다. 헤더 20바이트를 붙여 총 1040 바이트짜리 패킷을 만듭니다.

이렇게 해서 원래의 큰 패킷 하나가 1500, 1500, 1040 바이트짜리 작은 패킷 세 개로 쪼개지는 것입니다.


2. 헤더 필드의 역할: 어떻게 다시 합치는가? (ID, Flags, Offset)

이제 목적지에 도착한 컴퓨터는 이 세 조각을 받아서 원래의 4000 바이트짜리 패킷으로 다시 합쳐야 합니다. 이때 사용하는 정보가 바로 IP 헤더의 ID, Flags, Offset 필드입니다. 마치 퍼즐 조각 맞추기와 같습니다.

① Identification (ID): "같은 퍼즐 세트 찾기"

  • 역할: 이 필드는 원본 패킷의 고유한 이름표입니다.
  • 동작: 원래의 4000 바이트짜리 패킷의 ID가 예를 들어 X였다면, 이 패킷이 쪼개져서 만들어진 세 개의 조각 패킷 모두 ID가 X로 동일합니다.
  • 목적: 수신자 컴퓨터는 수많은 패킷들 중에서 ID가 X인 조각들만 모아서 "아하! 이 조각들은 원래 한 세트였구나!"라고 인식하고 재조립을 시작합니다.

② Flags: "이 조각이 마지막인가?"

  • 역할: 3비트로 구성된 깃발(Flag) 정보입니다. 이 중 가장 중요한 것이 MF (More Fragments) 플래그입니다.
  • 동작:
    • MF = 1: "내 뒤에 쪼개진 조각이 더 있습니다." (즉, 마지막 조각이 아님)
    • MF = 0: "이것이 마지막 조각입니다."
  • 예시 적용:
    • 첫 번째 조각 (1500 바이트): MF = 1
    • 두 번째 조각 (1500 바이트): MF = 1
    • 세 번째 조각 (1040 바이트): MF = 0
  • 목적: 수신자는 MF=0인 조각이 도착해야 비로소 "이제 이 퍼즐(ID=X)의 모든 조각이 다 모였군!"이라고 판단하고 재조립을 시작할 수 있습니다.

③ Fragment Offset: "퍼즐 조각의 정확한 위치"

  • 역할: 해당 조각에 들어있는 데이터가 원본 데이터의 몇 번째 위치에서부터 시작하는지를 알려주는 값입니다.
  • 동작: 이 값은 바이트 단위가 아니라 8바이트 단위로 기록됩니다. (필드 크기가 작아서 8로 나눈 값을 저장)
  • 예시 적용:
    • 첫 번째 조각: 맨 처음부터 시작하므로, 시작 위치는 0바이트입니다. Offset 값 = 0 / 8 = 0
    • 두 번째 조각: 첫 번째 조각의 데이터(1480 바이트) 바로 뒤에 이어져야 합니다. 시작 위치는 1480바이트입니다. Offset 값 = 1480 / 8 = 185
    • 세 번째 조각: 두 번째 조각의 데이터(1480+1480=2960 바이트) 뒤에 이어져야 합니다. 시작 위치는 2960바이트입니다. Offset 값 = 2960 / 8 = 370
  • 목적: 수신자는 이 Offset 값을 보고 조각들이 어떤 순서로 도착하든 상관없이, 원래의 위치에 정확하게 데이터를 끼워 넣어 원본을 복원할 수 있습니다.

이처럼 IP 프로토콜은 헤더의 이 세 가지 정보를 정교하게 이용해서, 서로 다른 특성을 가진 링크들을 통과하기 위해 패킷을 쪼갰다가 목적지에서 감쪽같이 원상 복원하는 중요한 기능을 수행합니다.

 

 

 

 

 

 

 

 

1. 라우팅 알고리즘의 핵심 개념 (그래프 모델과 비용)

강의 후반부에 라우팅 알고리즘을 설명하기 전, 네트워크를 어떻게 수학적 모델로 표현하는지에 대해 설명합니다. 이 부분은 모든 라우팅 알고리즘의 기초가 됩니다.

  • 그래프 모델 (Graph Model):
    • 라우팅 문제를 풀기 위해, 복잡한 실제 네트워크를 단순화된 **'그래프'**로 표현합니다.
    • **라우터(또는 노드)**는 **점(Vertex)**으로 표현됩니다.
    • 라우터들을 연결하는 **통신 회선(링크)**은 **선(Edge)**으로 표현됩니다.
  • 링크 비용 (Link Cost / Metric):
    • 그래프의 각 '선'에는 숫자가 붙어 있는데, 이를 **'비용(Cost)'**이라고 부릅니다. 이 '비용'은 길찾기(라우팅)의 기준이 됩니다.
    • 강의에서 강조한 것처럼, 이 '비용'은 여러 가지 의미를 가질 수 있습니다.
      1. 물리적 거리: 실제 링크의 길이 (km)
      2. 홉 카운트 (Hop Count): 모든 링크의 비용을 **'1'**로 설정. 이 경우, 최단 경로는 '가장 적은 수의 라우터를 거쳐가는 경로'가 됩니다.
      3. 대역폭의 역수 (Inverse of Bandwidth): 링크의 전송 속도(대역폭)가 빠를수록 비용은 낮아지고, 느릴수록 비용은 높아집니다. (예: 고속도로는 통행료가 싸고, 비포장도로는 비싼 것에 비유)
      4. 현재 혼잡도 (Congestion): 특정 링크에 트래픽이 몰리면, 일시적으로 비용을 높여서 다른 경로로 트래픽을 분산시키도록 유도할 수 있습니다.

※ 시험 포인트: "라우팅에서 링크의 '비용'으로 사용될 수 있는 기준을 설명하시오." 와 같은 문제가 나올 수 있습니다.

2. 라우팅 알고리즘의 두 가지 계열 (링크 스테이트 vs. 디스턴스 벡터)

강의에서는 라우팅 알고리즘을 크게 두 가지 스타일로 분류합니다. 이 둘의 차이점은 네트워크 시험의 단골 문제입니다.

구분 링크 스테이트 (Link-State) 디스턴스 벡터 (Distance-Vector)
대표 알고리즘 다익스트라 (Dijkstra) 벨만-포드 (Bellman-Ford)
필요한 정보 네트워크 전체의 **지도(Topology)**가 필요함 자신의 이웃(Neighbor) 정보만 있으면 됨
정보 공유 방식 "나는 누구고, 누구와 연결되어 있다"는 정보를 네트워크 전체에 방송 "내가 아는 목적지까지의 거리 정보"를 이웃과 주기적으로 교환
동작 방식 전체 지도를 본 후 최단 경로를 계산함 이웃에게 들은 정보를 바탕으로 자신의 경로 테이블을 점진적으로 개선
비유 내비게이션 (전체 지도를 보고 최적 경로 계산) 도로 이정표 (다음 도시 방향과 거리만 보고 따라감)

※ 시험 포인트: 두 계열의 근본적인 차이점(전체 정보를 아는가 vs. 이웃 정보만 아는가)을 이해하는 것이 핵심입니다.

3. 이더넷 스위치와 라우터의 명확한 비교

강의에서 두 장비가 비슷해 보이지만 결정적인 차이가 있다고 설명합니다.

  • 네트워크 규모: 스위치는 작은 네트워크(LAN) 구성에, 라우터는 큰 네트워크(인터넷) 구성에 사용됩니다.
  • 브로드캐스트 지원 여부 (결정적 차이):
    • 스위치: 브로드캐스트를 지원합니다. 한 컴퓨터가 방송하면 스위치는 이를 복제해서 모든 포트로 뿌려줍니다. 이 때문에 네트워크가 커지면 '브로드캐스트 스톰' 문제로 성능이 저하되어 큰 네트워크를 만들 수 없습니다.
    • 라우터: 브로드캐스트를 지원하지 않습니다 (차단합니다). 라우터는 방송 패킷이 들어오면 다른 네트워크로 넘기지 않고 버립니다. 이 덕분에 인터넷과 같은 거대 네트워크를 구축할 수 있는 것입니다.
  • 링크 효율성:
    • 스위치: 스패닝 트리 프로토콜(STP) 때문에 루프 구조를 막기 위해 일부 링크를 비활성화합니다. 즉, 평소에 노는 링크가 발생할 수 있습니다.
    • 라우터: 모든 링크를 활용하여 목적지까지의 최적 경로를 찾으므로, 노는 링크가 거의 없이 자원을 효율적으로 사용합니다.

4. IP 헤더의 나머지 중요 필드들

분할 관련 필드 외에, 강의에서 언급된 다른 필드들의 역할도 명확히 알아두는 것이 좋습니다.

  • Type of Service (ToS): 원래는 "이 패킷은 중요하니 먼저 처리해달라"는 **서비스 품질(QoS)**을 위해 만들어졌지만, 오랫동안 라우터들이 이 값을 무시해서 거의 사용되지 않다가 최근에 다시 주목받고 있다는 '역사'를 알아두면 좋습니다.
  • Header Checksum (헤더 체크섬):
    • 오류 검출을 위한 필드입니다.
    • 중요한 점: 성능 문제로 강력한 CRC 대신 간단한 덧셈 기반의 체크섬을 사용합니다.
    • 더 중요한 점: 이 체크섬은 IP 헤더 부분에만 적용되고, 데이터(페이로드) 부분은 검사하지 않습니다. 데이터 부분의 오류 검사는 상위 계층(TCP 등)의 역할입니다.

5. 계층적 라우팅의 구체적인 규모와 과제

강의 마지막 부분에서 인터넷 라우팅의 현실적인 어려움을 설명합니다.

  • AS (Autonomous System, 자율 시스템): 인터넷은 KT, SKT와 같은 거대한 'AS'들의 집합으로 이루어져 있다는 개념.
  • 구체적인 규모 (2017년 기준):
    • AS의 개수: 약 6만 개
    • 전체 네트워크의 개수: 약 80만 개
  • 이 규모가 만드는 두 가지 문제:
    1. 라우팅 복잡도: 6만 개의 AS 중에서 최적 경로를 찾는 것은 너무 복잡해서, 실제로는 최적이 아닌 '정책 기반 라우팅'을 사용합니다.
    2. 라우팅 테이블 크기: 인터넷 핵심 라우터는 80만 줄이 넘는 거대한 라우팅 테이블을 가져야 합니다. 모든 패킷이 들어올 때마다 이 테이블을 초고속으로 검색해야 하므로, 일반적인 소프트웨어 방식으로는 불가능하고 하드웨어 기반의 병렬 검색이 필요합니다.

 

 

 

1. AS (자율 시스템)와 계층적 라우팅

강의에서 인터넷이 너무 거대해서 단일 라우팅 알고리즘을 적용할 수 없다고 했습니다. 그 해결책이 바로 계층적 라우팅이며, 그 최상위 계층의 단위가 **AS (Autonomous System, 자율 시스템)**입니다.

  • AS란 무엇인가?
    • 쉽게 말해, 하나의 관리 정책 아래에서 운영되는 거대한 네트워크 덩어리입니다.
    • 예를 들어 KT, SKT, Google, 혹은 대학교 전산망 같은 것들이 각각 하나의 AS가 될 수 있습니다.
  • 왜 AS 단위로 나누는가?
    • 전 세계 수억 개의 컴퓨터를 하나하나 찾아가는 것은 불가능합니다.
    • 대신, "일단 목적지 컴퓨터가 속한 AS(예: Google네트워크)까지만 찾아가자!" 라는 식으로 문제를 단순화하는 것입니다.
    • AS 간의 길찾기(Inter-AS Routing)와 AS 내부에서의 길찾기(Intra-AS Routing)로 문제를 분리하여 해결합니다. 이것이 바로 계층적 라우팅의 핵심입니다.

2. 동적 라우팅의 문제점: '정보의 시차'와 '루프'

강의에서 동적 라우팅이 왜 완벽하지 않은지에 대해 중요한 지적을 했습니다.

  • 문제의 원인: 정보 수집의 시차
    • 동적 라우팅은 주변 라우터들과 정보를 교환하며 최적 경로를 찾아냅니다.
    • 하지만 이 정보가 네트워크 전체에 퍼지는 데에는 시간이 걸립니다. 즉, 라우터 A가 가진 지도와 라우터 B가 가진 지도가 일시적으로 다를 수 있습니다.
  • 결과: 라우팅 루프 (Routing Loop) 발생 가능성
    • 이 '정보의 시차' 때문에 최악의 경우 루프가 생길 수 있습니다. 예를 들어,
      1. 라우터 A는 "X로 가려면 B를 거쳐가는 게 최적"이라고 생각합니다.
      2. 동시에 라우터 B는 방금 다른 경로가 끊겼다는 정보를 받고, "X로 가려면 A를 거쳐가는 게 최적"이라고 자신의 테이블을 갱신합니다.
      3. 이 상태에서 패킷이 A에 도착하면 B로 보내고, B는 다시 A로 보내는 무한 핑퐁 상태, 즉 루프에 빠지게 됩니다.
  • 해결책 (안전장치): 이것이 바로 IP 헤더의 TTL (Time To Live) 필드가 존재하는 이유입니다. 패킷이 루프에 빠져 무한히 돌지 않도록, 라우터를 하나 지날 때마다 TTL 값을 1씩 감소시켜 0이 되면 패킷을 강제로 폐기합니다.

3. 정적 라우팅 vs. 동적 라우팅: 언제 정적 라우팅을 쓰는가?

강의에서 설명한 것처럼, **"선택권이 없을 때"**는 정적 라우팅이 훨씬 효율적입니다.

  • 핵심 원리: 라우팅의 본질은 '여러 갈래 길 중에서 최적의 길을 선택'하는 것입니다.
  • 일반 PC (End Node)의 경우:
    • 우리가 집이나 학교에서 쓰는 컴퓨터는 외부 인터넷으로 나가는 길이 단 하나뿐입니다. (집에서는 공유기, 학교에서는 전산실 라우터)
    • 네이버로 가든, 구글로 가든, 무조건 그 **하나의 문(라우터)**을 통해서만 나가야 합니다. 선택의 여지가 없습니다.
    • 이런 상황에서 굳이 주변 라우터와 정보를 교환하는 복잡한 동적 라우팅 프로토콜을 실행하는 것은 컴퓨터 자원의 낭비일 뿐입니다.
  • 해결책: 정적 라우팅 (Static Routing)
    • 컴퓨터에 **"모든 외부행 패킷은 무조건 OOO 라우터로 보내라"**는 규칙 한 줄만 수동으로 설정해 주면 끝입니다. 이것이 바로 정적 라우팅(Default Gateway 설정)이며, 훨씬 가볍고 효율적입니다.

4. IP 헤더의 'Protocol' 필드: 데이터의 최종 목적지

IP 계층까지 패킷이 무사히 도착하면, IP 헤더와 데이터(페이로드)를 분리합니다. 이때 운영체제는 "이 데이터를 도대체 누구에게 줘야 하지?" 라는 문제에 부딪힙니다.

  • 역할: 'Protocol' 필드는 바로 이 질문에 대한 답입니다. 이 필드에 쓰여있는 번호를 보고 데이터의 최종 주인을 찾아줍니다.
    • 값이 6이면: "아, 이 데이터는 TCP 담당이구나. 웹 브라우저나 파일 전송 프로그램에게 넘겨주자."
    • 값이 17이면: "이건 UDP 담당이네. DNS 조회나 실시간 스트리밍 프로그램에게 주자."
  • 즉, 송신자가 IP 헤더의 'Protocol' 필드에 '이 데이터는 TCP용입니다'라고 명시해 줘야, 수신자 컴퓨터가 데이터를 올바른 상위 계층 프로그램으로 전달할 수 있습니다.

5. IP 단편화(Fragmentation) 심화 내용

5-1. 단편화를 피해야 하는 이유와 현실적인 해결책 (TCP의 역할)

  • 부담스러운 이유: 강의에서 강조했듯이, **재조립(Reassembly)**은 수신자에게 상당한 부담입니다.
    • 모든 조각이 도착할 때까지 메모리에 조각들을 저장하고 있어야 합니다.
    • 만약 조각 하나가 중간에 유실되면, 타이머가 만료될 때까지 기다리다가 모아둔 조각을 모두 버려야 합니다. 이는 큰 자원 낭비입니다.
  • 단편화를 피하는 이상적인 방법: 출발지에서 목적지까지의 경로 전체를 보고, 그 경로에 있는 링크들 중 가장 작은 MTU(최대 전송 단위) 값을 알아내서 그 크기에 맞게 패킷을 만드는 것입니다. (이를 'Path MTU Discovery'라고 합니다.)
  • 현실적인 문제: 강의 내용처럼, 동적 라우팅 환경에서는 경로가 언제든 바뀔 수 있으므로 경로상의 최소 MTU를 미리 아는 것은 거의 불가능합니다.
  • 현실적인 해결책 (TCP의 영리함):
    • TCP는 연결을 설정하는 과정(3-way handshake)에서 서로의 **MSS(Maximum Segment Size, 최대 세그먼트 크기)**를 교환합니다.
    • 이때 보통 양 끝단의 링크가 이더넷(MTU 1500)인 것을 감안하여, TCP는 "IP 헤더(20)와 TCP 헤더(20)를 붙여도 1500을 넘지 않을" 크기(보통 1460바이트)로 데이터 조각(세그먼트)을 만듭니다.
    • 따라서 TCP를 사용하는 경우, 애초에 1500바이트를 넘는 IP 패킷이 거의 만들어지지 않아 중간에 쪼개질 일도 거의 없어집니다.

5-2. Fragment Offset 필드의 비밀: '8의 배수' 규칙

강의에서 설명한 이 부분은 필드 크기의 한계를 극복하기 위한 매우 영리한 방법입니다.

  1. 문제: IP 패킷 데이터의 위치는 최대 65535바이트까지 표현해야 하므로 16비트가 필요합니다. 하지만 Fragment Offset 필드는 다른 플래그들 때문에 13비트밖에 없습니다. 3비트가 부족합니다.
  2. 제약 조건 (규칙 만들기): 이 문제를 해결하기 위해 프로토콜 설계자들은 규칙을 만들었습니다. "IP 데이터를 쪼갤 때는 아무 데서나 쪼개지 말고, 반드시 8바이트의 배수가 되는 위치에서만 쪼개라"
  3. 결과: 이 규칙 덕분에, 모든 조각의 시작 위치(Offset)는 항상 8의 배수(0, 8, 16, 24...)가 됩니다.
  4. 아이디어 (꼼수): "어차피 항상 8의 배수니까, 굳이 실제 위치 값을 저장할 필요가 있을까? 실제 위치 값을 8로 나눈 값을 저장하자!"
    • 예시: 실제 위치가 1480바이트라면, 1480 / 8 = 185 이므로 필드에는 185를 저장합니다. 실제 위치 2960은 2960 / 8 = 370 이므로 370을 저장합니다. 이렇게 하면 더 작은 숫자를 저장할 수 있어 13비트 필드 안에 충분히 표현이 가능해집니다.
  5. 재조립: 수신자는 Offset 필드에서 185라는 값을 읽고, "아, 이건 8로 나눈 값이니까 실제 위치는 185 * 8 = 1480 이겠구나" 라고 역으로 계산하여 정확한 위치에 조각을 끼워 넣습니다.

 

 

 

 

 

 

 

 

 

  • 라우터의 핵심 역할은 서로 다른 네트워크들을 연결하고, 그 사이에서 길을 찾아주는(라우팅) 것입니다.
  • 내 컴퓨터가 속한 '우리 집 네트워크(LAN)'와 '인터넷(WAN)'이라는 두 개의 다른 세상을 연결하는 문지기 역할을 합니다. 이 문지기를 기술 용어로 **'기본 게이트웨이(Default Gateway)'**라고 부릅니다.

 

  1. 내 컴퓨터는 네이버로 가는 전체 경로를 알지 못합니다. 아는 것은 단 하나, **"네이버는 우리 집 네트워크 안에 없다"**는 사실뿐입니다.
  2. 따라서 내 컴퓨터는 생각합니다. "내가 모르는 곳으로 가는 모든 우편물은 일단 우리 집 **대문(기본 게이트웨이)**에 맡기면 되겠구나. 그러면 대문 밖의 우체부(다른 라우터들)들이 알아서 배달해 주겠지."
  3. 그래서 모든 외부행 패킷을 자신에게 연결된 단 하나의 라우터에게 전달합니다.

 

 

 

 

 

 

해결책: 두 팀이 소통할 수 있도록 중간에 '문(라우터)'을 만들어줘야 합니다.

  • '기획팀' 전용 문 (라우터 포트 1번)
  • '개발팀' 전용 문 (라우터 포트 2번)

진짜 문제: 만약 우리 회사에 팀이 20개라면? 팀마다 문을 하나씩 만들어주려면 라우터에 문(포트)이 20개나 필요합니다. 비싼 라우터의 포트를 이렇게 다 써버리는 것은 너무 비효율적이고 돈 낭비입니다.

바로 이 **"라우터 포트 부족 문제"**를 해결하기 위해 등장한 두 가지 기술이 바로 라우터 온 어 스틱 L3 스위치입니다.

서로다른 네트워크인거니깐 

 

 

 

 

 

 

 

해결책 1: 라우터 온 어 스틱 (Router on a Stick)

강의 핵심: "라우터의 물리적인 포트는 하나지만, OS를 속여서 마치 여러 개의 포트가 있는 것처럼 착각하게 만드는 방식"

  • 쉬운 비유: "하나의 문에 여러 팀의 이름표를 붙이는 스마트 도어"
    • 개념: 비싼 문(라우터 포트)을 여러 개 다는 대신, 물리적인 문은 딱 하나만 만듭니다. 그리고 그 문을 아주 똑똑한 **'스마트 도어'**로 만듭니다.
    • 동작 방식:
      1. 기획팀 직원이 이 문으로 나가면서 "저 기획팀입니다!" 라는 출입증(802.1Q 태그)을 보여줍니다.
      2. 스마트 도어(라우터)는 출입증을 보고 "아, 기획팀이구나"라고 인식하고, 개발팀으로 가는 길을 알려줍니다.
      3. 다시 이 문으로 들어올 때, 스마트 도어는 "이 자료는 개발팀으로 가는 겁니다!" 라는 표시를 붙여서 들여보내 줍니다.
    • 기술 요약: 라우터의 물리적인 포트 1개를 소프트웨어적으로 **논리적인 가상 포트 여러 개(Sub-interface)**로 쪼개서 사용하는 기술입니다. 각 가상 포트가 하나의 VLAN을 담당하는 문 역할을 합니다. '스틱에 꽂힌 막대사탕처럼 하나의 포트에 여러 기능이 달렸다'고 해서 이런 이름이 붙었습니다.

해결책 2: L3 스위치 (Layer 3 Switch)

강의 핵심: "(스위치와 라우터를) 전체 하나의 패키지로 만들어버리는 겁니다... 하나의 장비 속에 들어있는 내부적인 포트라서 저렴하게 많이 만들 수 있습니다."

    • 쉬운 비유: "팀 분할과 길 안내 기능이 합쳐진 올인원(All-in-One) 사무용 기기"
      • 개념: "애초에 팀 나누는 장비(스위치)랑 문 역할을 하는 장비(라우터)를 따로 살 필요가 있나? 그냥 두 기능을 합친 장비 하나를 사자!" 이것이 L3 스위치의 핵심입니다.
      • 동작 방식:
        1. L3 스위치는 기본적으로 팀을 나눠주는 스위치 역할을 합니다.
        2. 그런데 기획팀에서 개발팀으로 가야 하는 데이터가 발생하면, 이 데이터가 장비 밖으로 나갔다가 다시 들어올 필요가 없습니다.
        3. L3 스위치 **내부에 있는 보이지 않는 초고속 통로(라우팅 엔진)**를 통해 즉시 개발팀 쪽으로 데이터가 전달됩니다.
      • 기술 요약: 2계층 장비인 스위치와 3계층 장비인 라우터의 기능을 하나의 하드웨어 장비로 통합한 것입니다. VLAN 간의 통신이 장비 내부에서 매우 빠른 속도로 처리되므로 '라우터 온 어 스틱' 방식보다 훨씬 성능이 좋습니다.

 

 

 

 

 

(Vertex, 엣지 단어, 엣지가 모서리라서 이데 노드인줄

 

 

1. 일상생활에서의 '모서리' → "뾰족한 지점" (점의 개념)

우리가 평상시에 "모서리"라는 단어를 쓸 때를 생각해 봅시다.

"뛰다가 책상 모서리에 부딪혀서 멍들었어."

 

 

 

 

'25년2학기 > 컴퓨터 네트워크' 카테고리의 다른 글

컴넷) (11.12)  (0) 2025.11.12
컴넷) (11.08)  (0) 2025.11.08
컴넷) 강의 (11.01)  (0) 2025.11.01
컴넷) 10.29  (0) 2025.10.29
컴넷)시험대비(10.12)  (0) 2025.10.21