서버 엔지니어링 관점에서 본
네트워크 기초 완전 정리
IP는 네트워크에서 장치를 식별하는 논리적 주소이자, 데이터를 목적지까지 전달하는 규칙이다. OSI 7계층 중 3계층(네트워크 계층)에 해당하며, 데이터를 패킷 단위로 분할해 전송한다.
| 특성 | 설명 |
|---|---|
| 비연결성 | 매 패킷을 독립적으로 전송 — 경로가 매번 달라질 수 있음 |
| 비신뢰성 | 패킷 손실·순서 보장 없음 — 그건 TCP의 역할 |
| 주소 기반 라우팅 | IP 주소를 보고 다음 경유지(라우터)를 결정 |
컴퓨터에는 주소가 두 가지 있다. MAC 주소와 IP 주소다.
- 비유: 아파트 동호수
- 같은 네트워크 안에서만 유효
- 하드웨어에 고정
- 비유: 도로명 주소
- 인터넷 전체에서 유효
- 유동적으로 변경 가능
MAC 주소는 같은 건물 안에서만 통하지만, IP 주소는 전국 어디서도 찾아올 수 있는 주소다. 그래서 인터넷 통신에는 IP가 반드시 필요하다.
- IP 충돌(Duplicate IP) 발생 시 → 통신 장애
- Routing 문제 발생 시 → 특정 IP만 접속 불가
- 로그 분석 시 접속 IP = 사용자 추적의 핵심
IPv4 주소(32비트)를 첫 번째 옥텟(8비트)의 값 범위로 클래스를 구분한다.
| 클래스 | 첫 옥텟 범위 | 서브넷 마스크 | 호스트 수 | 설계 용도 |
|---|---|---|---|---|
| A | 1 ~ 126 | /8 | 약 1,670만 | 국가/대기업 |
| B | 128 ~ 191 | /16 | 약 65,534 | 대학/기관 |
| C | 192 ~ 223 | /24 | 254 | 일반 기업/가정 |
| D | 224 ~ 239 | — | — | 멀티캐스트 전용 |
| E | 240 ~ 255 | — | — | 연구/예약 |
127.0.0.1이 localhost인 이유처음 설계 당시의 논리는 단순했다. "큰 회사는 주소를 많이 줘야 하고, 작은 회사는 조금만 줘도 되겠지." 그런데 현실에서는 잘 맞지 않았다. 직원이 5,000명인 회사가 Class B를 받으면 65,534개 중 실제로 5,000개만 쓰고 나머지 60,000개 이상이 낭비된다. 그래서 현재는 Class 방식을 거의 사용하지 않고 CIDR 방식이 표준이 됐다.
- 현재는 Class 기반 설계 거의 사용 안 함
- 대신 CIDR 기반으로 필요한 만큼만 유연하게 할당
IPv4는 32비트 주소 체계로 약 43억 개의 주소만 제공한다. 스마트폰, IoT 기기, 서버 급증으로 2011년 IANA에서 IPv4 주소가 사실상 고갈됐다. IPv6는 이 문제를 근본적으로 해결하기 위해 등장했다.
| 항목 | IPv4 | IPv6 |
|---|---|---|
| 주소 길이 | 32비트 | 128비트 |
| 표기 방식 | 192.168.0.1 | 2001:db8::1 |
| 주소 개수 | 약 43억 | 3.4×10³⁸ (사실상 무한) |
| NAT 필요 여부 | 필요 | 거의 불필요 |
| 보안 | IPSec 선택적 | IPSec 기본 내장 |
| 브로드캐스트 | 있음 | 없음 (멀티캐스트로 대체) |
이사를 생각해보면 쉽다. 이삿짐만 옮기면 끝이 아니라 주소록도 바꾸고 공과금 주소도 바꾸고 온갖 곳에 새 주소를 등록해야 한다. 네트워크도 마찬가지다.
| 이유 | 설명 |
|---|---|
| 하위 호환 불가 | IPv4와 IPv6는 직접 통신 안 됨 — 변환 계층(듀얼스택, 터널링) 필요 |
| 인프라 교체 비용 | 라우터, 방화벽, 로드밸런서 등 전체 장비 업그레이드 필요 |
| NAT의 역설 | IPv4 부족을 NAT가 임시 해결해줘서 긴박감이 낮음 |
| 레거시 시스템 | 오래된 OS·임베디드 장비는 IPv6 미지원 |
- AWS, GCP 등 클라우드에서 IPv6 지원 점점 확대
- Kubernetes에서도 IPv6 지원 점진적 확장 중
| 항목 | Public IP | Private IP |
|---|---|---|
| 범위 | 전 세계 고유 | 로컬 네트워크 내에서만 유효 |
| 인터넷 직접 통신 | 가능 | 불가능 (NAT 필요) |
| 할당 주체 | IANA → ISP → 사용자 | 네트워크 관리자 자유 할당 |
| 중복 여부 | 전 세계 유일 | 다른 네트워크에서 중복 가능 |
| 이유 | 설명 |
|---|---|
| IPv4 주소 절약 | Public IP 1개 뒤에 수백 개 기기를 NAT로 연결 가능 |
| 보안 | 내부 기기가 인터넷에 직접 노출되지 않음 |
| 네트워크 격리 | 내부를 논리적으로 분리해 관리 용이 |
| 클래스 | 대역 | 범위 |
|---|---|---|
| A | 10.0.0.0/8 | 10.0.0.0 ~ 10.255.255.255 |
| B | 172.16.0.0/12 | 172.16.0.0 ~ 172.31.255.255 |
| C | 192.168.0.0/16 | 192.168.0.0 ~ 192.168.255.255 |
※ RFC 1918은 1996년 IETF(인터넷 표준화 기구)가 발표한 문서 번호다. "이 대역은 인터넷으로 내보내지 않을 주소로 지정한다"고 규정한 표준이고, 그 문서 번호가 이름처럼 굳어진 것이다. 날짜가 아니라 규약 번호다.
- 인터넷 → [Public] Load Balancer / Bastion Host
- → [Private] App Server / DB Server
집 안의 기기들은 모두 Private IP를 쓰지만, 인터넷에 나갈 때는 하나의 Public IP로 나가야 한다. 공유기가 이 변환을 담당하는 게 NAT다.
192.168.1.100
192.168.1.101
192.168.1.102
Private → Public 변환
Public IP: 1.2.3.4
세 기기가 모두 같은 Public IP로 나가지만, 공유기가 포트 번호로 구분해서 응답을 맞는 기기로 돌려준다. 이 기록표를 NAT 테이블이라고 한다.
| 클라우드 종류 | 역할 |
|---|---|
| Internet Gateway | VPC → 인터넷 직접 양방향 연결 |
| NAT Gateway | Private 서브넷 → 인터넷 단방향 출구 (들어오는 건 차단) |
IP 주소에서 어디까지가 네트워크 주소이고 어디서부터가 호스트 주소인지 구분하는 32비트 마스크다. 쉽게 말하면 "이 IP가 우리 동네인지 아닌지 판단하는 기준"이다.
| 상황 | 판단 | 동작 |
|---|---|---|
| 192.168.1.50 (앞 3자리 같음) | 같은 동네 | ARP로 직접 전달 |
| 8.8.8.8 (앞 3자리 다름) | 다른 동네 | Gateway로 전달 |
CIDR(Classless Inter-Domain Routing)은 Class 기반의 주소 낭비 문제를 해결하기 위해 1993년 등장했다. 피자로 비유하면, 8조각 또는 12조각으로만 팔던 걸 원하는 조각 수로 잘라주는 것이다.
→ Class B 받으면 65,534개
→ 60,000개 이상 낭비
→ /13으로 8,192개만 할당
→ 최소한의 낭비
| CIDR | 서브넷 마스크 | 전체 IP | 사용 가능 IP | 용도 |
|---|---|---|---|---|
| /8 | 255.0.0.0 | 16,777,216 | 16,777,214 | 대규모 네트워크 |
| /16 | 255.255.0.0 | 65,536 | 65,534 | VPC 전체 네트워크 |
| /24 | 255.255.255.0 | 256 | 254 | 일반 서브넷 |
| /30 | 255.255.255.252 | 4 | 2 | 라우터 간 P2P 링크 |
- VPC: 10.0.0.0/16 → 전체 네트워크
- 서브넷: 10.0.1.0/24 (AZ-a) / 10.0.2.0/24 (AZ-b) / 10.0.3.0/24 (AZ-c)
- AWS는 /24 기준 256 - 5(AWS 예약) = 251개 실제 사용 가능
| 이유 | 설명 |
|---|---|
| 브로드캐스트 감소 | 패킷이 불필요하게 모든 장치에 전파되는 것 방지 |
| 보안 격리 | 부서별·역할별 네트워크 논리 분리 |
| IP 효율적 사용 | 필요한 만큼만 할당 |
| 장애 범위 격리 | 문제를 서브넷 단위로 제한 |
10.0.1.0/24 · Public
10.0.2.0/24 · Private
10.0.3.0/24 · Private (엄격 격리)
DNS가 "도메인 → IP"를 찾아주는 거라면, ARP는 "IP → MAC 주소"를 찾아주는 프로토콜이다. 실제로 같은 네트워크 안에서 데이터를 전달할 때는 MAC 주소로 전달하기 때문에 필요하다.
→ 실제로는 얼굴을 봐야 알잖아요 (MAC = 얼굴)
→ "3반에서 김철수 누구야?" 하고 외침 (ARP 요청 — 브로드캐스트)
→ 김철수가 "저요!" 하고 손을 든다 (ARP 응답)
→ 이후 MAC 주소를 ARP 테이블에 저장 (캐시)
- 같은 IP에 두 기기가 응답 → IP 충돌 오류 발생
arp -a명령어로 현재 ARP 테이블 확인 가능
Gateway는 서로 다른 네트워크를 연결하는 출입구이자, 어디로 보낼지 판단하는 라우팅 역할도 한다. 아파트 단지에서 나가려면 반드시 정문을 통과해야 하는 것과 같다.
192.168.1.100
192.168.1.1
| 상황 | 동작 |
|---|---|
| 목적지가 같은 서브넷 | ARP로 직접 전달 |
| 목적지가 다른 서브넷 | Default Gateway로 전달 |
Gateway 설정이 없으면 컴퓨터 입장에서는 "정문이 어딘지 모르는 상태"다. 다른 네트워크로 나가는 길을 아예 모르니 인터넷 통신이 완전히 차단된다.
- 증상: "내부끼리는 되는데 인터넷이 안 돼요"
- 확인 명령어:
ip route또는route -n
Routing은 패킷이 목적지까지 가는 경로를 결정하는 것이다. 서울에서 부산까지 내비게이션이 최적 경로를 알려주듯, 라우터가 패킷의 다음 경유지를 결정한다.
(Gateway)
라우터
백본
서버
traceroute명령어로 실제 경유 라우터 확인 가능- 라우팅 설정 잘못 → 패킷이 목적지 못 찾고 루프 발생
상황: 서버에서 외부 API 호출이 안 됨 (결제 API, 지도 API 등)
컴퓨터는 IP 주소로만 통신하지만, 사람은 숫자를 기억하기 어렵다. DNS는 도메인 이름을 IP 주소로 변환하는 인터넷 전화번호부다.
| 레코드 | 역할 | 예시 |
|---|---|---|
| A | 도메인 → IPv4 | example.com → 1.2.3.4 |
| AAAA | 도메인 → IPv6 | example.com → 2001:db8::1 |
| CNAME | 도메인 → 다른 도메인 (별칭) | www → example.com |
| MX | 메일 서버 지정 | mail.example.com |
| TXT | 도메인 인증, SPF 등 | v=spf1 ... |
- 배포 후 "왜 아직 예전 주소로 접속되지?" → DNS TTL 캐시 때문
- 서버 이전 전 TTL 값을 미리 낮춰두면 전파 단축
- 어떤 PC는 되고 어떤 PC는 안 되는 이유 → 캐시 상태가 다르기 때문
- 확인 명령어:
nslookup,dig
브라우저에 naver.com을 입력하는 짧은 순간, 아래 모든 과정이 자동으로 동작한다.
| 증상 | 의심 원인 | 확인 방법 |
|---|---|---|
| 도메인 접속 안 됨 | DNS 문제 (미전파·TTL) | nslookup / dig |
| 내부 OK / 인터넷 안 됨 | Gateway 설정 오류 | ip route |
| 외부에서 서버 접근 불가 | NAT / 방화벽 오류 | Security Group 확인 |
| 내부 서버끼리 통신 불가 | Subnet 설정 오류 | 라우팅 테이블 확인 |
| IP 충돌 오류 | Duplicate IP (ARP) | arp -a |
| 특정 IP만 접속 불가 | Routing 문제 | traceroute |
상황: "서버 접속 안됨 / 인터넷 안됨 / API 호출 안됨" — 아래 순서대로 보면 대부분 문제를 잡는다.
nslookup google.com → IP 안 나오면 DNS 문제 해결: DNS 서버 변경 (8.8.8.8 등)ip route → default via 없으면 문제 해결: 기본 게이트웨이 설정traceroute 8.8.8.8 → 중간에서 끊기면 라우팅 문제 해결: 라우팅 테이블 수정iptables -t nat -L → MASQUERADE 규칙 존재 여부 해결: NAT 설정 추가, 클라우드면 NAT Gateway 확인ss -tuln → 포트 열려있는지, 방화벽 허용 여부 해결: 포트 열기, 방화벽 정책 수정, 포트포워딩 설정| 증상 | 의심 원인 |
|---|---|
| 도메인 안됨 | DNS |
| 인터넷 안됨 | Gateway |
| 특정만 안됨 | Routing |
| 외부 호출 안됨 | NAT |
| 외부 접속 안됨 | 포트 / 방화벽 |
외부에서 들어온 요청을 내부의 특정 기기로 전달해주는 설정이다. 공유기는 Public IP 하나로 내부 기기를 여러 개 감추고 있는데, 외부 요청이 들어왔을 때 "이 포트는 내부 이 기기로 넘겨라"고 지정하는 게 포트포워딩이다.
1.2.3.4:80
포트포워딩 규칙 확인
192.168.1.100:80
상황: 외부에서 집/회사 서버 접속 안 됨 (웹서버, NAS, CCTV 등)
| 구분 | 라우팅 테이블 | 포트포워딩 |
|---|---|---|
| 방향 | 내부 → 외부 | 외부 → 내부 |
| 문제 | 밖으로 못 나감 | 안으로 못 들어옴 |
| 원인 | 경로 없음 | 전달 대상 없음 |
| 해결 | Gateway 설정 | 포트포워딩 설정 |
핵심 한 줄 요약
'IT공부' 카테고리의 다른 글
| Storage 완전 정리 - HDD부터 3D NAND, 서버 스토리지 아키텍처까지 (0) | 2026.05.07 |
|---|---|
| CPU가 사용할 데이터를 임시로 저장하는 고속 메모리 — 구조부터 서버 RAM까지 (0) | 2026.05.07 |
| CPU 핵심 구조 완전 정리 (0) | 2026.05.07 |
| 메인보드(Mainboard)란? — 컴퓨터의 핵심 회로 기판 완전 정리 (0) | 2026.05.01 |
| HTML 테이블 caption — 표에 제목 붙이기 완전 정리 (0) | 2026.05.01 |
댓글