반응형

돌아온 혼공단 시간입니다.
13기 혼공네트도 벌써 3주 차예요
시간 진짜 빠르다 빨라...
나 이번 한 주 동안 뭐 했지? 하...

아무튼 혼자 공부하는 네트워크 3주 차에 할 일은요
세 번째 챕터인 네트워크 계층을 공부하고

<목차>
Chapter 1. 컴퓨터 네트워크 시작하기
Chapter 2. 물리 계층과 데이터 링크 계층
Chapter 3. 네트워크 계층
Chapter 4. 전송 계층
Chapter 5. 응용 계층
Chapter 6. 실습으로 복습하는 네트워크
Chapter 7. 네트워크 심화

혼공단 숙제로 내 컴퓨터의 IP와 MAC 주소를 알아보는 거라죠

제 혼공단의 목적은 뇌리에 뭐라도 남기기라서요
본격적으로 공부하기에 앞서 이전 계층부터 복습하고 갑니다요

계층명 지난 주 핵심 다 합쳐서 복습하기
데이터 링크 계층 NIC
스위치(전이중 통신+VLAN)
- 네트워크 내 주변장치 간 정보를 올바르게 주고받기 위한 계층
- MAC 주소 체계를 통해 네트워크 내 송수신지를 특정
- 물리적으로 연결된 인접한 개방 시스템들 간 신뢰/효율적 정보 전송을 위해 시스템 간 연결 설정과 유지 및 종료 담당
- 오류 검출 및 회복을 위한 오류 제어, 송수신측 속도 차이 해결을 위한 흐름 제어, 프레임 순서적 전송을 위한 순서 제어 기능을 가짐
- 전송 단위인 프레임에 물리적 주소를 부여함
- 장비로는 랜카드, 브리지, 스위치 
- 관련 프로토콜로는 HDLC, LAPB, LLC, MAC, LAPD, PPP, 이더넷 등

- 스위치는 전이중 통신을 한다. MAC 주소 학습과 테이블을 이용해, 특정 MAC 주소를 가진 호스트에만 프레임을 전달할 수 있다. MAC 주소 학습은 플러딩, 포워딩과 필터링, 에이징을 통해 이루어진다.
- 스위치는 또한 가상의 LAN을 만드는 VLAN 기능을 지원한다. 
물리 계층 트위스티드 페어 케이블
광섬유 케이블
허브(반이중 통신+CSMA/CD)
- OSI 모델 최하단 계층
- 0과 1로 표현되는 비트 신호를 주고 받음 (전송단위가 Bit)
- 통신 케이블로 데이터를 전송하는 물리적 장비에 필요한 기계/전기/기능/절차적 특성에 대한 규칙을 정의
- 장비로는 통신 케이블, 리피터, 허브 
- 관련 프로토콜로는 RS-232C, X.21 등

- 허브는 반이중 통신을 해서 무전기처럼 송수신을 번갈아 가면서 한다.
다른 호스트가 기다리지 않고 신호를 보낼시 충돌 위험이 있는데 이를 방지하는 프로토콜이 CSMA/CD이다. Carrier Sense(캐리어를 감지하고) Multiple Access(다중 접근시에) Collision Detection(충돌을 검출)한다.

그런데! 이 두 계층은 두 가지 한계가 있대요.
첫째, 물리 계층과 데이터링크 계층만으로는 다른 네트워크까지 도달 경로 파악하기가 어렵다. 물리와 데이터 링크 계층은 LAN을 다루는 계층이라 LAN에 속한 호스트들끼리의 통신을 도맡아 처리해요. 하지만 LAN을 넘어서는 통신이 필요하다면? 이 때는 패킷을 송수신하는 역할이 필요한데, 그건 네트워크 계층에서 해야 할 일이에요. 그렇담 다른 말로는 네트워크 계층은 다른 네트워크까지 도달 경로를 파악할 수 있다는 거겠죠?
둘째, MAC 주소만으로는 모든 네트워크에 속한 호스트의 위치 특정하기가 어렵다. 일단 모든 호스트가 모든 네트워크에 속한 모든 호스트의 MAC 주소를 다 알고 있기란 현실적으로 어려워요. 게다가 MAC 주소는 택배로 치면 받는 사람의 개인정보예요. 개인정보만 안다고 택배를 보낼 수는 없어요. 택배를 수신할 장소의 주소도 필요하죠. 그 수신지 역할을 하는 정보를 가지고 있는 게 네트워크 계층의 IP 주소입니다.

그럼 본격적으로 네트워크 계층을 공부해 볼게요! 가보자고! 👊

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

IP는 통신망에서 패킷이 목적지까지 도달할 수 있도록 데이터그램을 기반으로 비신뢰성, 비연결성 서비스를 제공한다.
IP 단편화(패킷의 분해 및 조립), IP 주소 지정, 경로 선택  기능을 가진다.
IP 단편화(IP fragmentation)는 전송하고자 하는 패킷의 크기가 MTU보다 클 경우, 이를 MTU 크기 이하의 여러 패킷으로 나누는 걸 말한다. 여기서 MTU는 Maximum Transmission Unit의 약자로, 한 번에 전송가능한 IP 패킷의 최대 크기를 의미한다. 최대 전송 단위인 셈. 일반적으로 MTU 크기는 1500바이트이다.
IP 주소 지정(IP addressing)은 IP 주소를 바탕으로 송수신 대상을 지정한다.

IP 주소는 4바이트(32비트)로 표현할 수 있고, 숫자당 8비트로 표현되어 0~255 범위 안에 있는 네 개의 10진수로 표기할 수 있다.
각 10진수는 점(.)으로 구분하고, 이렇게 점으로 구분한 8비트를 옥텟 Octet 이라고 한다.
192.168.1.1 과 같은 형태로 나타내는데, 이런 형태는 보통 IPv4에서 사용하는 IP 주소다.

# IPv4

데이터 링크 계층의 이더넷 프레임에 있는 데이터 필드에는 상위 계층에서 전달받거나 전달해야 할 내용이 명시된다.
그래서 IPv4 패킷은 프레임의 페이로드로 데이터 필드에 명시된다.

이더넷 프레임 헤더 페이로드 트레일러
프리앰블 수신지 MAC 주소 송신지 MAC 주소 타입/길이 데이터 FCS

저 페이로드 부분을 확대하면, 이렇게 IPv4 패킷 헤더와 IPv4 패킷 페이로드로 나눠진다.

IPv4 패킷 헤더 페이로드
버전 헤더길이 서비스
유형
패킷
길이
식별자 플래그 단편화
오프셋
TTL 프로토콜 헤더
체크섬
송신지
IP주소
수신지
IP주소
옵션 패딩 데이터

꽤나 뭐가 많은데, 이걸 조금 다시 정리해서 예쁘게 그려보면 이렇대요.
이 중에서 식별자, 플래그, 단편화 오프셋은 IP 단편화 및 재조합 기능과, 송수신지 IP 주소는 IP 주소 지정 기능과 관련이 있어요.

0 4 8 12 16 20 24 28 32
IPv4
패킷 헤더
버전 (4) 헤더길이
(가변)
서비스 유형 패킷 전체 길이
(2^16 -1 = 65,535 바이트가 최대 크기)
식별자 플래그 단편화 오프셋
TTL 프로토콜 헤더 체크섬 (헤더 오류 발생 검사)
송신지 IP 주소
수신지 IP 주소
옵션(필요시)
패딩(필요시)
페이로드 데이터 ...

1) 식별자 Identifier : 패킷에 할당된 번호. 패킷이 단편화되어 전송되었다면, 잘게 쪼개진 패킷이 어떤 메시지에서 나온 것인지 인식하기 위해 사용. 말하자면 내 패킷의 출처는 이 메시지야 정도 되겠네

2) 플래그 flag : 세 개의 비트로 구성.
- 0 (미사용)
- DF = 단편화 수행하지 말라 = Don't fragment = 0으로 설정 시 단편화 가능
- MF = 단편화된 패킷이 더 있다 = More fragment = 0이면 이 패킷이 마지막을 뜻함

3) 단편화 오프셋 : 패킷이 단편화되기 전 패킷의 초기 데이터에서 몇 번째로 떨어진 패킷인지 나타냄. 단편화 후 전송되는 패킷들은 순서대로 도착하지 않기에 순서대로 재조합을 위해 필요함

4) TTL Time to Live : 패킷의 수명. 무의미한 패킷이 구천을 떠도는 유령마냥 네트워크상에 지속적으로 남아 있는 것을 방지하는 용도다.
라우터 또는 호스트를 거치는 홉(hop)마다 TTL은 하나씩 감소하고 0이 되면 폐기된다.

5) 프로토콜 : 상위 계층의 프로토콜이 무엇인지 나타내는 필드 (전송 계층의 TCP는 6, UDP는 17, ICMP 등)

6&7) 송/수신지 IP 주소

이론적으로 할당 가능한 IPv4는 2^32개로 약 43억 개
글로벌 지구촌 세상에는 한참 부족한 숫자
(24년 3월 기준 세계 인구 81억 명)
주소 고갈을 우려해 새롭게 내놓은 것이 바로 IPv6다.

# IPv6

IPv6는 16바이트(128비트)로 주소를 표현하고, 콜론(:)으로 구분한 8개 그룹의 16진수로 표기한다.
이런 식으로 생겼어요. 2001:0230:abcd:ffff:0000:0000:ffff:1111

IPv6 패킷의 기본 헤더 구성은 IPv4에 비해 간단한데요,
IPv4의 헤더 길이, 식별자, 플래그, 분할 오프셋, 헤더 체크셈 같은 5개 필드가 제거되었기 때문이에요. 표로 살펴보면,

0 4 8 12 16 20 24 28 32
헤더 버전 (6) 트래픽 클래스 흐름 라벨 (경로 정보로 라우팅 생략 가능 = 속도 빠름)
페이로드 길이
(= 확장 헤더 + 데이터 필드 / 최대 65,535 바이트)
다음 헤더 홉 제한
송신지 IP 주소(128비트)
수신지 IP 주소(128비트)
페이로드 데이터 ...

1) 다음 헤더 : 상위 계층의 프로토콜을 가리키거나 확장 헤더를 가리킴.
지금 보고 있는 표는 IPv6의 기본 헤더만 표현한 것인데요. 기본 헤더는 40Byte로 고정!
다만 IPv6는 추가적인 헤더 정보가 필요할 경우에는, 기본 헤더와 페이로드 데이터 사이에 확장 헤더라는 추가 헤더를 끼워 넣는다.

출처 : 혼공네트 유튜브 강의 내 장표 캡쳐함

대표적인 확장 헤더 종류는 1) 송수신지에 이르는 모든 경로의 네트워크 장비가 패킷을 검사토록 하는 홉 간 옵션, 2) 수신지에서만 패킷을 검사하게 하는 수신지 옵션, 3) 라우팅 관련 정보를 운반하는 라우팅, 4) 단편화를 위한 단편화, 5) 암호화와 인증을 위한 ESP, AH 확장 헤더 등이 있다. 

2) 홉 제한 : 패킷의 수명을 나타내는 필드로 IPv4의 TTL 필드와 유사

3&4) 송수신지 IP 주소

다음 주제로 넘어가기 전에 IPv4와 IPv6를 비교 정리 해보자
왜 하냐구요? 시험에 심심찮게 나와요^^ (필기 집착 광공)

  IPv4 IPv6
주소 형태 192.168.1.1 2001:0230:abcd:ffff:0000:0000:ffff:1111
주소 특징 4바이트 = 32비트
점(.)으로 구분
8비트 4개 그룹, 10진수로 표기

클래스 단위로 비순차적 할당(비효율)
16바이트 = 128비트
콜론(:)으로 구분
16비트 8개 그룹, 16진수로 표기

네트워크, 단말 순서로 순차적 할당(효율적)
할당 가능한 개수 2^32 = 4,294,967,296
(43억개)
2^128 = 3.403×10³⁸
(거의 무한...?)
달라진 점 헤더 크기는 가변(약 20바이트) 헤더 크기는 고정(40 바이트)
IPv4 대비 5개 필드가 사라짐
기타 특징 보안 없음(IPsec 별도 설치해야)

패킷 크기에 제한(64 바이트)

유니캐스트, 브로드캐스트, 멀티캐스트(옵션)
인증 및 보안 기능을 포함, 네트워크 기능 확장 용이
(>> 모두 확장 헤더를 사용하기에 가능한듯)

패킷 크기에 제한 없음

유니캐스트, 멀티캐스트, 애니캐스트 3가지 방식의 주소 체계를 사용

근데 두 가지 주소 체계가 다른데 어떻게 공존할 수 있나요?
변환 방식이 여러 개가 있대요

더보기
듀얼 스택(Dual Stack) IPv6 호스트/라우터들은 IPv6 전용이거나, IPv4와 IPv6를 모두 사용할 수 있는 이중 스택 구조를 가짐
이중 스택 시스템은 통신 상대방에 따라 두 가지 프로토콜 중 적절한 IP 프로토콜을 선택하여 사용함
터널링(Tunneling) 특정 프로토콜을 사용하는 네트워크 사이에 다른 프로토콜을 사용하는 네트워크가 존재할 때,
중간 네트워크에서 사용하는 프로토콜로 캡슐화하여 전송하는 방법
IPv6 >> (캡슐화) >> IPv4 >> (역캡슐화) >> IPv6
헤더 변환
(Header Conversion)
IPv4와 IPv6 게이트웨이에서 서로 간의 헤더 형식을 변환해주는 방법
헤더 변환은IP 계층에서 변환을 의미하며, SIIT(Stateless IP/ICMP Translation)에서 정의
다른 방식에 비해 속도가 빠르다는 장점이 있으나, 응용 프로토콜에 내장된 IP 계층 주소 변환의 어려움, IPv6 헤더 길이가 더 길어서 생기는 단편화 등의 어려움 존재
전송 계층 릴레이 방식 TCP/UDP의 IPv4 세션과 TCP/UDP의 IPv6 세션을 중간에서 릴레이
릴레이 서버에 TCP 요청이 도착 >> 네트워크 계층은 수신지 주소가 아니어도 TCP 요청을 TCP 계층으로 전송 >> 서버는 TCP 패킷을 전송받아 송신지 호스트와 TCP를 연결하고, 릴레이 서버는 실제 수신지로 TCP 연결을 하나 더 생성 (결국 연결 은2개 - 하나는 데이터를 읽고, 다른 하나의 연결에 기록)
전송 계층 정보만 변환하기에 응용 계층 데이터의 세부 정보는 다룰 수 없음
TRT와 SOCKS 게이트웨이 방식이 대표적
응용 계층 게이트웨이 방식 변환 서비스를 위한 ALG(Application Level Gateway, 응용 수준 게이트웨이) 활용
각 서비스는 IPv4와 IPv6에 밀폐되어 있어 응용 프로토콜에 내장된 주소 변환에 용이
IPv4/IPv6 웹 프록시인 SQUID가 대표적

전송 계층 릴레이와 응용 계층 게이트웨이는 뭔 소린지 그림 봐도 잘 모르겠어요
챗지피티랑 같이 추가 학습해서 별도로 포스팅해볼게요(도전)

출처 : 네이버 블로그 별의수다님

근데 IP 주소만 알고 MAC 주소는 모르면 어떠카조? 🧐

#ARP = IP를 MAC으로 변환

ARP(Address Resolution Protocol)은 "동일 내트워크 내에서" IP 주소를 통해 MAC 주소를 알아내는 프로토콜이다.
ARP의 동작 과정은 요청, 응답, 테이블 갱신으로 구성된다.

- ARP 요청
네트워크 내 모든 호스트에게 ARP Request 메시지를 브로드캐스트
호스트 가 : "나 10.0.0.1 이랑 통신해야 하는데 MAC 주소 아시는 분 괌(광역📢)"

- ARP 응답
네트워크 내 모든 호스트가 요청 메시지를 수신한다.
해당하는 호스트는 자신의 MAC 주소를 담은 메시지를 호스트 가에게 유니캐스트
호스트 다 : "님 그거 나임. 내 MAC 주소는 ----임."
나머지 호스트는 요청 메세지를 무시한다

- ARP 테이블 갱신
ARP를 활용할 수 있는 모든 호스트는 ARP 테이블이라는 정보를 유지함
호스트 가는 호스트 다의 MAC 주소를 알게 되면 다음 그림처럼 IP-MAC 주소를 연결하여 ARP 테이블에 추가한다.

출처 : 혼공네트 유튜브 강의 내 장표 캡쳐함

반대로 MAC 주소만 알고 IP 주소를 모를 때는 반대로 RARP 프로토콜을 이용하면 된다.
RARP는 디스크처럼 저장장치가 없는 호스트에서 주로 사용한다.

IP주소에 대해 더 자세히

# 하나의 IP 주소는 네트워크 주소와 호스트 주소로 구성

네트워크 주소는 네트워크를 표현하는 부분으로 네트워크 ID, 네트워크 식별자라고도 함
호스트 주소는 호스트를 표현하는 부분으로 호스트 ID, 호스트 식별자라고도 함
네트워크 주소와 호스트 주소를 범위에 따라 한 네트워크를 사용하는 호스트의 수가 결정된다.

# 클래스풀 주소 체계 = A~E 클래스로 고정해서 사용하기

클래스는 네트워크 크기에 따라 IP 주소를 분류하는 기준이다.
클래스를 기반으로 IP 주소를 관리하는 주소 체계를 클래스풀 주소 체계라 한다.
클래스는 A부터 E까지 5개가 있는데, D와 E는 각각 멀티캐스트와 특수 목적을 위해서만 사용한다.
그래서 실제로 네트워크 크기를 나누는 데 사용하는 건 아래와 같이 A, B, C 클래스뿐이다.

출처 : 혼공네트 유튜브 강의 내 장표 캡쳐함

좀 더 구체적으로 정리하자면,

클래스 초기 비트 네트워크/호스트 주소 비트 할당 가능한 네트워크 수
(네트워크 비트 수)
할당 가능한 호스트 수* 표현가능한 주소
A 0 7 + 24 2^7 (128) 2^24-2 (16,777,214)  0.0.0.0 ~ 127.255.255.255
B 10 14 + 16 2^14 (16,384) 2^16-2 (65,534) 128.0.0.0 ~ 191.255.255.255
C 110 21 + 8 2^21 (2,097,152) 2^8-2 (254) 192.0.0.0 ~ 223.255.255.255
D 1110 멀티캐스팅 28     224.0.0.0 ~ 239.255.255.255
E 1111 특수 목적 28     240.0.0.0 ~ 255.255.255.255

상기 표에서 할당 가능한 호스트 수를 보면 모두 빼기 2를 하고 있는 모습을 볼 수 있는데요.
호스트 주소가 모두 0인 IP 주소는 해당 네트워크 자체를 의미하는 네트워크 주소로,
호스트 주소가 모두 1인 IP 주소는 브로드캐스트 전용 주소로 사용하고 있기 때문이라죠.

출처 : 혼공네트 유튜브 강의 내 장표 캡쳐함

근데 클래스풀 주소는 네트워크 크기가 고정이라는 한계가 있다.
만약 우리 회사가 255개 호스트만 필요하다면
클래스 B 체계를 택할 수밖에 없는데
그러면 6만 5천 개가량은 미사용으로 낭비되는 셈
그래서 나온 게 조금 더 유동적으로 주소를 관리하는 방법이다.

# 클래스리스 주소 체계 ⭐️ IP 주소와 서브넷 마스크를 비트 AND = 네트워크 주소

클래스리스 주소 체계에서 IP 주소를 네트워크 주소와 호스트 주소로 나누는 임의의 지점은 서브넷 마스크라고 한다.
서브넷 마스크는 IP 주소 상에서 네트워크 주소는 1, 호스트 주소는 0으로 표기한 비트열을 의미한다

서브넷 마스크를 활용해 클래스를 원하는 크기로 나누어 사용하는 기법은 서브네팅 Subnetting 이라고 한다.
서브네팅은 비트 AND 연산을 사용한다. 피연산자가 모두 1인 경우에는 1, 아니면 0이 되는 연산이다.
IP 주소와 서브넷 마스크를 비트 AND 연산하면 네트워크 주소가 나온다.

  10진수 2진수
IP 주소 192.168.219.103 11000000.10101000.11011011.01100111
서브넷 마스크 255.255.255.0 11111111.11111111.11111111.00000000

이 둘을 비트 AND 연산하면,

  8비트 8비트 8비트 8비트
IP 주소 11000000 10101000 11011011 01100111
서브넷 마스크 11111111 11111111 11111111 00000000
비트 AND 연산값
= 네트워크 주소
11000000 10101000 11011011 00000000
10진수로 변환 192 168 219 0

이렇게 해서 네트워크 주소는 192.168.219.0 이 된다.
사용된 서브넷 마스크에서 호스트 주소인 0이 8개이므로, 호스트 주소는 8비트로 표현 가능하다.
그럼 2^8이라 256개 호스트인데, 예약 주소인 네트워크 주소와 브로드 캐스트 주소를 제외하면
192.168.219.1 에서 192.168.219.254 까지가 사용 가능한 호스트의 범위가 된다.

계속해서 서브넷 마스크를 표기하는 방법은 크게 2가지가 있다.
- 서브넷 마스크를 10진수로 직접 표기 LIKE 255.255.255.0
- IP 주소 / 서브넷 마스크상의 1의 개수 형식으로 표기하는 CIDR 표기법 LIKE 192.168.219.103/24

CIDR 표기법으로 하면 슬래시 앞 쪽은 IP 주소이고, 뒤는 서브넷 마스크에서 네트워크 주소인 1의 개수이다.
결국 해석해 보자면 IP 주소는 192.168.219.103이고, 서브넷 마스크는 1 24개에 0 하나로 표현할 수 있다.

이 계산법과 표기법은 정처기며 여기저기 문제로 자주 나오니까 꼭 알아야 한다죠
그래서 제목에 별도 달아놨다.

# 공인 IP와 사설 IP 주소, 그리고 NAT

공인 IP 주소는 전 세계에서 고유한 IP 주소이다. 주로 인터넷 이용 시에 사용된다.
반대로 사설 IP 주소는 사설 네트워크에서 사용하기 위한 주소이다. 회사, 학교와 같이 한정된 공간에서 사용하는, 외부 네트워크에는 공개되지 않은 네트워크에서 사용하는 주소들이다. IP 주소 공간 중에는 사설 IP 주소로 사용하기로 약속한 주소들이 있는데,

- 10.0.0.0/8         >> (10.0.0.0 ~ 10.255.255.255)
- 172.16.0.0/12    >> (172.16.0.0 ~ 172.31.255.255)
- 192.168.0.0/16 >> (192.168.0.0 ~ 192.168.255.255)

이런 사설 IP 주소는 해당 호스트가 속한 사설 네트워크 상에서만 유효하다.
다른 사설 네트워크에 가면 똑같은 주소를 사용하는 다른 호스트가 또 있을 수도 있다.
그래서 이 사설 IP 주소만으로는 외부 네트워크와의 통신이 어렵다. 이럴 때 사용하는 기술이,
공인 IP와 사설 IP 주소를 상호 변환해 주는 NAT(Network Address Translation) 이다.
대부분의 라우터와 (가정용) 공유기에는 NAT 기능이 내장되어 있다.

출처 : 혼공네트 유튜브 강의 내 장표 캡쳐함

# 정적 IP와 동적 IP 주소, 호스트에 IP 주소를 할당하는 방법

호스트에 직접 수작업으로 IP를 부여하는 방식을 정적 할당이라고 하고, 이렇게 할당된 주소를 정적 IP 주소라고 한다.
호스트 수가 많아지면 관리가 점점 어려워진다는 단점이 있는데, 이럴 때는

호스트에 IP 주소가 동적으로 할당되는 동적 할당 방식이 있다. 이렇게 할당된 주소를 동적 IP 주소라고 한다.
동적 IP 주소는 사용하지 않으면 회수되고, 할당받을 때마다 다른 주소를 받을 수도 있다.

# 동적 할당과 DHCP(동적 호스트 구성 프로토콜)

DHCP(Dynamic Host Configuration Protocol)는 네트워크 안의 호스트에게 IP를 동적으로 할당하는 대표적인 프로토콜이다.
호스트 IP 뿐만 아니라 DNS 서버 주소와 서브넷 마스크 주소까지 할당한다. DHCP는 OSI 7계층 응용 계층에 속한다.
책에 보니 DHCP는 IPv4/IPv6 중 어느 것을 할당하냐에 따라 DHCPv4와 DHCPv6로 나뉜다고 한다.
중요한 내용은 전혀 아닌데 지금껏 공부하면서 처음 알았서요 신기해

암튼 DHCP 할당 동작은 DISCOVER, OFFER, REQUEST, ACK 4단계로 구성됩니다. 그림으로 보면,

출처 : 한국은행 전공학술 기출 예시문제

- DHCP DISCOVER
클라이언트가 네트워크에 접근하려면 통신을 위해 IP 주소가 필요하다. 하지만 아직 없는 상태
그래서 DHCP DISCOVER 메시지를 보내는데, IP 할당을 위한 DHCP 서버 주소를 모르니까 브로드캐스트 주소로 보낸다.
출발지 IP로 0.0.0.0을 할당하고 목적지 IP에는 255.255.255.255를 할당한다

- DHCP OFFER
DHCP 서버는 IP 풀에서 아직 할당되지 않은 IP를 선정해 패킷을 보낸다.
패킷에는 할당할 IP와 서브넷 마스크, 기본 게이트웨이, IP 주소 대여 시간, DNS 서버 주소 등이 포함된다.
이때도 클라이언트의 IP가 미정이라 모르니까 브로드캐스트 주소로 보낸다.
출발지 IP로 서버 IP를 할당하고 목적지 IP에는 255.255.255.255를 할당한다

- DHCP REQUEST
DHCP OFFER 메시지를 받은 클라이언트는 서버가 보내준 IP를 사용하겠다는 의미로 DHCP REQUEST 메시지를 보낸다
요청 메시지인 이유는 클라이언트가 서버에게 오퍼 받은 IP가 아닌 다른 IP로 요청해서 거부당할 수도 있기 때문이다
또한 IP 할당이 아직 진행 중인 상태라, 클라이언트가 다른 DHCP 서버로부터도 OFFER 메시지를 수신할 수도 있다. 그래서 REQUEST 메시지도 브로드캐스트로 보낸다
출발지 IP로 서버가 할당해 준 IP를 기재하고 목적지 IP에는 255.255.255.255를 할당한다

- DHCP ACK
DHCP 서버는 수신받은 메시지 내에 기록된 IP 주소가 자신이 관리하는 주소인지 확인한 후에,
아직 클라이언트가 IP 주소를 할당받지 못했기 때문에 ACK 메시지를 브로드캐스트로 보낸다
이 메시지가 가야 할당 작업이 완료기에 아직 끝나지 않은 걸로 본다.

ACK 메시지까지 받은 클라이언트는 서버가 보내온 정보를 기반으로 네트워크 환경을 구성하고 인터넷에 접근하게 된다.
IP 주소 사용 기간이 모두 끝나면 원칙적으로는 주소를 반납하고 새로 할당받아 사용해야 한다.
하지만 기간이 만료되기 전에 연장도 가능하다. 이를 임대 갱신이라고 한다.
임대 갱신은 기본적으로 두 차례 자동으로 수행되는데, 두 번 모두 실패하면 그때 IP 주소를 반납한다.

💡기본 게이트웨이 default gateway
>> 호스트가 속한 네트워크 외부로 나가기 위한 기본 경로(첫 번째 홉)
>> 보통 네트워크 외부와 연결된 라우터(공유기)를 의미하는 경우가 많다
>> 목적지의 주소를 알 수 없는 데이터를 송신원 장치를 대신하여 전송하는 기능을 가진다. 특정 목적지로 가는 데이터 패킷이 유입되었는데 목적지를 알지 못한다면, 가장 먼저 기본 게이트웨이로 전달된다. 

더보기

여담인데, 내외부망 구분이나 보안을 중요하게 생각하는 회사에서는 직원들 자리마다 IP 주소가 정해져 있다.
그래서 부서 이동이나 사무실 이전 등으로 인해 자리를 새로 세팅해야 하면 그때부터 무한 기다림의 시간이 시작된다죠.
내 구 회사는 인프라팀에서 방문해서 직원별로 배정된 IP를 윈도우 네트워크 설정 창에 입력해줘야 했다.

출처 : 네이버 블로그 신밧드의모험님

다들 알다시피 그리 어려운 일은 아니지만 우리 팀과 팀원에게 배정된 IP를 알아야만 세팅할 수 있으니 어쩔 수 없었다죠.
간혹 성질 급한 팀원을 만나면,,, 어쩔 수 없이 인프라팀에 전화로 먼저 물어보고 해드리기도 했던 추억...이...^^
이런 거 알면 좋은 점? 한시적 일잘러로 보일 수 있다. 다들 세상과 단절되어 있는데 나만 메신저, 사내망 접속할 수 있다.
반대로 이런 거 알면 나쁜 점? 이런 잡일 담당된다. 남들보다 먼저 일을 시작할 수 있다.
다시 도비 하려고 공부하면서도 도비 하기 싫은 이 감정...🙃

라우팅, 패킷이 이동할 최적의 경로를 찾아 보내기

# 라우터 = 네트워크 계층 대표 장비

라우터는 패킷이 이동할 최적의 경로를 설정하고 그 경로로 패킷을 내보내는 일, 라우팅을 한다.
라우팅 도중 패킷이 호스트와 라우터 간, 라우터와 라우터 간 이동하는 하나의 과정을 홉 hop 이라고 부른다.
패킷은 여러 홉을 거쳐 라우팅 되는 것이다. (홉은 앞서 IPv4의 TTL과도 연관된 개념)

# 라우팅 테이블

라우팅 테이블은 특정 수신지까지 도달하기 위한 정보를 저장하고 관리하는 일종의 표이다.
라우터는 라우팅 테이블을 참고하여 수신지까지의 도달 경로를 판단한다.
라우팅 테이블에 명시되는 대표적인 정보들로는

- 수신지 IP 주소와 서브넷 마스크 : 최종적으로 패킷을 전달할 대상
- 다음 홉 : 최종 수신지까지 가기 위해 다음으로 거쳐야 할 호스트 IP 주소나 인터페이스를 의미. 게이트웨이라고 쓰기도
- 네트워크 인터페이스 : 패킷을 내보낼 통로. 인터페이스 이름을 명시하거나 이에 대응하는 IP 주소를 적기도 함
- 메트릭 metric : 해당 경로로 이동하는데 드는 비용.

라우팅 테이블은 이런 식으로 생겼는데요,

수신지 IP 주소 서브넷 마스크 게이트웨이 인터페이스 메트릭
192.168.2.0 255.255.255.0 192.168.2.1 eth0 30
192.168.0.0 255.255.255.240 192.168.2.2 eth1 30
0.0.0.0 0.0.0.0 192.168.0.1 eth2 30

첫 번째 줄을 해석하자면. 수신지가 192.168.2.0/24, 다시 말해 호스트 IP 주소 범위가 192.168.2.1~192.168.2.254인 패킷은 인터페이스 eth0을 통해 게이트웨이 192.168.2.1로 전송하라는 의미이다.

근데 간혹 라우팅 테이블에 없는 경로로 패킷을 전송해야 하는 상황도 존재한다.
이럴 때 기본적으로 패킷을 내보낼 경로인 디폴트 라우트를 활용하게 된다.
디폴트 라우트는 0.0.0.0/0으로 명시한다. 상기 표에서 세 번째 줄이 바로 디폴트 라우트를 의미한다.
만약 수신지 IP 주소가 1.2.3.4와 같이 라우팅 테이블에 정보가 없는 경우라면, 이 디폴트 라우트를 활용해 인터페이스 eth2를 통해 게이트웨이 192.168.0.1로 전송하게 된다.

# 정적 라우팅과 동적 라우팅

정적 라우팅은 관리자가 수동으로 직접 채워 넣은 라우팅 테이블의 항목을 토대로 하는 고정적인 방식이다.
이런 식으로 라우팅 테이블 항목을 다루는 명령어를 활용한다.

출처 : 혼공네트 유튜브 강의 내 장표 캡쳐함

동적 라우팅
- 네트워크 상황 변화에 따라 인접 라우터 간에 경로 정보를 교환하여 자동으로 경로를 설정
- 라우터 경로 정보가 네트워크 상황에 따라 동적으로 변경되어 중개하는 방식
- 구성이 쉽고, 대상 네트워크에 대한 최상의 경로를 선택하고 검색하는데 효과적 >> 대규모 네트워크에 유리
- 다른 장비들과 지속적인 통신이 필요해 많은 대역폭을 소비함
- 정적 라우팅보다는 상대적으로 보안에 취약

동적 라우팅을 위해 라우터끼리 서로 자신의 정보를 교환하는데, 이때 (동적) 라우팅 프로토콜을 사용한다.

# (동적) 라우팅 프로토콜

라우팅 프로토콜은 라우터끼리 자신들의 정보를 교환하며 패킷이 이동할 최적의 경로를 찾기 위해 사용한다.

라우팅 프로토콜은 크게 AS 내부/외부 중 어디에서 수행되는지에 따라 종류를 나눌 수 있다.
- 내부에서 수행되면 IGP(Interior Gateway Protocol) : RIP와 OSFP
- 외부에서 수행되면 EGP(Exterior Gateway Protocol) : BGP

여기서 AS는 동일한 라우팅 정책으로 운용되는 라우터들의 집단 네트워크인 Autonomous System을 의미한다.
한 회사나 기관, 단체에서 관리하는 라우터 집단을 AS라고 봐도 무방하다.

출처 : 네이버 블로그 printf7님

# 동적 내부 라우팅 IGP = RIP와 OSPF

AS 내부에서 수행되는 IGP는 최적 경로 선정 과정에서 거리 벡터와 링크 상태 중 어느 걸 사용하느냐에 따라 나뉜다.
- 거리 벡터를 사용하면 RIP(Routing Information Protocol), RIPv2
- 링크 상태를 사용하면 OSPF(Open Shortest Path First), IS-IS
* 거리 벡터와 링크 상태 성격을 모두 띠는 하이브리드 라우팅 프로토콜로는 EIGRP

# 거리 벡터 알고리즘 distance vector
- 인접 라우터끼리 경로 정보를 공유하며 목적지까지의 거리와 방향을 결정하는 라우팅 프로토콜 알고리즘
- 네트워크의 거리 distance 값(홉의 수)에 대한 정보만 가져 라우터 간 최적 경로만 교환
   홉 수가 적을수록 라우팅 테이블상 메트릭 값도 작아짐
- 각 라우터가 업데이트될 때마다 주기적으로 전체 라우팅 테이블을 보내라고 요청하나, 수신된 경로 비용 정보는 이웃 라우터에게만 보내짐
- 간단하나, 규모가 커지면 처리용량이 많아져 네트워크 부담이 가중됨 >> 소규모 네트워크에 적합
- 대표적으로 RIP
* RIP 특징 : 벨만-포드 알고리즘 사용, 최대 홉 수를 15홉으로 제한, UDP 사용 = 포트 번호 520, 30초마다 전체 라우팅 정보를 브로드캐스팅

# 링크 상태 알고리즘 Link State
- 현재 네트워크 상태를 그래프 형태로 링크 상태 데이터베이스에 저장
   링크 상태 데이터베이스에는 라우터들의 연결 관계, 비용 등 현재 네트워크 상태를 그래프로 표현하기 위한 데이터가 저장됨
- 링크 상태 정보를 모든 라우터에게 전달해 최단 경로 트리를 구성하는 라우팅 프로토콜 알고리즘
- 네트워크에 대한 전반 정보(topology, path)를 가지고 라우터 간 가능성 있는 모든 경로 정보를 교환
- 거리와 대역폭에 따라 경로를 계산하고 어떤 링크 변화가 있는 경우만 정보를 전달하는 방식
- 네트워크를 일관성 있게 파악 가능하나, 거리 벡터 대비 계산이 복잡하고 트래픽을 광범위하게 전달 >> 대규모 네트워크에 적합
- 대표적으로 OSPF
* OSPF 특징 : 다익스트라 알고리즘 사용, 최소 지연/최대 처리량 등 관리자가 라우팅 메트릭 지정, AS 분할 사용, 홉 카운트에 제한 없음, 멀티캐스트를 사용해 정보 전달

# 동적 외부 라우팅 EGP = BGP

BGP(Border Gateway Protocol)는 AS 간, 그리고 AS 내 라우터 간 통신이 가능한 프로토콜이다.
BGP는 RIP와 OSPF에 비해 최적 경로 결정 과정이 복잡하고 일정하지 않은 편인데,
경로 결정 시 수신지 주소와 더불어 다양한 속성과 정책을 고려하기 때문이다.
BGP의 속성이란 경로에 대한 일종의 부가 정보로, AS-PATH, NEXT-HOP, LOCAL-PREF 등이 있다.

- AS-PATH : 메시지가 수신지에 이르는 과정에서 통과하는 AS들의 목록
- NEXT-HOP : 다음 홉. 다음으로 거칠 라우터의 IP 주소를 나타냄
- LOCAL-PREF : 지역 선호도. AS 내부에서 어떤 경로를 선호할지에 대한 척도를 나타내는 속성. 앞서 소개한 다른 속성보다 우선되며, 이 값이 클수록 우선으로 선택됨

요약하자면 BGP는 AS 간 라우팅을 할 때 라우터가 아닌 AS의 수를 고려한다.
또한, 메시지가 어디를 거쳐 이동하는지를 나타내는 경로도 고려한다.


후 이번 주는 중요한 내용도 많고
또 공부하다 보니 연상되는 내용도 많아서
보태보태 하다보니 정말 오래 걸렸다.
하지만 나중에 블로그 글 다시 읽으면
그렇게 뿌듯할 수가 없거든요~

각설하고 이번 주 공부는 끝났읍니다
그럼 이제 숙제를 해볼까요

기본 숙제 📚 

# (p147) 확인문제 1번 "IPv4의 대표적인 기능 두 가지를 골라보세요"
답 : 2번 IP 주소 지정과 3번 IP 단편화
IP는 비신뢰성, 비연결성 서비스라 1번은 오답. 4번의 IP 주소 변환은 NAT가 한다죠.

# (p187) 확인문제 2번 "라우팅 프로토콜과 관련한 아래 설명을 읽고 옳은 것을 골라 보세요"

라우팅 프로토콜은 AS 내부에서 수행되는 (IGP)와 AS 외부에서 수행되는 (EGP)로 나뉩니다.
(RIP)는 대표적인 거리 벡터 라우팅 프로토콜이고, (OSPF)는 대표적인 링크 상태 라우팅 프로토콜입니다. 

추가 숙제 : 내 컴퓨터 IP와 MAC 주소 파악해 보기

터미널에 명령어 쳐서 확인하기 귀찮아서... 시스템 메뉴를 통해 확인해 봤다.
현재 와이파이에 연결된 상태라 IP 주소는 사설 IP로 되어 있다.
그리고 MAC 주소는 봐도... 모름... 전에 배운 내용으로는 제조사별로 할당되고 어쩌고였는데 기억 안 나요

암튼 진짜 끝

반응형

+ Recent posts