• 애플리케이션 레이어 (Message)

    • HTTP, DNS

  • 트랜스포트 레이어 (Segment = header + data(Message))

    • TCP / UDP

  • 네트워크 레이어
    • IP
현재 IP 주소는 32비트를 사용하되, prefix 부분은 유연하게 조절이 가능하다. 

서브넷(Subnets)
서브넷이란, 같은 서브넷 아이디 그리고 같은 prefix 를 가진 디바이스의 집합 (동일한 인터페이스를 가진 상태). 서브넷을 또 다른 말로 정의한다면 라우터를 거치지 않고 접근이 가능한 호스트들의 집합이다.

라우터가 IP 주소를 가지는가? 당연히 가진다. 왜냐하면 인터페이스가 존재하기 때문이다. 그리고 인터페이스 개수만큼 IP 를 가지기 때문에 라우터는 다수의 IP 주소를 가질 수 있다. 라우터의 IP 주소가 같은 집합 내에 속하는지 확인하기 위해서는 라우터의 prefix 를 확인해야 한다. 이 prefix 가 같은 지 혹은 다른 지 확인해야 한다. 라우터는 하나의 서브넷에 속한 것이 아닌 여러 개의 서브넷에 걸쳐 있는 교집합 모습을 띄고 있다. 

IP 주소, 현재 우리가 사용하고 있는 IPv4 주소는 32비트를 사용하지만 앞의 prefix 는 네트워크 부이며 이후 비트는 호스트 부이다. 여기서 32비트라는 공간의 의미는 이론상으로 호스트를 최대 2^32개를 지원가능하다고 한다. 대략 40억개의 호스트를 지원할 수 있다. 하지만 이후 인터넷이 발달하면서 향후 몇년 내에 지원 호스트가 없을 수도 있기에 이에 대해서 나온 대안이 IPv6이다. 그리고 이 IPv6는 주소공간을 128비트로 늘렸다. 2^128개의 호스트를 이론상으로 지원이 가능하다. 

하지만 현재 2018년 IPv4 프로토콜을 여전히 사용하고 있다. 주소 공간은 고정되어 있는 반면에 사용자는 계속 늘어나는 상황이다. 따라서 약 40억개의 자원을 공유하면서 이용하고 있다. 그리고 이러한 해결? 혹은 트릭을 NAT 라고 부른다.

NAT (Network Address Translation)
인터넷상에서 데이터를 주고 받기 위해서는 고유한 IP 주소를 가지고 있어야 하지만, 고유한 주소 공간을 가지기엔 주소 공간이 현저하게 부족하다. 네트워크 상에서는 유일한 IP 주소를 사용하지만, IP 주소를 가진 패킷이 외부로 함부로 나가지 못한다. 그리고 이러한 패킷이 외부로 나가기 위해서는 NAT 라우터를 이용한다. 그리고 해당 내부에서의 패킷을 외부 IP 패킷으로 변환해서 보낸다.



오른쪽에서의 IP 주소는 내부에서만 사용이 가능하다. 그리고 해당 내부의 패킷 IP 는 외부로 나가면서 IP 주소와 포트번호를 변경하면서 나간다. 포트도 변경되는 이유는 외부로 보낸 패킷이 다시 돌아오는 경우, 기존 출발지의 호스트로 찾아가기 위함이다. 로컬 네트워크에서의 IP는 동일한 것은 분명하지만 해당 내부 네트워크에서 특정 호스트에게 가기위해선 특정한 포트번호가 필요하다. 


따라서 NAT 를 이용하게 되면 IP 주소를 재사용이 가능하다. 여기서 NAT 는 무엇이 문제냐하면 IP 패킷의 헤더 + 데이터로 이루어진 부분을 상기하자. 라우터에서 나갈 때 패킷의 일정 부분을 수정한다. source IP 를 변경하고 source Port number 또한 변경시킨다. 라우터는 네트워크 디바이스인데, 패킷의 헤더만 바라보아야 한다. 예시를 들면 우편 배달부가 편지봉투의 우편번호를 바꾸는 것은 물론 내용도 바꾸는 것이다. 이것은 Layer violation 이다. 해당 레이어에 대한 처리만 해야하는 것인데 헤더 정보를 바꾸는 것도 모잘라 데이터의 정보도 바꾸는 것이다. 또 다른 문제는 원래 


또 다른 문제

IP 주소는 인터페이스를 찾기 위함, 포트 번호는 해당 인터페이스 내부의 프로세스를 찾기 위함인데, 포트 번호를 호스트 찾는데 써버렸다. NAT 를 사용하는 네트워크 내부에서 서버를 운영할 수 있는가 ? 할 수 없다. NAT 를 사용하는 네트워크에서는 서버를 사용하지 못한다.


NAT 환경에서는 왜 서버를 사용할 수 없는가 생각하기.

사용한다면 어떻게 전개될 것인가에 대해서 생각하기.


[ 생각 및 답변 ]

NAT 환경에서 로컬 네트워크의 패킷을 외부로 보낸다고 가정한다면, IP 주소는 바꾸는 것은 물론이고 포트 번호까지 변경한다. 여기서 전송은 해당 공인 IP 주소로 straight 로 바로 가지만 반면에 서버가 NAT 를 통해서 응답받는 로컬 네트워크에 환경에 존재한다면 유일한 IP 주소가 존재하지 않기에 라우터에 따라서 서버의 IP는 유동적으로 변할 수 밖에 없다. 따라서 적절치 않다.

 

정리 )

  • 서브넷이란
  • NAT 란
  • NAT 가 가진 문제점 두 가지 설명
  • NAT 환경에서 서버 사용의 문제점


Posted by doubler
,