이 글은 부산대학교 탁성우 교수님의 컴퓨터 네트워크 강의 자료를 바탕으로 진행됩니다.
이번 시간에는 IP에 관해서 좀 더 심도있게 다뤄보자.
Kind of IP
우리가 흔히 사용하는 IP에도 여러가지 종류가 있다.
원래 IP를 할당할 때에는 아래와 같이 A부터 E까지 Class 별로 할당을 한다.
하지만 오늘 다룰 것은 Class가 아닌, 그 안에서도 특별한 IP를 다뤄보려 한다.
Broadcast IP
앞서 살펴보았던 ARP에서 매우 유용하게 사용했던 Broadcast IP이다.
255.255.255.255로 요청을 보내게 되면, 이는 같은 LAN 내의 모두에게 요청이 보내진다.
Loopback IP
127.XX.XX.XX
에 해당하는 매우 특이한 IP이며, Localhost IP라고도 불린다.
보통은 127.0.0.XX
의 대역을 지원하며, 127.0.0.1
만을 지원하는 OS도 있다.
이 IP가 Localhost IP라고도 불리는 이유는, IP가 곧 자기 자신을 의미하기 때문이다.
해당 IP로 보낸 Packet은 외부로 나가지 않으며, 내 IP로 다시 돌아오게 된다.
간단한 예를 들어보면, 혼자서 간단한 웹페이지를 만들었다고 생각해보자.
그 때 테스트를 하기 위해서 내 IDE에서 실행을 시켜보면, localhost:8080 으로 요청이 간다.
이 때 Localhost의 IP를 보면 127.0.0.1
임을 알 수 있다.
즉, Client와 Server가 같은 내 System일 때, Test를 하는 용도로 사용할 수가 있다는 것이다.
또 하나의 재밌는 예로는, 나를 해킹해보겠다는 사람에게 내 IP를 던져주는 예시가 있다.
IP를 주면 해킹을 해보겠다는 사람에게 127.0.0.1
의 IP를 던져주자.
그럼 자폭을 하게되는 모습을 볼 수 있을 것이다.
Private & Public IP
한국말로는 사설 IP와 공인 IP라고 부른다.
- Private IP : 나만 쓸 수 있는 IP로, Unique하지 않으며 언제든 변경될 수 있다.
- 변경 뿐만 아니라 다른 네트워크에 중복되는 IP가 존재할 수 있다.
- 대역
10.XX.XX.XX ~ 10.255.255.255/8
172.16.0.0 ~ 172.31.255.255/12
192.168.0.0 ~ 192.168.255.255/16
- 여기서 각
/
뒤의 숫자는 서브넷 마스크를 의미한다.- 8 : 1111 1111.0.0.0 => 255.0.0.0
- 12 : 1111 1111.1111 0000.0.0 => 255.240.0.0
- 16 : 1111 1111 1111.0.0 => 255.255.0.0
- Public IP : 전세계에 공개되는 IP로, Unique하며 변경되지 않는다.
- 당연히 Unique하므로 중복이 될 수는 없다.
- 대역
- Public IP = Whole IP - (Private IP + Loopback IP + Broadcast IP)
NAT
NAT(Network Address Translation)이란 무엇일까?
이름을 풀이해보면 네트워크 주소 해석 이라는 의미이다.
위에서 얘기했던 사설 IP와 공인 IP가 따로 있기 때문에 등장한 방식이다.
기본적인 동작은, Packet에 기록되는 목적지 IP와 Port를 도착 시 재기록 하는 것이다.
그리고 사용하는 이유를 알고 있어야 이해할 수 있다. 이유는 아래와 같다.
- IPv4 주소 할당 수의 제한
- 공인 IP로 모든 가구의 모든 기기에 IP를 할당하기에는 수의 제한이 있다.
- 따라서 중복 가능하고, 가구마다 할당 가능하도록 사설 IP를 만드는 것이다.
- 보안
- 외부에서는 공인 IP로만 통신하는 것처럼 보이므로, 사설 IP를 알 수 없다.
- 따라서
자세한 동작은 아래의 그림과 같다.
NAT는 보안적인 측면에서도 용이하다고 했는데, 그래서 외부 IP는 접근이 불가능하다.
NAT Table에 기록을 하는 것은, 외부 IP와 통신을 위한 터널을 개통하는 것과 같다.
아래와 같은 특성과 형식을 가진다.
- DB Table과 유사하게 Primary Key를 가진다.
- Primary Key로 직접 정의하는 임시 Port를 사용한다.
- 해당 임시 Port는
1 ~ 65535
까지 할당이 가능하다.
- 내부에서 나갈 때 Table에 기록을 하는 것이 원칙이다.
- 들어오는 요청에 대해서 Table을 보고 IP와 Port를 재기록한다.
- 이 때, Port를 내 임의로 직접 매핑하는 것을 Port Forwarding 이라고 한다!
Bonus : VPN
현재 전 세계적으로 많이 사용되고 있는 VPN(Virtual Private Network)이란 무엇일까?
우리는 위에서 Private IP와 Public IP에 대해서 얘기를 했었다.
VPN이란 말 그대로 Public IP를 가상의 Private IP처럼 보이게 만드는 것이다.
그 말인 즉슨, 사실은 Public IP 이지만, Private IP 처럼 보일 뿐인 방식이다.
원래라면 ISP(Internet Service Provider, 통신사) 측에서, 우리가 뭘하는지 알 수 있다.
하지만 VPN 서버에 연결을 한 뒤 가상 사설망을 이용하게 되면, 외부에서는 뭘 하는지 볼 수 없다!
이런 방식을 터널로 연결을 한 듯하다고 하여 Tunneling 이라고 부른다.
ISP 측에서는, 우리가 VPN을 사용한다는 사실은 알 수 있으나
정확히 무엇을 하고 있는지, 어디로 연결 중인지는 전혀 알 수가 없게 된다.
VPN을 사용하게 된 상태의 Packet은 아래와 같은 모습이다.
원래의 Packet을 Payload로 넣고, 추가로 IP를 감싸게 된 모습이다.