3계층 — 네트워크 계층 (Network Layer)
역할: IP 주소 기반 경로 결정(라우팅)과 패킷 전달
PDU: 패킷 (Packet) | 장비: 라우터, L3스위치, IP공유기
PDU: 패킷 (Packet) | 장비: 라우터, L3스위치, IP공유기
| 프로토콜 | 역할 | 특징 |
|---|---|---|
| IP | 주소 지정·패킷 전달 | 비연결형. IPv4(32bit) / IPv6(128bit) |
| ICMP | 오류 메시지·진단 | ping 명령어가 ICMP 사용 |
| ARP | IP→MAC 주소 변환 | 같은 네트워크 내 MAC 주소 조회 |
| OSPF | 링크상태 라우팅 | 다익스트라 알고리즘. 대규모 네트워크 |
| RIP | 거리벡터 라우팅 | 최대 홉 15. 30초마다 갱신 |
| BGP | AS간 외부 라우팅 | 인터넷 백본. TCP 179 사용 |
IP 주소 클래스
| 클래스 | 범위 | 서브넷 마스크 | 용도 |
|---|---|---|---|
| A | 1 ~ 126 | 255.0.0.0 (/8) | 대규모 네트워크 |
| B | 128 ~ 191 | 255.255.0.0 (/16) | 중규모 네트워크 |
| C | 192 ~ 223 | 255.255.255.0 (/24) | 소규모 네트워크 |
| D | 224 ~ 239 | — | 멀티캐스트 |
| E | 240 ~ 255 | — | 예약 (실험용) |
🔍 클래스 나누는 원리 · 사설 IP · 특수 주소 · 클래스 판별기 → 「IP 주소 클래스 A~E」 상세 보기
IPv4 vs IPv6 완전 비교
| 항목 | IPv4 | IPv6 |
|---|---|---|
| 주소 길이 | 32 bit | 128 bit |
| 표현 방식 | 10진수 점 표기 192.168.0.1 | 16진수 콜론 표기 2001:0db8:85a3::8a2e:0370:7334 |
| 주소 개수 | 약 43억 개 (2³²) → 고갈 문제 발생 | 약 3.4×10³⁸ 개 (2¹²⁸) → 사실상 무한대 |
| 헤더 구조 | 가변 길이 최소 20 bytes. 옵션 필드 있음 | 고정 40 bytes 옵션 → 확장 헤더로 분리 |
| 헤더 필드 수 | 12개 필드 | 8개 필드 (단순화) |
| 체크섬 | 있음 (헤더 체크섬) | 없음 (상위 계층에서 처리) |
| 단편화 | 라우터에서 가능 | 송신 측에서만 가능 (라우터 부담 감소) |
| 브로드캐스트 | 있음 | 없음 (멀티캐스트·애니캐스트로 대체) |
| 멀티캐스트 | 선택적 | 기본 지원 |
| 보안 | 별도 설정 필요 (IPSec 선택) | IPSec 기본 내장 |
| NAT | 필요 (주소 부족 해소용) | 불필요 (충분한 주소) |
| QoS | 제한적 | 트래픽 클래스·플로우 레이블 |
| 주소 설정 | 수동 또는 DHCP | 자동 설정(SLAAC) 또는 DHCPv6 |
| 등장 시기 | 1981년 (RFC 791) | 1998년 (RFC 2460) |
IPv6 주소 표기 규칙
기본 표기
128bit를 16bit씩 8그룹으로 나눔
각 그룹을 16진수로 표기, 콜론(:)으로 구분
2001:0db8:0000:0000:0000:0000:0000:0001
축약 표기 규칙
① 각 그룹 앞의 0 생략 가능
2001:db8:0:0:0:0:0:1
② 연속된 0 그룹은 :: 로 생략 (1회만)
2001:db8::1
IPv6 주소 유형
| 유형 | 설명 | IPv4 대응 |
|---|---|---|
| 유니캐스트 (Unicast) | 1:1 통신. 단일 인터페이스 식별 | 일반 IP 주소 |
| 멀티캐스트 (Multicast) | 1:다(多) 통신. 특정 그룹에 전송 | 클래스 D (224~239) |
| 애니캐스트 (Anycast) | 1:1 통신. 가장 가까운 노드에 전송 IPv6에서 새로 등장한 개념 | 해당 없음 |
IPv4 → IPv6 전환 기술
듀얼 스택: 장비가 IPv4·IPv6 동시 지원
터널링: IPv6 패킷을 IPv4로 감싸서 전송
NAT64: IPv6 ↔ IPv4 주소 변환
듀얼 스택: 장비가 IPv4·IPv6 동시 지원
터널링: IPv6 패킷을 IPv4로 감싸서 전송
NAT64: IPv6 ↔ IPv4 주소 변환
⚠ 시험 핵심 포인트
· IPv4 = 32bit / IPv6 = 128bit — 가장 기본!
· IPv4 표기: 10진수·점(.) / IPv6 표기: 16진수·콜론(:)
· IPv6 = 브로드캐스트 없음 (애니캐스트로 대체)
· IPv6 = IPSec 기본 내장 / IPv4는 선택
· IPv6 헤더 = 고정 40 bytes (IPv4는 최소 20bytes 가변)
· 애니캐스트 = IPv6에서 새로 등장한 개념 (IPv4에 없음)
· IPv4 = 32bit / IPv6 = 128bit — 가장 기본!
· IPv4 표기: 10진수·점(.) / IPv6 표기: 16진수·콜론(:)
· IPv6 = 브로드캐스트 없음 (애니캐스트로 대체)
· IPv6 = IPSec 기본 내장 / IPv4는 선택
· IPv6 헤더 = 고정 40 bytes (IPv4는 최소 20bytes 가변)
· 애니캐스트 = IPv6에서 새로 등장한 개념 (IPv4에 없음)
🔀 루프백 · 미지정 · 링크 로컬 · 멀티캐스트 특수 주소를 IPv4와 IPv6 짝으로 비교한 표는
「IP 클래스 · 서브넷마스크 · CIDR」 섹션에 있다 → 바로 가기
🧮 서브넷팅 · CIDR 계산법(마스크 변환표 · 네트워크 주소 구하기 · 블록 크기 · 실전 예제)은
「IP 주소 클래스 · 서브넷 마스크 · CIDR」 섹션에 클래스와 함께 모아 두었다 → 바로 가기
ARP / RARP 완전 정리
ARP = Address Resolution Protocol — 주소 결정 프로토콜
RARP = Reverse ARP — 역방향 주소 결정 프로토콜
둘 다 2~3계층 경계에서 동작 (IP ↔ MAC 주소 변환 담당)
RARP = Reverse ARP — 역방향 주소 결정 프로토콜
둘 다 2~3계층 경계에서 동작 (IP ↔ MAC 주소 변환 담당)
ARP vs RARP 핵심 비교
| 항목 | ARP | RARP |
|---|---|---|
| 풀네임 | Address Resolution Protocol | Reverse Address Resolution Protocol |
| 변환 방향 | IP → MAC | MAC → IP |
| 알고 있는 것 | IP 주소 | MAC 주소 |
| 알고 싶은 것 | MAC 주소 | IP 주소 |
| 동작 계층 | 2~3계층 경계 | 2~3계층 경계 |
| 전송 방식 | 브로드캐스트 요청 유니캐스트 응답 | 브로드캐스트 요청 유니캐스트 응답 |
| 사용 환경 | 일반 네트워크 통신 | 디스크 없는 워크스테이션 (현재는 DHCP로 대체) |
| 현재 사용 | 현재도 필수 사용 | 거의 미사용 (DHCP 대체) |
ARP 동작 원리
상황: PC A(192.168.1.1)가 PC B(192.168.1.2)에게 데이터를 보내려 함
PC A는 B의 IP는 알지만 MAC 주소를 모름 → ARP로 알아냄
PC A는 B의 IP는 알지만 MAC 주소를 모름 → ARP로 알아냄
① ARP Request (브로드캐스트)
PC A → FF:FF:FF:FF:FF:FF (전체에게)
"192.168.1.2 쓰는 사람 MAC 주소 알려줘!"
② ARP Reply (유니캐스트)
PC B → PC A (나한테만)
"나야! MAC은 AA:BB:CC:DD:EE:FF"
③ ARP 캐시 저장
PC A의 ARP 테이블에 저장
192.168.1.2 → AA:BB:CC:DD:EE:FF
(일정 시간 후 만료 → 재요청)
④ 이후 통신
ARP 없이 캐시에서 MAC 주소 바로 사용
RARP 동작 원리
① RARP Request (브로드캐스트)
디스크 없는 장치 → 전체에게
"내 MAC은 AA:BB:CC:DD:EE:FF인데 IP 주소가 뭐야?"
② RARP Server 응답 (유니캐스트)
RARP 서버 → 요청 장치
"너의 IP는 192.168.1.5야!"
※ 현재는 DHCP가 이 역할을 대체
ARP 패킷 구조
| Hardware Type 16 bit |
Protocol Type 16 bit |
HW Len 8 bit |
Proto Len 8 bit |
Operation 16 bit |
| Sender MAC Address 48 bit |
Sender IP Address 32 bit |
|||
| Target MAC Address 48 bit |
Target IP Address 32 bit |
|||
| 필드 | 크기 | 값 | 설명 |
|---|---|---|---|
| Hardware Type | 16 bit | 1 = 이더넷 | 네트워크 하드웨어 유형 |
| Protocol Type | 16 bit | 0x0800 = IPv4 | 상위 프로토콜 유형 |
| HW Len | 8 bit | 6 (이더넷 MAC) | MAC 주소 길이 (bytes) |
| Proto Len | 8 bit | 4 (IPv4) | IP 주소 길이 (bytes) |
| Operation | 16 bit | 1=Request, 2=Reply | 요청/응답 구분 ← 자주 출제! |
| Sender MAC | 48 bit | 송신자 MAC | 패킷 보낸 장치의 MAC |
| Sender IP | 32 bit | 송신자 IP | 패킷 보낸 장치의 IP |
| Target MAC | 48 bit | Request 시 00:00... | 찾고 싶은 장치 MAC (모르면 0) |
| Target IP | 32 bit | 찾는 IP | MAC을 알고 싶은 장치 IP |
ARP 관련 추가 개념
| 개념 | 설명 | 용도 |
|---|---|---|
| Gratuitous ARP (무상 ARP) |
자신의 IP로 ARP Request 전송 자기 자신에 대한 ARP |
IP 충돌 감지 / 네트워크 장비의 MAC 갱신 / 장애 복구 후 알림 |
| Proxy ARP | 라우터가 다른 네트워크 대신 ARP에 응답 |
서브넷 마스크 없는 구형 장비 지원 다른 네트워크 장치 대리 응답 |
| ARP 스푸핑 (ARP Spoofing) |
가짜 ARP Reply로 ARP 캐시 오염 트래픽을 공격자에게 유도 |
중간자 공격(MITM) / 도청 → 대응: ARP 검사(DAI) 사용 |
| ARP 캐시 | IP↔MAC 매핑 임시 저장 테이블 TTL 만료 시 재요청 |
반복 ARP 요청 방지, 성능 향상 → arp -a 명령으로 확인 가능 |
⚠ 시험 핵심 포인트
· ARP = IP → MAC 변환 / RARP = MAC → IP 변환 (방향 구분 필수!)
· ARP Request = 브로드캐스트 / ARP Reply = 유니캐스트
· Operation 코드: 1 = Request, 2 = Reply — 자주 출제!
· Target MAC = Request 시 00:00:00:00:00:00 (모르므로 0으로 채움)
· RARP는 현재 DHCP로 대체됨
· ARP 스푸핑 = MITM 공격의 핵심 수단 — 보안 문제로 출제
· ARP = IP → MAC 변환 / RARP = MAC → IP 변환 (방향 구분 필수!)
· ARP Request = 브로드캐스트 / ARP Reply = 유니캐스트
· Operation 코드: 1 = Request, 2 = Reply — 자주 출제!
· Target MAC = Request 시 00:00:00:00:00:00 (모르므로 0으로 채움)
· RARP는 현재 DHCP로 대체됨
· ARP 스푸핑 = MITM 공격의 핵심 수단 — 보안 문제로 출제
📨 ICMP / IGMP — 3계층 보조 프로토콜
3계층에는 IP 혼자 있는 게 아니다. IP는 배달만 할 뿐 실패를 알리지도, 그룹을 관리하지도 못해서,
그 빈자리를 ICMP(오류 보고) 와 IGMP(그룹 관리) 가 채운다.
| 프로토콜 | 프로토콜 번호 | 맡은 일 |
|---|---|---|
| IP | — | 주소 지정과 경로 배달 (비신뢰·비연결) |
| ICMP | 1 | 배달이 실패한 이유를 알림 · 상태 진단 (ping · traceroute) |
| IGMP | 2 | 멀티캐스트 그룹 가입·탈퇴 관리 |
| ARP / RARP | — | IP ↔ MAC 주소 변환 (위 참고) |
🧠 프로토콜 번호 4개는 그냥 외운다 — 「1 · 2 · 6 · 17」
ICMP 1 · IGMP 2 · TCP 6 · UDP 17. IP 헤더의 Protocol 필드에 들어가는 값이다.
ICMP·IGMP는 IP 안에 실려 전달되지만 상위 계층이 아니라 3계층에 속하는 동반 프로토콜이다. 시험 단골
ICMP 1 · IGMP 2 · TCP 6 · UDP 17. IP 헤더의 Protocol 필드에 들어가는 값이다.
ICMP·IGMP는 IP 안에 실려 전달되지만 상위 계층이 아니라 3계층에 속하는 동반 프로토콜이다. 시험 단골
📮 ICMP — Internet Control Message Protocol
IP 헤더 (Protocol = 1) 안에 ICMP 메시지가 실린다
┌──────────┬──────────┬────────────────┐
│ Type 8bit│ Code 8bit│ Checksum 16bit │
└──────────┴──────────┴────────────────┘
그 아래 ─ 문제가 된 원본 IP 헤더 + 데이터 앞 8바이트
※ 원본 패킷의 앞부분을 되돌려 보내므로
"어느 패킷이 왜 실패했는지" 송신자가 알 수 있다
| Type | 메시지 | 구분 | 언제 발생하나 |
|---|---|---|---|
| 0 | Echo Reply | 질의 | ping 응답 |
| 3 | Destination Unreachable 목적지 도달 불가 | 오류 | 호스트·네트워크·포트가 없거나 막힘 — 가장 많이 나옴 |
| 4 | Source Quench | 오류 | 혼잡하니 천천히 보내라 (현재는 거의 미사용) |
| 5 | Redirect | 오류 | 더 좋은 경로가 있으니 다른 라우터로 보내라 |
| 8 | Echo Request | 질의 | ping 요청 |
| 11 | Time Exceeded 시간 초과 | 오류 | TTL이 0이 되어 폐기 — traceroute의 원리 |
| 12 | Parameter Problem | 오류 | IP 헤더 필드 값이 잘못됨 |
| 13 / 14 | Timestamp Request / Reply | 질의 | 왕복 지연 시간 측정 |
🧠 번호 3개만 확실히 — 「3 · 8/0 · 11」
3 = 도달 불가(가장 흔한 오류) · 8 → 0 = ping(요청→응답) · 11 = 시간 초과(TTL 0).
ICMP는 오류 메시지와 질의 메시지 두 갈래인데, 짝수 0·14는 응답, 홀수 8·13은 요청인 것만 봐도 절반은 갈린다.
3 = 도달 불가(가장 흔한 오류) · 8 → 0 = ping(요청→응답) · 11 = 시간 초과(TTL 0).
ICMP는 오류 메시지와 질의 메시지 두 갈래인데, 짝수 0·14는 응답, 홀수 8·13은 요청인 것만 봐도 절반은 갈린다.
ping (도달 여부 · RTT 측정)
송신 ──[ICMP Type 8 Echo Request]──▶ 목적지
송신 ◀─[ICMP Type 0 Echo Reply ]─── 목적지
traceroute (경로 추적) ← TTL을 1씩 늘리는 것이 전부
TTL=1 ─▶ 1번 라우터에서 0 → Type 11 시간초과 회신 ⇒ 1홉 주소 획득
TTL=2 ─▶ 2번 라우터에서 0 → Type 11 시간초과 회신 ⇒ 2홉 주소 획득
TTL=3 ─▶ … 목적지 도달 시 Type 0(또는 Type 3 포트도달불가) ⇒ 종료
⚠️ ICMP의 성격 — 자주 나오는 진술
• 오류를 알릴 뿐 고치지는 않는다. 복구는 상위 계층(TCP)이나 응용의 몫
• ICMP 오류 메시지에 대해서는 다시 ICMP를 보내지 않는다 (무한 반복 방지)
• 멀티캐스트·브로드캐스트 주소에 대해서는 오류 메시지를 보내지 않는다
• 단편화된 패킷은 첫 번째 조각에 대해서만 보낸다
• 보안: Smurf(브로드캐스트 ICMP 증폭) · Ping of Death(규격 초과 ICMP) 공격에 악용되어 방화벽에서 막는 경우가 많다
• 오류를 알릴 뿐 고치지는 않는다. 복구는 상위 계층(TCP)이나 응용의 몫
• ICMP 오류 메시지에 대해서는 다시 ICMP를 보내지 않는다 (무한 반복 방지)
• 멀티캐스트·브로드캐스트 주소에 대해서는 오류 메시지를 보내지 않는다
• 단편화된 패킷은 첫 번째 조각에 대해서만 보낸다
• 보안: Smurf(브로드캐스트 ICMP 증폭) · Ping of Death(규격 초과 ICMP) 공격에 악용되어 방화벽에서 막는 경우가 많다
📡 IGMP — Internet Group Management Protocol
호스트가 라우터에게 "나 이 멀티캐스트 그룹 들을게요 / 안 들을게요"를 알리는 프로토콜.
멀티캐스트 주소는 D 클래스(224.0.0.0 ~ 239.255.255.255) 를 쓴다.
라우터 ──── Query (그룹 듣는 사람 있나요?) ────▶ 호스트들
라우터 ◀─── Report (네, 저 224.1.1.1 들어요) ──── 호스트
라우터 ◀─── Leave (저 이제 안 들어요) ──── 호스트 ← v2부터
⇒ 아무도 Report 하지 않는 그룹의 트래픽은 그 구간으로 보내지 않는다
| 버전 | 추가된 것 | 특징 |
|---|---|---|
| IGMPv1 | Query · Report | 탈퇴 메시지가 없어 타임아웃으로 판단 → 느림 |
| IGMPv2 | Leave 메시지 | 즉시 탈퇴 가능 → 전환이 빨라짐. 가장 널리 쓰임 |
| IGMPv3 | 소스 지정(SSM) | "이 그룹을 이 송신자한테서만 받겠다" 지정 가능 |
| 예약 멀티캐스트 주소 | 대상 |
|---|---|
| 224.0.0.1 | 서브넷의 모든 호스트 |
| 224.0.0.2 | 서브넷의 모든 라우터 |
| 224.0.0.5 / 224.0.0.6 | OSPF 전체 라우터 / DR·BDR |
| 224.0.0.9 | RIPv2 |
IGMP 스누핑(Snooping) — L2 스위치가 오가는 IGMP 메시지를 몰래 엿봐서,
멀티캐스트 트래픽을 실제로 가입한 포트로만 내보내는 기능.
이게 없으면 스위치는 멀티캐스트를 브로드캐스트처럼 전 포트에 뿌려 대역폭을 낭비한다.
IPTV가 대표적인 활용처다.
⚖️ ICMP vs IGMP 한눈에
| 구분 | ICMP | IGMP |
|---|---|---|
| 프로토콜 번호 | 1 | 2 |
| 목적 | 오류 보고 · 진단 | 멀티캐스트 그룹 관리 |
| 대상 주소 | 주로 유니캐스트 | D 클래스 멀티캐스트 |
| 대표 도구 · 용도 | ping · traceroute | IPTV · 화상회의 · 실시간 방송 |
| 주고받는 주체 | 호스트 ↔ 라우터 ↔ 호스트 | 호스트 ↔ 라우터 |
🧠 C·G 로 가른다 — ICMP의 C는 Control(제어·오류), IGMP의 G는 Group(그룹).
"오류면 ICMP, 그룹이면 IGMP".
📖 기출 포인트
| 물음 | 답 |
|---|---|
| ping 명령이 사용하는 프로토콜은? | ICMP (Echo Request 8 / Reply 0) |
| traceroute가 경로를 알아내는 원리는? | TTL을 1씩 증가시켜 Type 11(시간 초과) 회신을 받는다 |
| IP 헤더의 Protocol 값 1 · 2 · 6 · 17은? | ICMP · IGMP · TCP · UDP |
| 멀티캐스트 그룹 가입·탈퇴를 관리하는 프로토콜은? | IGMP |
| 멀티캐스트에 사용하는 IP 클래스는? | D 클래스 (224 ~ 239) |
| ICMP와 IGMP가 속한 계층은? | 3계층(네트워크) — IP에 캡슐화되지만 상위 계층이 아니다 |
| L2 스위치가 멀티캐스트를 가입 포트로만 보내는 기능은? | IGMP 스누핑 |
⚙️ 처리 방법 — 이 계층이 하는 일
| 기능 | 내용 |
|---|---|
| 논리 주소 지정 | IP 주소로 전 세계 어디든 지정 (MAC은 같은 네트워크 안에서만) |
| 경로 결정 (라우팅) | 목적지까지 어느 길로 보낼지 결정. RIP · OSPF · BGP |
| 패킷 전달 (포워딩) | 라우팅 테이블을 보고 다음 홉으로 넘김 |
| 단편화 · 재조립 Fragmentation | 다음 구간의 MTU보다 크면 쪼갠다. IPv4는 라우터가, IPv6는 송신 측만 수행 |
| 주소 변환 | IP ↔ MAC (ARP/RARP), 사설 ↔ 공인 (NAT) |
| 혼잡 · 오류 보고 | ICMP 로 도달 불가·시간 초과 등을 알림 (ping · traceroute) |
⚠ IP는 비연결형 · 비신뢰성 — 순서 보장도, 도착 보장도 하지 않는다.
신뢰성은 4계층 TCP 가 책임진다.
📐 계측 — 네트워크 계층에서 무엇을 보는가
| 도구 · 지표 | 무엇을 알 수 있나 |
|---|---|
| ping (ICMP Echo) | 도달 여부 · RTT(왕복 지연) · 패킷 손실률 |
| traceroute / tracert | 경유 라우터(홉) 목록과 구간별 지연 — 어디서 끊겼는지 특정 |
| TTL | 홉을 지날 때마다 1씩 감소, 0이면 폐기 → 무한 루프 방지 |
| MTU / 단편화율 | 단편화가 잦으면 성능 저하. Path MTU Discovery로 확인 |
| 라우팅 테이블 · 컨버전스 시간 | 경로 변경 후 안정화까지 걸리는 시간 |
| 패킷 손실률 · 지연 · 지터 | QoS 3대 지표 |
🔗 이 계층과 이어지는 단원
📝 3계층 시험 포인트
• PDU = 패킷, 주소 = IP, 장비 = 라우터 · L3 스위치
• IP는 비연결형 · 비신뢰성 — 신뢰성은 4계층 TCP가 담당
• 라우팅 = RIP(거리벡터, 최대 15홉) · OSPF(링크상태, 다익스트라) · BGP(AS 간, TCP 179)
• ICMP = 오류·상태 보고 (ping, traceroute) / ARP = IP→MAC
• 사용 가능 호스트 = 2ⁿ − 2
• TTL은 홉마다 감소 → 무한 루프 방지
• PDU = 패킷, 주소 = IP, 장비 = 라우터 · L3 스위치
• IP는 비연결형 · 비신뢰성 — 신뢰성은 4계층 TCP가 담당
• 라우팅 = RIP(거리벡터, 최대 15홉) · OSPF(링크상태, 다익스트라) · BGP(AS 간, TCP 179)
• ICMP = 오류·상태 보고 (ping, traceroute) / ARP = IP→MAC
• 사용 가능 호스트 = 2ⁿ − 2
• TTL은 홉마다 감소 → 무한 루프 방지