서브넷

서브넷이란 같은 prefix 를 가진 디바이스의 집합이다. 이는 동일한 인터페이스를 가지고 있음을 이야기한다. 또한 서브넷을 다른 말로 정의한다면 라우터를 거치지 않고 접근이 가능한 호스트들의 집합이다. 


라우터와 IP주소

라우터는 IP 주소를 가진다. 왜냐하면 라우터에도 인터페이스가 존재하기 때문이다. 그리고 네트워크 인터페이스의 개수만큼 IP를 가지기 때문에 라우터는 여러개의 IP주소를 가질 수 있다. 라우터의 IP주소가 같은 집합 내에 속하는지 확인하기 위해서는 라우터의 preifx 를 확인해야 한다. 라우터는 하나의 서브넷에 속한 것이 아닌 여러 개의 서브넛에 걸쳐있는 교집합의 형태이다. IP 주소는 현재 우리가 사용하는 IPv4 형식이다. IPv4는 32비트를 사용하며 여기에는 네트워크부와 호스트부로 나뉘어져있다. 그리고 네트워크부가 prefix 이다. 하지만 인터넷의 발달로 더이상 32비트 IP 주소를 사용하기에는 어렵고 NAT 라는 트릭을 통해 IP 부족현상을 해결하고 있다.


NAT

Network Address Translation 의 준말이다. 인터넷상에서 데이터를 주고받기 위해서는 고유한 IP 주소를 가지고 있어야 하지만, 고유한 주소 공간을 가지기 위해서는 IP 주소의 개수가 부족하다. 따라서 데이터를 주고받기 위해 NAT 라우터를 이용한다. 내부의 패킷을 외부 IP 패킷으로 변환해서 보내는 것이다. 외부 IP 패킷으로 변환되면서 나갈때 IP 주소와 포트번호를 변경해서 나간다. 포트도 변경하는 이유는 외부로 보낸 패킷이 다시 돌아오는 경우 기존 출발지의 호스트로 찾아가기 위함이다. 로컬 네트워크에서의 IP는 동일한 것은 분명하지만 내부 네트워크의 특정 호스트로 가기위해서는 포트번호가 필요하다.


NAT 가 가진 문제점

결국 NAT 를 사용하게 되면 IP 주소의 재사용이 가능하다. 여기서 문제가 하나 발생한다. 라우터는 네트워크 레이어의 기능까지만 수행한다. 하지만 내부 네트워크의 패킷이 외부로 나가는 경우 패킷의 헤더인 IP와 데이터안의 포트번호 또한 변경시킨다. 트랜스포트 기능까지 수행하고 있는 것이다. 이를 Layer Violation 이라 부른다. 그리고 또 다른 문제가 더 발생한다. IP 주소는 네트워크 인터페이스를 찾기위해 쓰여지고, 포트번호는 해당 인터페이스 내부의 프로세스를 찾기위해 쓰여진다. 하지만 포트번호를 내부 네트워크의 호스트를 찾는데 쓴다고 하면 네트워크 내부의 서버를 사용하지 못한다.


Static NAT

패킷 헤더의 Destination Address 와 Source Address 가 변경된다. 외부 네트워크는 공인 IP (Public IP) 를 가지고 있다. 하지만 내부 네트워크는 사설 IP (Private IP) 를 가지고 있다. 이 상태에서 내부에서 외부로 패킷이 나가는 경우에는 Source Address 가 변경된다. 그리고 외부에서 내부로 패킷이 들어오는 경우 Destination Address 가 변경된다. 일반적으로 라우터 혹은 방화벽에서 수행된다. 하지만 NAT 가 공인 IP 부족을 해결하고자 할 때 static NAT 는 공인 IP 와 사설 IP 수를 1 : 1 매칭시키기 때문에 IP 부족 현상을 제대로 해결해주지 못한다.


Dynamic NAT

Static NAT 에 비해서 IP 매칭이 1 : 1이 아니다. 여러 사설 IP 주소와 공인 IP 주소를 동적으로 매칭시킨다. 공인 IP : 사설 IP 의 매칭은 A : B 라고 하였을 때, A < B 로 B의 개수가 더 많다. 이렇게 되어야만 공인 IP 가 절약되기 때문이다. 


PAT

Port Address Translation 의 준말이다. Dynamic NAT 에서 만일 내부망의 디바이스가 50대이고 NAT 라우터의 공인 IP 주소 풀에 5개가 존재한다고 가정한다면, PC가 아무리 많아도 최대 5대의 디바이스만 외부와 통신이 가능하다. 이 문제점에 나온 대안이 바로 PAT 이다. 하나의 공인 IP를 다수의 사설IP가 포트번호로 구분하여 주소를 매핑시키는 방식이다.


Posted by doubler
,