발전하는 춘배
[네트워크 개론] 3. 네트워크 계층 본문
공부 자료
유튜브 한빛미디어, 네트워크 기초 강의 17~27강
https://youtube.com/playlist?list=PLVsNizTWUw7HfOCgvlfHIDPPo3TE-2iQM&si=QiJwtVA8HO7yLx79
혼자 공부하는 네트워크
네트워크 전공 지식의 중요성을 알지만 혼자서 공부하기 어려운 분들을 위해 만들었습니다. 너무 쉽거나 어렵지 않도록 다수의 네트워크 전공 서적들을 면밀히 분석하고, 방대한 컴퓨터 네트워
www.youtube.com
3-1 LAN을 넘어서는 네트워크 계층
네트워크 계층
지금까지 1계층(물리 계층), 2계층(데이터링크 계층)에서는 일반적으로 같은 LAN 안에서의 패킷 송수신을 다루었다.
이제는 LAN을 넘어 다른 네트워크와의 통신을 위한 계층인 네트워크 계층에 대해 알아본다.
주요 내용:
- IP 주소를 통한 송수신지 대상 지정
- 라우팅을 통한 다른 네트워크 통신
물리 계층과 데이터 링크 계층의 한계
1. 다른 네트워크까지의 도달 경로 파악이 어렵다.
어떤 경로가 최적인지 알 수 없다.
패킷이 이동할 최적의 경로를 결정하는 것을 '라우팅'이라고 한다. 네트워크 계층에서는 이러한 라우팅 기술을 제공한다.
2. 모든 네트워크에 속한 모든 호스트의 위치를 특정하기 어렵다.
MAC 주소는 네트워크 인터페이스마다 부여되는데, 호스트는 속해 있는 네트워크가 실시간으로 달라질 수 있으므로 모든 네트워크에 속한 모든 호스트의 위치는 특정하기 어렵다.
그래서 MAC 주소와 IP 주소를 함께 사용하고, 기본적으로 IP 주소를 먼저 활용한다. 택배에 비유하자면 IP주소는 수신지, MAC 주소는 수신인이라 볼 수 있다.
MAC 주소는 NIC마다 할당되는 고정된 주소지만, IP 주소는 유동적으로 할당 가능하고 DHCP 프로토콜을 통해 자동으로 할당받거나 사용자가 직접 할당할 수 있다.
IP(인터넷 프로토콜)
물리 계층과 데이터 링크 계층의 한계를 극복하는 프로토콜.
IPv4와 IPv6가 있음.
IP의 공식적인 두 기능:
- 주소 지정 (IP addressing)
IP 주소를 바탕으로 송수신 대상을 지정함
IPv4: 4바이트로 하나의 주소를 표현
- 숫자당 8비트, 즉 10진수 0~255 범위의 4개의 숫자로 표현한다.
- ex) 192.168.1.1
- IPv4에서 IP 주소는 32비트로 표현된다. 즉 2^32 개 ≒ 43억 개의 주소를 표현할 수 있는데, 충분하지 않다.
- 콜론으로 구분된 8개 그룹의 16진수로 표기한다.
- ex) 1fa3:213d:1ad3:ffff:0000:0000:ffff:1111
- 단편화 (IP fragmentation)
전송하고자 하는 패킷이 너무 클 때 MTU(한 번에 전송 가능한 IP 패킷의 최대 크기; 1500바이트) 이하의 복수의 패킷으로 나누는 것.
IPv4 패킷의 핵심 필드: 주소 지정과 단편화를 위한 주요 필드들
- 식별자
- 패킷에 할당된 번호
- 단편화된 패킷들이 어떤 메시지에서 쪼개졌는지를 알기 위해 사용
- 플래그
- 세 개의 비트로 구성
- 첫 번째 비트는 항상 0
- DF(Don't Fragment) 비트: IP 단편화를 수행하지 말라(1), IP 단편화가 가능하다(0)
- MF(More Fragment) 비트: 단편화된 패킷이 더 있다(1), 이 패킷이 마지막 패킷이다(0)
- 단편화 오프셋
- 초기 데이터에서 몇 번째로 떨어진 패킷인지를 나타냄
- 패킷은 수신지에 순서대로 도착하지 않을 수 있으므로, 재조합을 위해 그 순서를 표현해야 함.
- TTL (Time To Live)
- 패킷의 수명
- 무의미한 패킷이 네트워크상에 지속적으로 남아있는 것을 방지하기 위한 역할
- 패킷이 하나의 라우터를 거칠 때마다 TTL이 1씩 감소하며 0으로 떨어진 패킷은 폐기한다.
- 홉: 패킷이 호스트 또는 라우터에 한 번 전달되는 것을 홉이라 한다. 즉 TTL 필드의 값은 홉마다 1씩 감소한다.
- 프로토콜
- 상위 계층의 프로토콜이 무엇인지를 나타내는 필드. 즉 무엇을 캡슐화 한 건지를 표현.
- ex) TCP는 6번, UDP는 17번
- 송신지 IP 주소
- 수신지 IP 주소
IPv6 패킷의 핵심 필드
1. 다음 헤더
상위 계층의 프로토콜 또는 확장 헤더를 가리키는 필드
확장 헤더: 기본 헤더와 페이로드 데이터 사이에 위치하며, 꼬리를 물듯 확장 헤더가 붙을 수 있다.
대표적인 확장 헤더로
- 홉 간 옵션, 수신지 옵션, 라우팅, 단편, ESP, AH 등이 있다.
단편화 확장 헤더
- 마찬가지로 다음 헤더 필드가 있고, 예약됨 & 예약 필드는 0으로 설정되어 사용되지 않는다
- 단편화 오프셋: 전체 메시지에서 현재 단편화된 패킷의 위치
- M 플래그: 더 많은 단편화된 패킷이 있다(1), 마지막 패킷이다(0)
- 식별자: 동일한 메시지에서부터 단편화된 패킷임을 식별함
2. 홉 제한
IPv4의 TTL 필드와 유사
3. 송신지 IP 주소
4. 수신지 IP 주소
IP 주소로 MAC 주소 알아내기: ARP
ARP (Address Resolution Protocol)
IP 주소는 아는데 MAC 주소를 모를 때, IP 주소를 통해 MAC 주소를 알아내는 프로토콜
동작 방식
- ARP 요청
- ARP 응답
- ARP 테이블 갱신
동일 네트워크에 속한 호스트 A, B가 있고, B의 MAC 주소를 알아내야 하는 상황을 가정해 보자.
1. ARP 요청
호스트 A는 브로드캐스트 메시지를 전송한다.
2. ARP 응답
B 외의 나머지 호스트는 자신의 IP 주소가 아니므로 A의 메시지를 무시하고, B는 MAC 주소를 담은 유니캐스트 메시지를 A에게 전송한다.
이때 ARP 요청과 응답 과정에서 송수신되는 메시지는 ARP 패킷이다.
ARP 패킷:
- 오퍼레이션 코드: 요청은 1, 응답은 2
- 송신지 하드웨어 주소, 수신지 하드웨어 주소: MAC 주소
- 송신지 프로토콜 주소, 수신지 프로토콜 주소: IP 주소
3. ARP 테이블 갱신
ARP 요청-응답을 통해 알게 된 IP 주소와 MAC 주소의 연관 관계를 테이블에 기록한다.
ARP 테이블 항목은 일정 시간이 지나면 삭제되고, 임의로 삭제도 가능하다.
ARP 테이블에 등록된 호스트에 대해서는 ARP 요청을 보낼 필요가 없다.
A와 B가 서로 다른 네트워크에 속해 있는 경우 - 네트워크 별로 ARP 수행
1. ARP 요청-응답 과정을 통해 라우터 A의 MAC 주소를 알아내고 여기에 패킷 전송
2. ARP 요청-응답 과정을 통해 라우터 B의 MAC 주소를 알아내고 여기에 패킷 전송
3. ARP 요청-응답 과정을 통해 호스트 B의 MAC 주소를 알아내고 여기에 패킷 전송
IP 단편화를 피하는 방법
단편화: 전송하고자 하는 패킷의 크기를 MTU 이하의 복수의 패킷으로 나누는 것.
단편화가 많이 수행될수록 불필요한 트래픽 증가, 대역폭 낭비, 재조립 과정의 부하 등이 발생하므로 적게 수행되는 게 좋다.
이를 피하기 위해서는 IP 패킷을 주고받는 모든 노드가 IP 단편화 없이 주고받을 수 있는 최대 크기(= 경로 MTU) 만큼만 전송해야 한다.
오늘날 단편화는 자주 일어나지 않는다.
실제 IP 패킷을 보면 대부분 DF(Don't Fragment) 비트가 세팅되어 있는 걸 볼 수 있다.
3-2 IP 주소
IP의 핵심 기능, 주소 지정
IP 주소의 구조
- 네트워크 주소: 호스트가 속한 특정 네트워크를 식별
- 호스트 주소: 특정 호스트를 식별
32비트의 IPv4 주소에서 호스트 주소의 크기는 어느 정도가 적당할까?
127.0.0.1
ex) 네트워크 주소가 하나의 옥텟인 경우, 호스트 주소는 3개의 옥텟, 24비트가 할당된다. 2^24의 호스트를 할당할 수 있다.
ex) 네트워크 주소가 세 개의 옥텟인 경우, 호스트 주소는 1개의 옥텟, 8비트가 할당된다. 2^8개의 호스트를 할당할 수 있다.
호스트 주소 공간이 너무 크면 다수의 IP 주소가 낭비되고, 호스트 주소 공간이 너무 작으면 호스트가 사용할 IP 주소가 부족해질 수 있다.
클래스풀 주소 체계 (classful addressing)
클래스를 기반으로 IP 주소를 관리하는 주소 체계
클래스: 네트워크 크기에 따라 IP 주소를 분류하는 기준 (A클래스 ~ E클래스까지 5개의 클래스가 있지만, D와 E클래스는 특수한 클래스다)
필요한 호스트 IP 개수에 따라 클래스를 달리 선택하면 된다.
A클래스: 네트워크 주소 1옥텟('0'으로 시작. 즉 첫 옥텟이 0~127), 호스트 주소 3옥텟
B클래스: 네트워크 주소 2옥텟('10'으로 시작. 즉 첫 옥텟이 128~191), 호스트 주소 2옥텟
C클래스: 네트워크 주소 3옥텟('110'으로 시작. 즉 첫 옥텟이 192~223), 호스트 주소 1옥텟
호스트 할당이 많이 필요한 경우 A클래스, 그렇지 않은 경우 C클래스를 선택하면 된다.
호스트의 주소 공간을 모두 사용할 수 있는 것은 아니다.
- 호스트 주소가 전부 0인 주소: 해당 네트워크 자체를 의미하는 네트워크 주소로 사용
- 호스트 주소가 전부 1인 주소: 브로드캐스트 주소로 사용
요약:
| 클래스 | 네트워크 주소 크기 | 호스트 주소 크기 | 할당 가능한 네트워크 수 | 할당 가능한 호스트 수 |
| A | 8비트 | 24비트 | 2^7 | 2^24 - 2 |
| B | 16비트 | 16비트 | 2^14 | 2^16 - 2 |
| C | 24비트 | 8비트 | 2^21 | 2^8 - 2 |
클래스리스 주소 체계
클래스풀 주소 체계는 클래스별 네트워크 크기가 고정되어 있어, 여전히 낭비되는 IP 주소가 많을 수 있다.
ex) 300개의 컴퓨터를 동일 네트워크로 구성하려면 C클래스를 이용할 수 없다. 그렇다고 B클래스를 사용하기엔 낭비되는 주소가 너무 많다.
클래스리스 추소 체계(classless addressing)
클래스 개념 없이 네트워크 영역을 나누고 호스트에게 IP 주소 공간을 할당하는 방식으로, 더 유동적이고 정교한 네트워크 구획이 가능해 오늘날 주로 활용된다.
서브넷 마스크 (subnet mask)
클래스 없이 IP 주소의 네트워크 주소, 호스트 주소를 구분하는 수단.
네트워크 주소는 1, 호스트 주소는 0으로 표기한 mask 비트열이다.
ex) B 클래스의 서브넷 마스크는 11111111.11111111.00000000.00000000
서브네팅
서브넷 마스크를 이용해 클래스를 원하는 크기로 더 잘게 쪼개어 사용하는 것
IP 주소와 서브넷 마스크를 비트 AND 연산하면 그 결과는 네트워크 주소다
서브넷 마스크의 표기
- 10진수로 직접 표기
ex) 255.255.0.0 - CIDR 표기법
"IP 주소/서브넷 마스크의 1 개수" 형태로 표기
ex) 192.168.0.2/25:- 서브넷 마스크 255.255.255.128
- 네트워크 주소 192.168.0.0
- 브로드캐스트 주소 192.168.0.127
- 할당 가능한 호스트 IP 주소 192.168.0.1 ~ 192.168.0.126
- 즉, 192.168.0.2/25는, 126개의 호스트를 할당할 수 있는 192.168.0.0이라는 네트워크에 속한 192.168.0.2를 나타낸다.
IP 주소의 분류
공인 IP 주소
- 전 세계에서 고유한 IP 주소
- 네트워크 간 통신(인터넷)을 이용할 때 사용
- ISP나 공인 IP 주소 할당 기관을 통해 할당
사설 IP 주소
- 사설 네트워크에서 사용하기 위한 IP 주소
- 사설 IP 주소로 사용하도록 특별히 예약된 IP 주소 공간이 있음
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
- 일반적으로 라우터(공유기)가 할당
- 호스트가 속한 사설 네트워크에서만 유효한 주소. 즉, 다른 네트워크의 사설 IP 주소와 중복 가능
사설 IP 주소를 사용하는 호스트는 어떻게 외부 네트워크와 통신하는가?
NAT (Network Address Translation)
네트워크 내부의 호스트가 외부의 호스트와 통신할 때
네트워크 내부의 사설 IP 주소와, 네트워크 외부의 공인 IP 주소를 변환
포트를 활용하면 NAT를 통해서 사설 IP 주소를 사용하는 여러 호스트가 적은 수의 공인 IP 주소를 공유할 수 있다.
정적 IP 주소
- 호스트에 직접 IP 주소를 부여하는 방식
- 정적 IP 주소를 부여할 때: 부여하고자 하는 IP 주소, 서브넷 마스크, 게이트웨이(라우터) 주소, DNS 주소 입력
- 기본 게이트웨이: 호스트가 속한 네트워크 외부로 나가기 위한 기본적인 첫 번째 노드(홉) (보통 라우터의 주소)
- DNS 주소: 로컬 DNS 서버 주소 (보통 ISP가 부여, 대표적으로 8.8.8.8, 1.1.1.1)
동적 IP 주소
- 모든 IP 주소를 정적으로 할당할 경우, 호스트 수가 많아질 경우 관리가 어렵고 휴먼 에러 발생 가능
- 호스트에 IP 주소를 프로토콜(DHCP)을 활용해 자동으로 할당하는 방식
DHCP를 통한 동적 IP 주소 할당
클라이언트(IP 주소를 할당받으려는 호스트)와 DHCP 서버(호스트에게 IP 주소를 제공하는 호스트. 일반적으로 라우터) 간 메시지 송수신을 통해 할당이 이루어짐
DHCP로 할당받은 동적 IP 주소는 사용할 기간이 정해져 있음 (보통 수 시간 ~ 수 일)
임대 기간이 끝난 IP 주소는 다시 DHCP 서버로 반납. 즉, 반납 이후 재할당 받으면 다른 IP 주소를 할당받을 수도 있음
메시지:
- DHCP Discover (클라이언트 → DHCP 서버)
- DHCP 서버를 찾는 메시지
- 브로드캐스트로 전송
- 클라이언트는 아직 IP 주소를 할당받지 못한 상태이므로 송신지 IP 주소는 0.0.0.0으로 설정
- DHCP Offer (DHCP 서버 → 클라이언트)
- 클라이언트에게 할당 가능한 IP 주소 정보를 제안
- 할당 가능한 IP 주소, 서브넷 마스크, 임대 기간 등의 정보가 포함
- DHCP Request (클라이언트 → DHCP 서버)
- DHCP Offer에 대한 응답
- 브로드캐스트로 전송
- DHCP ACK (DHCP 서버 → 클라이언트)
- 최종 승인 메시지
- 이 메시지를 받은 클라이언트는 할당받은 IP 주소를 자신의 IP 주소로 설정 후 임대 기간 동안 IP 주소 사용
- 사용 기간이 끝나면, 원칙적으로는 다시 1~4 과정으로 IP 주소를 재할당 받음
- 임대 갱신(lease renewal): 임대 기간이 끝나기 전 기간을 연장하는 것. 임대 기간이 끝나기 전 두 차례 자동으로 수행. 모두 실패하면 그때 IP 주소를 재할당
예약 주소, 0.0.0.0 vs 127.0.0.1
예약 주소: 특수한 목적을 위해 예약된 IP 주소
127.0.0.1
- 루프백 주소(loopback address), 로컬 호스트 (localhost)
- 자기 자신을 가리키는 특별한 주소
- 루프백 주소로 전송된 패킷은 자기 자신에게 되돌아옴. 테스트나 디버깅 용도로 사용
0.0.0.0/8
- 호스트가 IP 주소를 할당받기 전에 임시로 할당되는 IP 주소
- 즉 호스트 입장에서 마땅히 자신을 가리킬 주소가 없을 때 사용
- ex) DHCP Discover 송신자 IP 주소
0.0.0.0/0
- 모든 임의의 IP 주소를 지칭
- 주로 라우팅에서 디폴트 라우트(default route)를 나타내기 위해 사용
- 디폴트 라우트: 패킷을 어떤 IP 주소로 전달할지 결정하기 애매한 경우 기본적으로 패킷을 전달할 경로. 즉 패킷 전달의 기본 경로.
3-3 라우팅
네트워크 간 통신에서 최적의 경로를 찾는 과정
라우터
네트워크 간 통신을 가능하게 하는 네트워크 계층의 장비
패킷은 여러 라우터를 거쳐 다양한 경로로 이동할 수 있음. 즉 라우팅은 여러 홉을 거쳐 패킷이 이동하는 과정(hop by hop routing)
라우터는 라우팅을 어떻게 수행할까?
라우팅 테이블(routing table): 특정 수신지까지 도달하기 위한 정보를 명시한 정보
- 포함된 정보:
- 수신지 IP 주소, 서브넷 마스크: 최종적으로 패킷을 전달할 대상
- 다음 홉(게이트웨이): 다음으로 거쳐야 할 호스트의 IP 주소나 인터페이스
- 네트워크 인터페이스: 패킷을 내보낼 통로, NIC 이름이 직접 명시되거나 인터페이스에 대응하는 IP 주소 명시
- 메트릭(metric): 해당 경로로 이동하는 데 드는 비용
- 디폴트 라우트: 라우팅 테이블에 경로가 없을 때 기본적으로 패킷을 내보낼 경로(0.0.0.0/0으로 명시). 보통의 경우 기본 게이트웨이(라우터)의 주소를 가리킴.
라우팅의 분류
라우팅 테이블을 만드는 방법에 따라
- 정적 라우팅: 수동으로 라우팅 테이블을 구성. 네트워크 규모가 커지면 관리가 힘들고 문제 발생 시 경로 우회가 어려움
- 동적 라우팅: 자동으로 라우팅 테이블 항목을 구성. 라우팅 프로토콜 이용. 라우팅 테이블의 항목을 수동으로 입력할 필요가 없음. 그러므로 네트워크 경로상에 문제가 생겼을 때 이를 우회할 수 있게 경로가 자동으로 갱신됨
AS (Autonomous System): 라우터들의 집단 네트워크
한 회사나 단체에서 관리하는 라우터 집단으로, 라우팅 프로토콜의 기준이 되는 전 세계에서 고유한 번호
라우터들은 AS 내부에서만 통신할 수도 있고, AS 외부와 통신할 수도 있음
AS 외부와 통신할 경우 AS 경계에서 AS 내외로 통신을 주고받을 수 있는 AS 경계 라우터(ASBR)를 이용
라우팅 프로토콜
라우터끼리 자신들의 정보를 교환하며 패킷이 이동할 최적의 경로를 찾기 위한 프로토콜
종류:
- ISG(Interior Gateway Protocol): AS 내부에서 수행. ex) RIP, OSPF
- RIP: 거리 벡터 기반의 라우팅 프로토콜
- '거리' = 홉 수 = 패킷이 경유한 라우터의 수
- 홉 수가 가장 적은 경로를 최적의 경로로 판단
- 홉 수가 적을수록 라우팅 테이블상의 메트릭 값도 작아짐
- 주기적으로 인접 라우터끼리 경로 정보 교환, 라우팅 테이블 갱신, 특정 수신지까지의 홉 수 계산
- OSPF: 링크 상태 기반 라우팅 프로토콜
- 현재 네트워크 구성(연결 관계, 연결 비용 등)을 그래프 형태로(링크 상태 데이터베이스 LSDB) 나타낸 후 최적의 경로를 선택
- 대역폭을 기반으로 메트릭을 계산하여 최적의 경로를 결정
- 대역폭이 높은 링크일수록 메트릭이 낮은 경로로 인식
- 네트워크 구성 변경 시 라우팅 테이블 갱신
- RIP: 거리 벡터 기반의 라우팅 프로토콜
- EGP(Exterior Gateway Protocol): AS 외부에서 수행 ex) BGP
- BGP(Border Gateway Protocol): AS 간 통신도 가능하고(eBGP) AS 내 라우터 간 통신도 가능(iBGP)
- 피어링(peering): 다른 AS와의 BGP 연결을 유지하기 위해서 BGP 라우터끼리의 피어가 되도록 연결되는 과정
- BGP는 RIP나 OSPF에 비해 최적의 경로를 결정하는 과정이 복잡하고 일정하지 않은 경우가 많음
- 경로 결정 과정에서 다양한 '속성'과 '정책'이 고려되기 때문이다.
- 속성:
- AS-PATH: 메시지가 수신지에 이르는 과정에서 거치는 AS 목록. 메시지가 AS를 거칠 때마다 거쳐간 AS 추가. BGP는 '거리'가 아닌 '경로'를 고려하므로 "경로 벡터 라우팅 프로토콜"이라 부리기도 함.
- NEXT-HOP: 다음으로 거칠 홉의 IP 주소
- LOCAL-PREF: 지역 선호도, 어떤 경로를 선호할지에 대한 척도. 이 값은 정책의 영향을 받음.
- 정책: AS 관리 주체에 따라 상이한 정책 적용 가능
- ex) 특정 AS 우대/차단 정책
- ex) 보안/안정성 우선 정책 vs 성능 우선 정책
- BGP(Border Gateway Protocol): AS 간 통신도 가능하고(eBGP) AS 내 라우터 간 통신도 가능(iBGP)
'네트워크' 카테고리의 다른 글
| [네트워크 개론] 2. 물리 계층과 데이터링크 계층 (0) | 2026.03.08 |
|---|---|
| [네트워크 개론] 1. 컴퓨터 네트워크 시작하기 (0) | 2026.03.06 |