3계층은 다른 네트워크 대역을 연결하는 역할을한다
-LAN 과 LAN 을 이어주는 역할(스위치같은 3계층 장비가 필요하다)
원거리 통신을 위해서는 MAC 주소 뿐만아니라 ip 주소가 필요하다
또한 서브넷 마스크, 게이트웨이가 같이 필요하다.
3계층 프로토콜 종류
ARP 프로토콜
IPv4 프로토콜
ICMP 프로토콜

IPv4 프로토콜
IPv4 주소 구조
IPv4는 32비트로 구성되어 있으며, 8비트씩 4부분으로 나누어 10진수로 표현한다. 예를 들어 192.168.0.1 같은 형태이다.
192.168.0.1
└─┘ └─┘ └ └
8 8 8 8 비트 = 총 32비트
IPv4 헤더 구조
IPv4 패킷의 헤더에는 다음과 같은 정보가 담겨 있다.
- Version: IP 버전 (IPv4는 4)
- Header Length: 헤더 길이
- Total Length: 전체 패킷 길이
- TTL(Time To Live): 패킷의 수명 (라우터를 거칠 때마다 1씩 감소)
- Protocol: 상위 계층 프로토콜 (TCP는 6, UDP는 17)
- Source IP: 출발지 IP 주소
- Destination IP: 목적지 IP 주소
IP 주소 클래스
IP 주소는 A, B, C, D, E 클래스로 나뉜다.
A 클래스: 0.0.0.0 ~ 127.255.255.255
- 첫 번째 옥텟이 네트워크, 나머지가 호스트
- 대규모 네트워크에 사용
B 클래스: 128.0.0.0 ~ 191.255.255.255
- 첫 두 옥텟이 네트워크, 나머지가 호스트
- 중규모 네트워크에 사용
C 클래스: 192.0.0.0 ~ 223.255.255.255
- 첫 세 옥텟이 네트워크, 마지막이 호스트
- 소규모 네트워크에 사용
D 클래스: 멀티캐스트용
E 클래스: 연구용
사설 IP와 공인 IP
공인 IP: 인터넷에서 유일하게 식별되는 주소이다.
사설 IP: 내부 네트워크에서만 사용하는 주소이다.
- A 클래스: 10.0.0.0 ~ 10.255.255.255
- B 클래스: 172.16.0.0 ~ 172.31.255.255
- C 클래스: 192.168.0.0 ~ 192.168.255.255
사설 IP는 인터넷에서 라우팅되지 않으며, NAT를 통해 공인 IP로 변환되어 외부와 통신한다.
서브넷 마스크
서브넷 마스크란?
서브넷 마스크는 IP 주소에서 네트워크 부분과 호스트 부분을 구분하는 역할을 한다.
IP 주소: 192.168.1.10
서브넷 마스크: 255.255.255.0
255로 표시된 부분이 네트워크 부분이고, 0으로 표시된 부분이 호스트 부분이다.
CIDR 표기법
서브넷 마스크를 간단하게 표현하는 방법이다.
192.168.1.0/24
/24는 앞의 24비트가 네트워크 부분이라는 의미이다. 255.255.255.0과 같다.
- /24 = 255.255.255.0 (256개 IP)
- /16 = 255.255.0.0 (65,536개 IP)
- /8 = 255.0.0.0 (16,777,216개 IP)
네트워크 주소와 브로드캐스트 주소
192.168.1.0/24 네트워크의 경우:
- 네트워크 주소: 192.168.1.0 (사용 불가)
- 사용 가능 범위: 192.168.1.1 ~ 192.168.1.254
- 브로드캐스트 주소: 192.168.1.255 (사용 불가)
실제로 사용할 수 있는 IP는 254개이다.
게이트웨이
게이트웨이의 역할
게이트웨이는 다른 네트워크로 나가는 출구 역할을 한다. 일반적으로 라우터의 IP 주소를 게이트웨이로 설정한다.
내 컴퓨터: 192.168.1.10
서브넷 마스크: 255.255.255.0
게이트웨이: 192.168.1.1
내 네트워크(192.168.1.0/24)가 아닌 다른 네트워크로 패킷을 보낼 때, 게이트웨이로 먼저 보낸다.
통신 흐름
같은 네트워크 내 통신:
192.168.1.10 → 192.168.1.20
(직접 통신, 게이트웨이 불필요)
다른 네트워크와 통신:
192.168.1.10 → 게이트웨이(192.168.1.1) → 8.8.8.8
목적지가 다른 네트워크이면 무조건 게이트웨이를 거쳐간다.
ARP 프로토콜
ARP란?
ARP(Address Resolution Protocol)는 IP 주소로 MAC 주소를 알아내는 프로토콜이다.
3계층에서 목적지 IP 주소는 알지만, 실제 통신을 위해서는 2계층의 MAC 주소가 필요하다. 이때 ARP를 사용한다.
ARP 동작 과정
1. PC A: "192.168.1.20의 MAC 주소가 뭐야?"
→ ARP Request를 브로드캐스트 (FF:FF:FF:FF:FF:FF)
2. PC B(192.168.1.20): "내 MAC은 AA:BB:CC:DD:EE:FF야"
→ ARP Reply를 유니캐스트
3. PC A: ARP 테이블에 저장
192.168.1.20 → AA:BB:CC:DD:EE:FF
ARP 테이블
운영체제는 ARP 응답을 받으면 ARP 테이블에 저장한다.
# Windows
arp -a
# Linux/Mac
arp -n
```
출력 예시:
```
IP 주소 MAC 주소 유형
192.168.1.1 00:11:22:33:44:55 동적
192.168.1.20 AA:BB:CC:DD:EE:FF 동적
```
매번 ARP 요청을 보내지 않고 테이블에 캐싱해둔 정보를 사용한다. 일정 시간이 지나면 삭제된다.
### GARP (Gratuitous ARP)
자신의 IP 주소로 ARP 요청을 보내는 특수한 경우이다.
```
출발지 IP: 192.168.1.10
목적지 IP: 192.168.1.10
용도:
- IP 주소 충돌 감지
- 다른 장비들의 ARP 테이블 갱신
- 네트워크에 자신의 존재 알림
ICMP 프로토콜
ICMP란?
ICMP(Internet Control Message Protocol)는 네트워크 상태를 진단하고 오류를 보고하는 프로토콜이다.
ICMP 메시지 종류
Type 0, 8: Echo Reply, Echo Request
- ping 명령어가 사용
- 네트워크 연결 상태 확인
Type 3: Destination Unreachable
- 목적지에 도달할 수 없음
- 네트워크, 호스트, 포트 등이 없을 때
Type 11: Time Exceeded
- TTL이 0이 되어 패킷 폐기
- traceroute가 이용
ping 명령어
ping 8.8.8.8
```
동작 과정:
```
1. ICMP Echo Request 전송 (Type 8)
2. 목적지가 ICMP Echo Reply 응답 (Type 0)
3. 응답 시간 측정
```
출력 예시:
```
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=118 time=35.2 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=118 time=34.8 ms
- ttl: 남은 홉 수
- time: 왕복 시간 (RTT)
traceroute 명령어
경로 추적을 위해 ICMP를 활용한다.
# Windows
tracert google.com
# Linux/Mac
traceroute google.com
```
동작 원리:
```
1. TTL=1로 패킷 전송 → 첫 번째 라우터에서 Time Exceeded 응답
2. TTL=2로 패킷 전송 → 두 번째 라우터에서 Time Exceeded 응답
3. TTL=3으로 패킷 전송 → ...
```
이렇게 경로상의 모든 라우터를 확인할 수 있다.
---
## 라우팅
### 라우팅이란?
패킷이 목적지까지 가는 최적의 경로를 찾는 과정이다. 라우터가 라우팅 테이블을 참조해서 다음 홉(Next Hop)을 결정한다.
### 라우팅 테이블
```
목적지 네트워크 넷마스크 게이트웨이 인터페이스
192.168.1.0 255.255.255.0 0.0.0.0 eth0
10.0.0.0 255.255.255.0 192.168.1.1 eth0
0.0.0.0 0.0.0.0 192.168.1.1 eth0
```
- 첫 번째: 로컬 네트워크 (직접 연결)
- 두 번째: 10.0.0.0/24로 가려면 192.168.1.1로 전송
- 세 번째: 기본 게이트웨이 (나머지 모든 목적지)
### 라우팅 과정 예시
PC(192.168.1.10)에서 8.8.8.8로 패킷을 보낼 때:
```
1. 목적지 확인: 8.8.8.8
2. 서브넷 마스크 확인: 내 네트워크(192.168.1.0/24)가 아님
3. 라우팅 테이블 검색: 일치하는 항목 없음
4. 기본 게이트웨이(192.168.1.1)로 전송
5. 라우터가 다음 라우터로 전달
6. 반복...
```
### TTL의 역할
패킷이 무한 루프에 빠지는 것을 방지한다.
```
초기 TTL: 64
첫 번째 라우터: TTL → 63
두 번째 라우터: TTL → 62
...
TTL이 0이 되면: 패킷 폐기 + ICMP Time Exceeded 전송
```
---
## 3계층 장비
### 라우터
서로 다른 네트워크를 연결하는 장비이다. IP 주소를 보고 패킷을 전달할 경로를 결정한다.
```
LAN A (192.168.1.0/24) ←→ 라우터 ←→ LAN B (192.168.2.0/24)
```
### L3 스위치
스위치에 라우팅 기능을 추가한 장비이다. 2계층 스위칭과 3계층 라우팅을 모두 수행한다.
일반 스위치보다 빠르고, 일반 라우터보다 많은 포트를 제공한다.
---
## 실제 통신 예시
PC A(192.168.1.10)에서 Google(8.8.8.8)로 ping을 보내는 전체 과정을 살펴보자.
### 1단계: 목적지 판단
```
내 IP: 192.168.1.10
서브넷 마스크: 255.255.255.0
목적지 IP: 8.8.8.8
→ 다른 네트워크! 게이트웨이로 보내야 함
```
### 2단계: ARP로 게이트웨이 MAC 주소 확인
```
ARP 테이블 확인
192.168.1.1 → 00:11:22:33:44:55 (있음)
없으면 ARP Request 전송
```
### 3단계: 패킷 구성
```
[이더넷 헤더]
출발지 MAC: AA:AA:AA:AA:AA:AA (내 MAC)
목적지 MAC: 00:11:22:33:44:55 (게이트웨이 MAC)
[IP 헤더]
출발지 IP: 192.168.1.10
목적지 IP: 8.8.8.8
TTL: 64
Protocol: ICMP
[ICMP 헤더]
Type: 8 (Echo Request)
```
### 4단계: 게이트웨이 처리
```
1. 이더넷 헤더 제거 (2계층)
2. IP 헤더 확인 (3계층)
- 목적지 IP: 8.8.8.8
- TTL: 64 → 63으로 감소
3. 라우팅 테이블 검색
4. 다음 홉으로 전달
- 새로운 이더넷 헤더 추가 (다음 라우터의 MAC)
```
### 5단계: 중간 라우터들
```
각 라우터마다:
1. 이더넷 헤더 제거
2. TTL 감소
3. 라우팅 테이블 검색
4. 새로운 이더넷 헤더 추가
5. 다음 홉으로 전달
```
### 6단계: 목적지 도달
```
8.8.8.8 서버:
1. ICMP Echo Request 수신
2. ICMP Echo Reply 생성
3. 같은 경로로 역방향 전송
```
### 7단계: 응답 수신
```
PC A:
1. ICMP Echo Reply 수신
2. ping 명령어 출력
64 bytes from 8.8.8.8: icmp_seq=1 ttl=118 time=35.2 ms
마치며
3계층은 서로 다른 네트워크를 연결하는 핵심 계층이다. IP 주소로 목적지를 식별하고, 서브넷 마스크로 네트워크를 구분하며, 게이트웨이를 통해 다른 네트워크로 패킷을 전달한다.
ARP는 IP 주소를 MAC 주소로 변환하고, ICMP는 네트워크 상태를 진단한다. 라우터는 라우팅 테이블을 참조해 최적의 경로를 찾아 패킷을 전달한다.
이러한 3계층의 동작 원리를 이해하면, 네트워크 문제를 진단하고 해결하는 데 큰 도움이 된다. ping, traceroute, arp 같은 명령어를 활용해 실제로 네트워크 상태를 확인해보는 것을 추천한다.
'TechKnowledge > 네트워크' 카테고리의 다른 글
| 근거리 네트워크 통신 (0) | 2025.05.08 |
|---|