💡 오랜만에 포스트를 작성하는데 42 본과정 또는 개발하면서 network 관련해 배운 지식이나 정리가 필요한 내용들을 포스팅 해보도록 하겠당!~~
(== Network Address Translation, 네트워크 주소 변환)
컴퓨터 네트워킹에서 사용하는 용어
IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술을 말한다.
→ Network Address인 IP를 변환!
NAT를 사용 이유
- 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위해!
→ IP 주소 절약
- 라우터 외부로 트래픽이 나갈 때 호스트의 사설 IP가 공인 IP로 변환 되므로 호스트의 IP를 숨김
→ 보안
Private, Public IP
IP 주소에는 Public IP, Private IP가 존재
IPv4 주소 체계에서 주소의 낭비?를 막고 공인 인터넷을 굳이 사용하지 않아도 되는 단말(pc? host?)들에게 어느 망이든 중복 사용 가능한 IP를 주기 위함
공인 IP
- 전세계에서 유일한 IP 주소를 갖음
- 인터넷 사용자의 로컬 네트워크를 식별하기 위해 ISP(인터넷 서비스 공급자)가 제종하는 IP 주소
사설 IP
- 일반 가정이나 회사 내 등에 할당된 네트워크의 IP 주소
- 라우터에 의해 로컬 네트워크상의 PC 나 장치에 할당
공인 IP (Public IP) | 사설 IP (Private IP) |
---|
할당 주체 | ISP(인터넷 서비스 공급자) |
할당 대상 | 개인 또는 회사의 서버(라우터) |
고유성 | 인터넷 상에서 유일한 주소 |
공개 여부 | 내/외부 접근 가능. |
동작 원리
host: 우리가 사용하는 pc
gatewate: 공유기
google: host가 data를 요청한 server, destination
host에서 google에 접근하고자 할 때 host에서 요청하는 패킷은 당연하게 gateway를 거쳐서 internet 망으로 보내짐
host가 가지고 있는 ip는 private ip로 해당 ip로 google에 요청하면 host에게 다시 응답을 보내줄 수 X
그러므로 host의 private ip를 public ip로 변환하는 작업이 필요 → 해당 작업을 보통 gateway가 담당
- gateway는 public ip를 가지고 있어 응답을 요청한 host의 ip 주소를 임시로 저장하고 자신의 public ip로 google에게 응답을 요청
(gateway에서 google로 바로 응답이 직통하지는 X, 그 사이 routing 알고리즘을 통해 internet 망의 다양한 router를 거친 뒤에 google에 응답이 도착)
- google은 응답 결과를 gateway ip로 전송
- google의 응답을 받은 gateway는 아까 저장한 host의 ip를 불러와 host로 패킷을 전달
💡 같은 gateway에 연결된 여러 대의 호스트가 같은 목적지(google)와 통신하고자 할 때, google에서 받은 패킷이 어떤 host에서 요청한지 구분하기 위해 별도의 port를 설정 → **PAT or NAPT**
한계 및 단점
성능 저하와 delay 증가
- gateway는 각 IP 패킷의 헤더를 검사하고, 필요에 따라 IP 주소 및 port 번호를 변경하므로 리소스를 추가로 소모
- NAT 과정에서 host에서 보낸 패킷이 ip 변환과 함께 패킷에 변화가 생기므로 IP layer or TCP/UDP layer의 체크섬(checksum) 또한 다시 계산이 돼야하기 때문에 네트워크 성능에 영향을 미침!
복잡한 구성과 관리
- gateway에 연결된 host 수가 많아질 수록 매핑 정보를 저장하는 NAT table 관리가 복잡
Reference
[이해하기] NAT (Network Address Translation) - 네트워크 주소 변환 | STEVEN J. LEE