728x90
반응형
[IP 주소] ARP | 홉바이홉 | DHCP | NAT
면접을 위한 CS 전공지식 노트: SECTION 2.4 IP 주소
더북(TheBook): (주)도서출판 길벗에서 제공하는 IT 도서 열람 서비스입니다.
thebook.io
"오늘은 면접을 위한 CS 전공 지식 노트"를 참고하여 공부한 네트워크 내용입니다.
📌 두괄식 요약
1️⃣ ARP (Address Resolution Protocol)
논리적 주소인 IP를 물리적 주소인 MAC으로 변환하여, 실제 같은 네트워크(LAN) 내의 장치를 찾아내는 프로토콜입니다.
2️⃣ 홉바이홉 (Hop-by-Hop)
출발지에서 목적지까지 한 번에 가는 것이 아니라, 중간에 있는 라우터들을 하나씩 건너뛰며(Hop) 최적의 경로를 찾아가는 통신 방식입니다.
3️⃣ DHCP (Dynamic Host Configuration Protocol)
네트워크에 접속하는 장치에게 IP 주소, 서브넷 마스크, 게이트웨이 등의 정보를 자동으로 할당해주는 기술입니다.
4️⃣ NAT (Network Address Translation)
IP 부족 문제를 해결하기 위해, 내부망에서는 사설 IP를 쓰고 인터넷으로 나갈 때만 공인 IP로 주소를 바꿔치기하는 기술입니다.
📌 ARP
컴퓨터 ↔ 컴퓨터 간 통신을 IP 주소 기반으로 통신한다고 알고 있지만, 정확히 IP 주소에서 ARP를 통해 MAC 주소를 찾아 MAC 주소 기반으로 통신함
1️⃣ 정의
- Address Resolution Protocol
- IP 주소로부터 MAC 주소를 구하는 IP와 MAC 주소의 다리 역할하는 프로토콜
- "논리 주소(IP)를 물리 주소(MAC)로 바꾸는 통역사”
- 반대
- RARP 통해 실제 주소인 MAC 주소 → 가상 주소인 IP 주소로 변환

2️⃣ ARP의 주소 찾는 과정

1. 장치 A : ARP Request → `브로드캐스트`
- 해당 IP 주소에 해당하는 MAC 주소 찾음
2. 장치 B: ARP Reply → `유니캐스트`
- MAC 주소 반환
브로드캐스트: 네트워크 연결된 모든 호스트에 전송
유니캐스트: 하나의 네트워크 목적지에 1:1로 전송
✚) ARP Cache & Spoofing
- ARP Cache Table: 매번 물어보면 비효율적
→ 한 번 알아낸 IP-MAC 쌍은 메모리(RAM)의 ARP 테이블에 잠시 저장해둠
(`arp -a` 명령어로 확인 가능) - ARP Spoofing (보안): 해커가 "내가 그 IP 주인이야"라고 거짓 응답을 보내 ARP 테이블을 오염시킴
→ 데이터가 해커에게로 흘러가는 중간자 공격(MITM)이 발생할 수 있음
📌 홉바이홉 통신
1️⃣ 정의
- hop by hop
- hop: 건너뛰는 모습 의미
→ 통신망에서 각 패킷이 여러 개의 라우터를 건너가는 모습 비유적 표현
- hop: 건너뛰는 모습 의미
- IP 주소를 통해 통신하는 과정
- "징검다리 건너듯 라우터 타고 이동”
- 각각의 라우터에 있는 라우팅 테이블의 IP를 기반으로 패킷을 전달하고 다시 전달해나감
2️⃣ 홉바이홉 통신 과정

- 통신 장치에 있는 ‘라우팅 테이블’의 IP 통해 시작 주소
→ 다음 IP로 계속 이동하는 ‘라우팅’ 과정 거쳐 패킷이 최종 목적지까지 도달하는 통신 - 수많은 라우터(징검다리) 거쳐(hop) 이동
3️⃣ 라우팅 테이블
- 송신지 → 수신지까지 도달하기 위해 사용
- 라우터에 들어가 있는 목적지 정보들 & 목적지로 가기 위한 방법이 들어있는 리스트
- 게이트웨이 & 모든 목적지에 대해 해당 목적지에 도달하기 위해 거쳐야 할 다음 라우터의 정보 가짐
→ 각 라우터는 지지도(Routing Table)를 가지고 있어, 패킷이 오면 "다음은 저쪽 라우터로 가라"고 안내
4️⃣ 게이트웨이
- 서로 다른 통신망, 프로토콜을 사용하는 네트워크 간의 통신을 가능하게 하는 관문 역할을 하는 컴퓨터 & 소프트웨어 두루 일컫는 말
- 즉, 톨게이트 역할

- 인터넷에 접속하기 위해 많은 게이트웨이 거쳐야 함
- 서로 다른 네트워크상의 통신 프로토콜을 변환해주는 역할도 함
5️⃣ 게이트웨이 확인 방법
- 라우팅 테이블 통해 확인 가능
- 명령 프롬프트 → `netstat -r`

- IPv4 경로 테이블 / IPv6 경로 테이블 → 라우팅 테이블
- 게이트웨이, 인터페이스 등 확인
✚) TTL (Time To Live)
- 패킷의 수명: 라우팅 경로가 꼬여서 패킷이 영원히 뱅뱅 도는 경우(Loop)
→ 이를 막기 위해 패킷에 TTL이라는 수명 존재 - 라우터를 하나 건널 때마다 TTL이 1씩 감소하며, 0이 되면 패킷은 폐기(Drop) 되고 출발지에 "시간 초과" 오류를 보냄
→ Ping 보낼 때 보이는 그 TTL
📌 IP 주소 체계
1️⃣ IPv4 / IPv6 비교

| IPv4 | IPv6 | |
| IP주소 표기 | 8비트 단위 | 16비트 단위 |
| 예 | 123.45.67.89 | 2001:db8::ff00:42:8329 |
| 전송 방식 | 유니/멀티/브로드캐스트 | 유니/멀티/애니캐스트 |
| 보안 | 별도 설치 | 기본 탑재 |
| 주소 길이 | 32비트 (약 43억 개) | 128비트 (사실상 무한) |
2️⃣ 클래스 기반 할당 방식 (IPv4 주소 체계)
- 클래스 기반 할당 방식 (Classful Addressing) [과거]
- A, B, C, D, E 다섯 개의 고정된 클래스로 구분
- 앞 부분 : `네트워크 주소` / 뒷 부분: `호스트 주소`
- 단점: 주소 낭비 심함 / 유연하게 관리 불가

- 클래스 A, B, C: 일대일 통신
- 클래스 D: 멀티캐스트 통신
- 클래스 E: 예비용
멀티캐스트 : 같은 데이터를 특정 그룹에게 전송

- 구분 비트 통해 클래스 간 IP 나눠짐
- 클래스 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
3️⃣ 네크워크 주소 & 브로드캐스트용 주소 (IPv4 주소 체계)
첫 번째 주소 :`네트워크 주소` / 마지막 주소 : `브로드캐스트용 주소`

예) 클래스 A → 12.0.0.0 네트워크 부여
- 호스트 주소: `12.0.0.1`~`12.255.255.254`
- `12.0.0.0` : 첫 번째 주소 → 네트워크 구별 주소 → 사용 ❌
- `12.255.255.255` : 마지막 주소 → 브로드캐스트용 주소 → 사용 ❌
→ 현 방식 : 사용 주소보다 버리는 주소가 많음
→ 해소 방법 : DHCP / IPv6 / NAT
✚) CIDR & Subnet Mask
- '클래스(A,B,C)' 방식 ❌
→ 현대 네트워크는 CIDR(Classless Inter-Domain Routing) 방식 사용

📌 DHCP
1️⃣ 정의
Dynamic Host Configuration Protocol
: IP 주소 및 기타 통신 매개변수를 자동으로 할당하기 위한 네트워크 관리 프로토콜
- "IP 주소 자동 할당기"
- 네트워크 장치의 IP 주소를 수동으로 설정할 필요 없이 인터넷에 접속할 때마다 자동으로 IP 주소 할당 (자동으로 IP, 서브넷 마스크, 게이트웨이, DNS 정보 받아옴)
- 많은 라우터와 게이트웨이 장비에 DHCP 기능이 있으며 이를 통해 대부분의 가정용 네트워크에서 IP 주소 할당
- 장점: IP 주소 관리가 편하고, 한정된 IP 주소 돌려 쓸 수 있음
✚) DORA 프로세스
DHCP가 IP를 빌려오는 과정은 DORA 4단계로 이루어짐
- `D`iscover: "DHCP 서버님 계신가요?" (클라이언트가 브로드캐스트)
- `O`ffer: "여기 남는 IP(192.168.0.10) 있어요." (서버가 제안)
- `R`equest: "그거 제가 쓸게요!" (클라이언트가 요청)
- `A`cknowledge: "네, 할당 완료했습니다." (서버가 승인)
📌 NAT
1️⃣ 정의
Network Address Translation
: 패킷이 라우팅 장치를 통해 전송되는 동안 패킷의 IP 주소 정보를 수정하여 IP 주소를 다른 주소로 매핑하는 방법
- IPv4 주소 체계만으로는 많은 주소들을 모두 감당하지 못하는 단점 존재
→ 이를 해결하기 위해 NAT로 공인 IP와 사설 IP로 나눠서 많은 주소를 처리 - "공인 IP 하나로 온 가족이 인터넷 쓰기"
- IP 주소 부족 문제를 해결하기 위해 사설 IP(집안용)를 공인 IP(인터넷용)로 변환해주는 기술
- NAT를 가능하게 하는 소프트웨어 : ICS, RRAS, Netfilter 등
2️⃣ 예시

- 가영 대리, 홍철 팀장 → 각각 다른 IP 가짐 → `사설 IP`
- NAT 장치 → 하나의 `공인 IP 121.165.151.200`으로 외부 인터넷에 요청
- 홍철 팀장과 가영 대리는 하나의 IP인 `121.165.151.200`을 기반으로 각각의 다른 IP를 가지는 것처럼 인터넷을 사용 가능
- NAT 장치를 통해 사설 IP → 공인 IP로 변환하거나 공인 IP → 사설 IP로 변환하는 데 쓰임
3️⃣ 공유기와 NAT
- NAT를 쓰는 이유 : 주로 여러 대의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함
예)
인터넷 회선 하나를 개통하고 인터넷 공유기를 달아서 여러 PC를 연결하여 사용할 수 있는데, 이것이 가능한 이유는 인터넷 공유기에 NAT 기능이 탑재되어 있기 때문입니다.
4️⃣ NAT를 이용한 보안
- NAT를 이용하면 내부 네트워크에서 사용하는 IP 주소와 외부에 드러나는 IP 주소를 다르게 유지할 수 있음
→ 내부 네트워크에 대한 어느 정도의 보안 가능
5️⃣ NAT의 단점
- 여러 명이 동시에 인터넷을 접속하게 되므로 실제로 접속하는 호스트 숫자에 따라 접속 속도가 느려질 수 있음
✚) PAT (Port Address Translation)
- 우리가 흔히 쓰는 '공유기'의 NAT는 정확히 말하면 NAPT (또는 PAT)
- 문제: 공인 IP는 하나인데, 내 컴퓨터와 동생 스마트폰이 동시에 네이버에 접속하면 응답을 누구에게 줘야 할까?
- 해결: 공유기는 포트 번호로 구분
- 내 컴퓨터 요청 → 공인IP: 1001번 포트로 변환
- 동생 폰 요청 → 공인IP: 1002번 포트로 변환
- 응답이 오면 포트 번호를 보고 주인에게 찾아줌
→ 이를 포트 포워딩 테이블이 관리
728x90
반응형
'✏️공부 > 💡Network' 카테고리의 다른 글
| [Network] 🔄MPA vs SPA 간단 비교 | 사용자 경험(UX)과 렌더링 전략 (0) | 2026.03.23 |
|---|---|
| [Network]Network Traffic & Addressing 🏰 | 유니캐스트, 멀티캐스트, 브로드캐스트, 애니캐스트 (1) | 2025.12.02 |
| [Message Broker] Kafka vs RabbitMQ 📮 | 메시지 브로커의 구조와 선택 기준 (0) | 2025.11.27 |
| [Sync/Async] 동기(Synchronous)/비동기(Asynchronous) | 블로킹(Blocking)/논블로킹(Non-Blocking) 정리 🚦 (0) | 2025.11.26 |
| [WebSocket] 웹소켓 정리 ↔️ | 개념, 특징, 작동방식, 장단점 등등 (0) | 2025.11.24 |