
사설망(Private Network)의 탄생
사설망이란?
인터넷과 독립된 로컬 네트워크로 사설 IP 대역을 이용하여 내부 장치에 주소를 할당함. 외부와 통신할 때에는 NAT 기술을 사용
WHY? 외부와 통신 직접할 수 없나요? 외부와 통신하기 위해서는 꼭 NAT 기술을 이용해야하나요?
사설 IP는 내부 네트워크에서만 유효한 주소이기 때문에 인터넷 환경에서는 사설 IP 주소를 인식하지 못하기 때문 !!
→ 사설 IP가 내부망에서만 유효한 이유
- 사설 IP는 중복이 가능하기 때문에 다른 네트워크에도 동일한 IP 존재할 수 있음 → 식별 불가능
- 인터넷 상의 라우터들은 RFC 1918에서 정의된 사설 IP 주소를 폐기(drop) 하도록 설계되어 있어서 사설 IP를 가진 장비가 직접 인터넷에 나가면, 중간 라우터들이 해당 패킷을 버리게 됨.
사설 IP 대역
10.0.0.0/8 (10.0.0.0 ~ 10.255.255.255)172.16.0.0/12 (172.16.0.0 ~ 172.31.255.255)192.168.0.0/16 (192.168.0.0 ~ 192.168.255.255)공인 IP 대역
이 외의 나머지 IPv4 주소는 대부분 공인 IP 주소
NAT(Network Address Translation) 란?
사설 IP만 가진 내부 네트워크가 공인 IP로 외부 인터넷과 통신할 수 있도록 IP 주소를 변환해주는 기술 사설 IP → 공인 IP
NAT 의 등장 배경
IPv4 주소 부족 문제로 인해 많은 장비가 하나의 공인 IP 를 공유해서 인터넷에 접속할 수 있는 기술이 필요해짐
NAT의 목적
NAT의 동작 원리
내 PC(사설 IP) → 웹서버에 요청 전송
NAT 라우터가 내 PC의 사설 IP를 공유기의 공인 IP로 변환
웹서버는 공유기의 공인 IP에서 요청을 받고, 해당 공인 IP로 응답을 반환함
라우터가 응답을 받아 내 PC의 사설 IP로 다시 변환하여 내 PC로 응답을 전달

공유기는 사설 IP와 공인 IP를 모두 가짐
통신 예시

목적지 IP가 로컬 네트워크가 아님을 확인
내부 네트워크가 아니므로 외부로 요청을 보내기 위해 라우터로 전달
ARP 프로토콜 사용
라우터로 패킷 전달

패킷 내부 정보인 소스 IP와 대상 IP는 패킷이 목적지에 도착할 때까지 변하지 않음. 홉을 지나면서 변경되는 데이터는 프레임 내부 정보인 대상 MAC 주소와 소스 MAC 주소
- 패킷이 외부로 나갈 때 NAT 사용
| 항목 | 변하기 전 (내부망) | 변한 후 (공인망 나갈 때) |
| --- | --- | --- |
| 소스 IP | 192.168.1.100 (사설 IP) | 203.0.113.5 (공인 IP) |
| 목적지 IP | 8.8.8.8 | 8.8.8.8 (그대로) |
| 소스 포트 | 43212 (랜덤 포트) | 53847 (NAT 장비가 변형) |
→ NAT 장비는 **내부 IP + 포트 <-> 외부 IP + 포트**를 매핑 테이블에 저장하여 응답이 다시 클라이언트로 돌아왔을 때, 매핑 테이블을 참조하여 전달함
HTTP 헤더(HTTP Header)란?
클라이언트와 서버가 요청/응답 시 서로에게 주고받는 HTTP 요청과 응답의 시작 부분에 위치하여 데이터 처리에 대한 규칙과 조건을 알려주는 메타데이터로 키-값 쌍 의 데이터
HTTP 헤더의 목적
Content-Type, Accept 등을 통해 어떤 형식의 데이터를 보냈고/받고 싶은지 전달Authorization, Cookie, Set-Cookie 등을 통해 인증 및 세션 관리User-Agent, Referer, Host 등을 통해 클라이언트의 환경 정보를 전달If-Modified-Since, Range 등으로 조건부 요청 가능Cache-Control, Expires로 캐시 사용 여부를 정의HTTP 헤더 종류
| 구분 | 예시 헤더 | 설명 |
|---|---|---|
| 요청 헤더 | Host, User-Agent, Accept, Authorization, Cookie | - 클라이언트 정보 및 요청 조건 |
| - 요청 헤더에는 메서드, 클라이언트의 OS, 브라우저 정보 등이 담깁니다. | ||
| 응답 헤더 | Content-Type, Set-Cookie, Cache-Control, ETag | - 서버 응답에 대한 부가 정보 |
| - 응답 헤더는 서버의 소프트웨어 정보 등이 담깁니다 | ||
| 일반 헤더 | Connection, Date, Upgrade | - 요청/응답 모두에 사용 가능 |
| - 요청한 URL, 요청메서드, 해당 자원을 요청할 때 해당자원의 출처를 나타내는 URL을 노출시킬지 말지를 정하는 보안정도가 설정되어있는 Referrer Policy 등이 들어갑니다. | ||
| 엔티티 헤더 | Content-Length, Content-Encoding, Content-Language | 전송되는 본문(Body)에 대한 설명 |