이 글은 강민철님의 혼자 공부하는 네트워크(인프런) 강의를 수강하고 개인적으로 정리한 내용입니다.
들어가기에 앞서
이전 장에서는 물리 계층과 데이터 링크 계층에 대해서 알아보았다면 이번에는 3계층인 네트워크 계층에 대해서 알아볼 것이다.
네트워크 계층이 필요한 이유
항상 같은 네트워크 내의 호스트끼리만 통신을 주고받지 않는다.
때로는, 다른 네트워크에 있는 호스트와도 패킷을 주고받을 수 있다.
이렇게 다른 네트워크 상의 호스트와 통신하기 위한 계층이 3계층인 네트워크 계층이다.

네트워크 계층에서 크게 중요한 개념이 2가지 있다.
1) IP주소 - 송수신지의 대상을 지정할 때 사용
2) 라우팅 - 다른 네트워크와 통신
데이터 링크 계층과 물리 계층의 한계
그렇다면, 왜 물리 계층과 데이터 링크 계층만으로는 LAN을 넘어서 통신할 수 없을까?
이를 이해하려면 데이터링크와 물리 계층의 2가지 한계점을 알아야 한다.
1. 다른 네트워크까지의 도달 경로 파악이 어려움
따라서 네트워크 계층은 패킷이 이동할 최적 경로를 결정하는 라우팅이라는 기술을 제공한다.
2. MAC 주소만으로 모든 네트워크에 속한 모든 호스트의 위치를 특정하기 어려움
구체적으로 MAC 주소만으로는 해당 호스트가 어느 네트워크에 속해있는지에 대한 정보를 표시하기 어렵다.
이를 극복하기 위해 IP 주소(네트워크 + 호스트)와 함께 사용된다.
| MAC 주소 | IP 주소 |
| 물리적인 주소 (실질적 주소) | 논리적인 주소 (추상적) |
| 고정적 (NIC마다 할당) | 유동적 |
| 호스트를 식별하는데 사용 | 네트워크 간의 통신에서 라우팅을 할 때 사용 |
정리
1. 네트워크 계층은 다른 네트워크 상의 호스트와 통신할 때, 데이터 링크 계층과 물리 계층의 한계를 극복하기 위해 필요하다.
2. 다른 네트워크까지의 도달 경로를 파악하는 것이 어렵다는 점을 라우팅을 통해 해결한다.
3. MAC 주소만으로 호스트가 속한 네트워크를 파악하기 힘들기에 IP 주소와 함께 사용된다.
IP - 네트워크 계층의 핵심 프로토콜
그렇다면 네트워크 계층의 핵심 프로토콜인 IP 프로토콜에 대해서 살펴보자.
IP 프로토콜의 2가지 기능
IP 프로토콜의 주요 2가지 기능은 주소 지정과 단편화 기능이다.
1. 주소 지정
IP 주소를 바탕으로 송수신 대상(호스트)을 지정하는 것
IP 주소
전체 4바이트로 하나의 주소를 표현하며, 각 숫자 당 1바이트(0~255) 사이의 숫자료 표기
ex) 192.168.1.1

2. 단편화
전송하고자 하는 패킷의 크기를 MTU 이하의 여러 패킷으로 쪼개는 것

MTU
maximum transmission unit
한 번에 전송 가능한 IP 패킷의 최대 크기 (헤더+데이터)
일반적인 MTU 크기는 1,500바이트이고, MTU 이하로 나누어진 패킷은 수신지에 도착하면 다시 재조합된다.
IPv4 패킷의 필드
패킷은 아래와 같이 구성되어 있다. IP 프로토콜의 주요 2가지 기능과 관련된 필드들에 대해 알아보자.

단편화와 관련된 필드
1) 식별자 : 패킷에 할당된 번호로 쪼개져서 도착하는 IPv4의 패킷들이 어떤 메세지로부터 쪼개졌는지 알기 위해서 사용된다.
2) 플래그 : 3개의 비트로 구성되는 기준 값이다. (각 비트는 0(사용 x) / DF비트 / MF비트 로 구성)
- DF 비트 (dont't fragment) : ip 단편화를 수행하지 말라는 표시 (1 / 0)
- MF 비트 (more fragment) : 단편화된 패킷이 더 있는지를 나타냄 (1 / 0)
3) 단편화 오프셋 : 초기 데이터에서 몇 번째로 떨어진 패킷인지 (단편화된 패킷의 순서를 맞추기 위해 필요)
라우팅과 관련된 필드
1) TTL : 패킷의 수명 / 하나의 라우터를 거칠 때마다 TTL이 감소하고 0이되면 폐기된다.
2) 프로토콜 : 상위 프로토콜 번호를 의미한다.
주소 지정과 관련된 필드 (각 호스트의 IP 주소가 명시)
1) 송신지 IP 주소
2) 수신지 IP 주소
IPv6
이론적으로 IPv4에서 주소를 위한 공간으로 32비트를 사용하기 때문에, 가능한 고유한 주소의 개수는 2^32개 = 약 43억개이다.

하지만 이는 전 세계 인구가 80억명임을 감안했을 때, 한 명당 최소 하나의 호스트만 가진다고 해도 IPv4의 주소는 매우 부족한 숫자이다.
따라서 IPv6는 주소를 16바이트로 표현한다.
이론적으로 2^128개의 무한에 가까운 수를 할당할 수 있다.

IPv6 패킷의 필드
이렇게 주소 공간이 확장된 IPv6의 패킷은 아래와 같이 구성되어 있다.

1) 다음 헤더 : 상위 계층 프로토콜 또는 확장 헤더
- 확장 헤더 : IPv6는 추가적인 헤더를 가질 수 있음
2) 홉 제한 : IPv4의 TTL과 비슷하며 패킷의 수명을 나타내는 필드
3) 송신지 IP 주소 / 수신지 IP 주소 : IPv6 주소를 통한 송수신지 지정
ARP : IP 주소로 MAC 주소 알아내는 프로토콜
통신을 주고받고자 하는 호스트의 IP는 알지만 MAC 주소는 모르는 상황이 생길 수 있다.
하지만 통신에는 2가지 주소가 모두 사용되기 떄문에 MAC 주소를 알아내야 한다.
이때 사용할 수 있는 프로토콜이 ARP이다.
ARP의 동작 과정
주요 흐름은 아래와 같다.
1. ARP 요청 (브로드 캐스트)
2. ARP 응답 (유니캐스트)
3. ARP 테이블 갱신
1. ARP 요청
ARP 요청은 ARP 패킷이 포함되어 있으며 브로드 캐스트로 전송되는 메세지이다.

2. ARP 응답
호스트 B는 자신의 MAC 주소를 담은 유니캐스트 메세지를 A에게 전송한다.
그럼 A는 B의 MAC주소를 알 수 있다.

3. ARP 테이블 갱신
ARP 테이블 : IP - MAC 주소의 연관관계를 저장하는 테이블

정리
1. IP는 3계층에서 사용되는 핵심 프로토콜이고, 주소 지정과 단편화라는 주요 기능을 가진다.
2. 주소 지정이란 IP주소를 바탕으로 호스트를 지정하는 것을 의미한다.
3. 단편화란 패킷의 크기가 MTU를 넘어가면 쪼개는 것을 의미한다.
4. IPv4에는 주요 기능들과 관련된 다양한 헤더 정보가 들어있다.
5. IP 주소를 4바이트로 표현하는 IPv4로는 모든 호스트를 수용하기 힘들어 16바이트로 표현하는 IPv6를 도입했다.
6. 외부 네트워크와의 통신 과정에서는 MAC, IP 두개의 주소가 모두 필요한데, IP 주소는 알지만 MAC 주소를 모르는 경우가 발생할 수 있는데, 이때 ARP 프로토콜을 사용한다.
7. ARP 프로토콜은 ARP 테이블에 IP주소와 MAC 주소간의 연관 관계를 저장하며, 요청-응답-테이블 갱신 3가지의 과정으로 수행된다.
IP 주소
앞서 네트워크 외부의 통신을 할 때에는 2계층에서 사용되는 MAC 주소에서 해당 호스트가 어떤 네트워크에 속해있는지 저장하기 어려운 이유로 IP 주소와 함께 사용한다고 했다. 그렇다면 IP 주소에 대해서 자세히 알아보자.
IP 주소는 네트워크 주소와 호스트 주소로 구성되어 있으며 총 32비트를 차지한다.
1) 네트워크 주소 : 호스트가 속한 네트워크를 식별
2) 호스트 주소 : 특정 네트워크의 특정 호스트를 식별
네트워크와 호스트 주소의 32비트 중에서 각각의 크기를 어떻게 분할할 지는 때에 따라 다른데, 이러한 문제를 해결하고자 한 것이 IP 주소의 클래스이다.
IP 주소의 클래스
네트워크 크기에 따라 IP 주소를 분류하는 기준

많은 호스트를 할당해야 한다면 A클래스를, 많은 호스트 할당이 필요없다면 C클래스를 선택하면 된다.
이렇게 클래스를 기반으로 IP 주소를 관리하는 주소 체계를 클래스풀 주소 체계라고 한다.
1) A클래스
네트워크 주소 : 1옥텟 (0으로 시작 - 2^7개의 네트워크)
호스트 주소 : 3옥텟 (최소 0.0.0 ~ 최대 127.127.127 - 2^24개의 호스트 할당)
2) B클래스 (처음 주소 - 128~191)
네트워크 주소 : 2옥텟 (10으로 시작 - 2^14개의 네트워크)
호스트 주소 : 2옥텟 (최소 0.0 ~ 최대 127.127 - 2^16개의 호스트 할당)
3) C클래스 (처음 주소 - 192~223)
네트워크 주소 : 3옥텟 (110으로 시작 - 2^21개의 네트워크)
호스트 주소 : 1옥텟 (최소 0~127 - 2^8개의 호스트 할당)
즉, 표로 정리하면 아래와 같다.

여기서 할당 가능한 호스트에 -2를 하는 이유는
모든 옥텟의 값이 0인 경우는 해당 네트워크 자체를 의미하는 네트워크 주소로 사용되고, 모든 옥텟의 값이 1인 경우는 브로드 캐스트 주소로 사용되기 때문이다.
클래스리스 주소 체계의 등장
클래스풀 주소는 클래스 별 네트워크 크기가 고정되어 있기 때문에, 여전히 낭비되는 IP 주소가 많을 수 있다.
또한 사전에 정해진 크기 외의 다른 크기의 정교한 네트워크를 구성할 수 없다. (반드시 네트워크는 8/16/24비트 까지를 활용해야 한다.)
따라서 오늘날은 클래스리스 주소 체계를 주로 사용한다.
클래스리스 주소 체계는 클래스에 구애받지 않고 네트워크와 호스트를 할당하는 방식이다.
여기서 클래스의 개념 없이 정교한 할당을 할 수 있도록 하는 것이 서브넷 마스크의 역할이다.
서브넷 마스크
네트워크 내의 부분적인 마스크를 구분짓는 비트열
IP 주소상에서 네트워크 주소는 1, 호스트 주소는 0으로 표기한 비트열
A 클래스 : 255.0.0.0 (11111111.00000000.00000000.00000000)
B 클래스 : 255.255.0.0 (11111111.11111111.00000000.00000000)
C 클래스 : 255.255.255.0 (11111111.11111111.11111111.00000000)
서브네팅
서브넷 마스크를 이용해 클래스를 더 잘게 쪼개어 사용하는 것
서브넷 마스크로 네트워크 주소와 호스트 주소를 구분하려면 IP 주소와 서브넷 마스크의 AND 연산을 수행한다.

CIDR : 서브넷 마스크의 다른 표기법
서브넷 마스크는 아래 처럼 1의 갯수로도 표현할 수 있다.
IP 주소/서브넷 마스크의 1의 개수 형식
ex) 서브넷 마스크에 1이 20개 있다면 IP 주소/20

공인 IP와 사설 IP
1) 공인 IP
전 세계에서 고유한 IP 주소
인터넷을 이용할 때 사용하는 IP 주소
2) 사설 IP
사설 네트워크에서 사용하기 위해 특별히 예약된 IP 주소
라우터(공유기)가 할당하며, 다른 네트워크 상의 사설 IP와 중복할 수 있음
하지만 외부 네트워크와의 통신은 사설 IP가 아닌 공인 IP를 사용해야 한다.
즉, 사설 네트워크에서만 유효한 사설 IP가 외부 네트워크와 통신을 하려면 공인 IP로 변환되어야 한다.
이때 사용되는 것이 NAT이다.
NAT : IP 주소 변환 기술
사설 IP와 공인 IP를 변환하는 기술

정적 IP와 동적 IP
1) 정적 IP
호스트에게 직접 IP를 부여하는 방식으로 할당된 IP
정적 IP 주소를 부여할 때, IP 주소, 서브넷 마스크, 게이트웨이 주소, DNS 주소를 입력한다.
2) 동적 IP
호스트에 프로토콜을 활용해 자동으로 할당하는 방식으로 할당된 IP
이때, 대표적으로 IP 동적 할당에 사용되는 대표적인 프로토콜은 DHCP이다.
DHCP : IP 주소를 할당하는 프로토콜
DHCP는 동적인 IP를 할당할 때 사용되는 대표적인 프로토콜이며,
클라이언트와 DHCP 서버간에 메세지를 주고받으며 이루어진다.
1) 클라이언트 - IP 주소를 할당받고자 하는 호스트
2) DHCP 서버 - 호스트에게 IP 주소를 제공하는 호스트
이때 할당된 주소는 임시적으로 임대한다고 보면 되고, 그 기간은 보통 수시간에서 수일 임대기간이 정해진다.
IP 주소 할당 과정에서 주고받는 메세지
이때, 클라이언트와 서버는 크게 4가지의 메세지를 주고받으며 동적 IP를 할당한다.
1. DHCP discover
2. DHCP offer
3. DHCP request
4. DHCP acknowledgement

1) DHCP discover
- 클라이언트가 DHCP 서버에게 보내는 메세지
- 브로드 캐스트로 전송
- 클라이언트는 아직 IP 주소를 할당받기 전이므로 송신지 IP는 0.0.0.0으로 설정
2) DHCP offer
- DHCP 서버가 클라이언트에게 보내는 메세지
- 클라이언트에게 할당 가능한 IP 정보를 제안하는 메세지(IP주소, 서브넷 마스크, 임대 기간 포함)
3) DHCP request
- DHCP offer 메세지에 대한 응답
- 브로드캐스트 전송
4) DHCP ack
- DHCP 서버가 클라이언트에게 보내는 메세지
- 최종 승인과 같은 메세지
예약 주소
특수한 목적을 위해 예약된 IP 주소

그 중에서도 0.0.0.0과 127.0.0.0은 자주 쓰이는 예약 주소이다.
127.0.0.1
루프백 주소, 로컬 호스트
자기 자신을 가리키는 주소
루프백 주소로 전송된 패킷은 다시 자기 자신에게 되돌아오며, 부메랑 역할을 수행하는 주소이다.
0.0.0.0
호스트가 IP 주소를 할당받기 전에 임시로 할당되는 IP 주소
특별히 지칭할 IP 주소가 없을 때 사용되는 IP 주소
정리
1. IP 주소는 네트워크 주소와 호스트 주소로 구성되어 있으며, 각 부분을 얼마나 할당할지를 클래스로 나눈 것을 클래스풀 주소 체계라고 한다.
2. A~E 클래스로 나누어져 있으며, 각 클래스는 네트워크 주소와 호스트 주소를 몇 옥텟씩 나눌 것인지로 결정된다.
3. 하지만, 이러한 클래스풀 주소는 정교한 조작을 못한다는 단점이 있어 클래스에 구애받지 않는 클래스리스 주소 체계가 등장했고, 이를 서브넷 마스크를 통해 구현한다.
4. IP는 공인 IP와 사설 IP로 나눌 수 있고, 외부 네트워크와의 통신은 공인 IP를 사용해야 한다. 이때, 공인 IP와 사설 IP간의 변환하는 프로토콜이 NAT 프로토콜이다.
5. IP는 할당 방식에 따라 정적 IP와 동적 IP로 나눌 수 있다. 동적 할당에 사용되는 프로토콜이 DHCP이다.
6. IP 주소 중에서는 특수한 목적을 위해 예약된 IP가 있으며, 이를 예약 주소라고 한다.
라우팅이란?
라우팅이란 네트워크 간의 통신을 할 때 최적의 경로를 결정하는 것을 의미한다.
라우팅은 라우터를 통해 처리되며, 라우터는 아래와 같은 상황에서 다양한 경로 중에서 어떤 경로가 최적으로 갈 수 있는지를 파악하는 역할을 한다.

그렇다면, 라우터는 어떤 방식으로 라우팅을 수행할까?
이는 라우팅 테이블을 통해 수행된다.
라우팅 테이블
패킷을 어디로 보내야 할지에 대한 정보가 써져있는 표와 같은 정보
아래와 같은 정보들이 포함된다.
1) 수신지 IP 주소와 서브넷 마스크
2) 다음 홉(게이트웨이) : 최종 수신지까지 가기 위해 다음으로 거쳐야 할 IP 주소나 인터페이스
3) 네트워크 인터페이스 : 패킷을 내보낼 통로
4) 메트릭 : 해당 경로로 이동할 때 드는 비용
디폴트 라우트
라우팅 테이블에 경로가 없을 때, 기본적으로 패킷을 내보낼 경로를 의미한다.
예를 들어, 수신지 IP 주소가 1.2.3.4인 패킷을 받았다면 아래 테이블에서는 해당 수신지 IP가 존재하지 않는다.
이때, 디폴트 라우트인 0.0.0.0/0으로 eth2를 통해 192.168.0.1로 전송한다.

참고로 라우팅 테이블에 있는 디폴트 라우트의 게이트웨이는 기본 게이트웨이를 의미한다.
기본 게이트웨이란 네트워크 외부로 나아가기 위한 첫 경로로, 일반적으로 라우터나 공유기 주소를 의미한다.

MAC에서는 netstat -rn 명령어를 통해 라우팅 테이블을 볼 수 있다.

라우팅의 분류
라우팅은 라우팅 테이블을 만드는 방법에 따라 정적 라우팅과 동적 라우팅으로 분류할 수 있다.
1) 정적 라우팅 : 수동으로 구성된 라우팅 테이블 항목을 통해 수행되는 라우팅
2) 동적 라우팅 : 프로토콜로 라우팅 테이블을 만들고 이를 이용하여 라우팅
- 정적 라우팅은 네트워크의 규모가 커지면 휴먼 에러가 발생할 수 있고 유연성이 떨어진다는 문제가 있다.
- 따라서 네트워크 규모가 크다면 동적 라우팅을 사용한다.
AS : 라우터들의 집단 네트워크
한 회사나 단체에서 관리하는 라우터 집단

라우팅 프로토콜
라우팅 프로토콜은 AS 내부에서 수행되는지, 외부에서 수행되는지에 따라 2가지로 나눌 수 있다.
1) IGP : AS 내부에서 수행되며 RIP, OSPF가 있다.
2) EGP : AS 외부에서 수행되며 BGP가 있다.
IGP 프로토콜 : AS 내부
1) RIP 프로토콜
거리 벡터 기반의 라우팅 프로토콜을 의미하며, 거리는 패킷이 경유한 라우터의 수를 의미한다.
주기적으로 인접한 라우터끼리 경로 정보를 교환하여 특정 수신지까지의 홉 수를 계산하며 라우팅 테이블을 갱신한다.

2) OSPF 프로토콜 (open shortest path)
현재 네트워크의 링크 상태를 기반으로 한 라우팅 프로토콜을 의미한다.
네트워크 상태를 그래프 형태로 저장하며, 대역폭을 기반으로 메트릭을 계산하여 최적의 경로를 결정한다.
네트워크의 구성이 변경될 때 라우팅 테이블이 갱신된다.

EGP 프로토콜 : AS 외부
BGP 프로토콜 (border gateway protocol)
BGP는 IGP 프로토콜에 비해 최적의 경로를 결정하는 과정이 복잡하다.
정리
1. 라우팅이란 네트워크 간의 통신을 할 때, 최적의 경로를 결정하는 것을 의미한다.
2. 라우팅은 라우팅 테이블을 통해 처리되며, 여기에는 수신지 IP주소, 서브넷 마스크, 게이트웨이, 인터페이스, 메트릭이 기재되어 있다.
3. 라우팅은 라우팅 테이블을 만드는 방법에 따라 정적 라우팅과 동적 라우팅으로 나눠질 수 있으며, 네트워크 집단을 의미하는 AS 내부인지 외부인지에 따라서도 나눌 수 있다.
마무리
네트워크 계층을 학습하면서 네트워크 간의 통신을 할 때, 어떤 방식으로 이루어지는지 알 수 있었다.
특히 IP주소의 구성이나 체계에 대해 자세히 학습할 수 있었다.
'💻 CS > 🫧 네트워크' 카테고리의 다른 글
| [혼자 공부하는 네트워크] (6) 응용 계층 (0) | 2025.01.25 |
|---|---|
| [혼자 공부하는 네트워크] (5) 전송 계층 (0) | 2025.01.23 |
| [혼자 공부하는 네트워크] (3) 물리 계층과 데이터 링크 계층 (2) | 2025.01.19 |
| [혼자 공부하는 네트워크] (2) 컴퓨터 네트워크 시작하기 (2) | 2025.01.17 |
| [혼자 공부하는 네트워크] (1) 목차 (2) | 2025.01.16 |
