◾️ 네트워크 망
- 통신망
- 노드들과 이들 노드들을 연결하는 링크들로 구성된 하나의 시스템
- 노드란, IP로 식별할 수 있는 대상
- 링크란, 물리적인 회선(인터넷 케이블, UTP ..)
하나의 서브넷을 망이라고 표현해볼 것이다.
내부망이 존재한다고 할 때 각각의 서버(인스턴스)들은 어떻게 통신을 할 수 있는걸까?
아래처럼 **L2 Switch(Multiple Access를 위한 장비)**를 통해서 각 내부 서버들끼리 통신을 할 수 있다.
AWS의 경우 가상으로 L2 switch가 구성되어 내부 vpc 망 서버들끼리 통신이 가능하다.
또한 서버(인스턴스)마다 Network Interface Card(NIC)가 존재하는데
해당 NIC에는 Mac address라는 주소가 존재한다.
(*3c:22:fb:78:4a:c0 : 앞 6자리는 제조사, 뒤는 식별자)
장비마다 물리적인 주소(Mac address)가 존재하고 그 장비의 논리적인 주소인 IP를 할당하는 개념인 것이다.
만약 가장 좌측에 있는 192.168.0.1의 장비가 가장 우측에 있는 192.168.0.3 장비와 통신하려면 어디로 요청을 보내야할까?
연결되어있는 L2 스위치로 요청을 보내면 된다.
그렇다면 L2 스위치는 요청받은 패킷을 어떠한 방식으로 전달하는 걸까?
L2 스위치의 경우 맥 테이블이 존재하는데 해당 맥 테이블에 목적지 서버의 Mac 주소가 존재하는 경우 Forwarding해서 정보를 전달한다.
그러나, 맥 테이블에 mac 주소가 존재하지 않는 경우 Flooding을 한다.
예를 들어서, 35라는 맥주소를 가진 서버로 패킷을 전달해야하는 경우, 맥 테이블에 35라는 맥 주소가 기록되어 있다면 Forwarding하여 해당 패킷을 전달하게 되고,
기록되어있지 않다면, 패킷이 들어온 포트를 제외한 나머지 모든 포트에 브로드캐스트(ARP,Address Resolution Protocol)을 보내고 응답을 받으면 맥 테이블에 해당 맥주소를 기록한다.
그 다음부터는 Forwarding으로 유니캐스트 방식을 사용하여 통신을 하게 되는 것이다.
하지만 위와 같은 방식은 내부 망에서만 가능하다.
아래 망의 경우 192.168.0.0/26 대역으로 망을 구성을 했다.
L2 스위치는 맥 주소와 포트 정보만으로 요청을 전달하기 때문에 다른 망에 있는 서버에 전달할 수가 없다.
위 사진처럼 192.168.0.0/26 대역의 경우 192.168.0.0 ~ 192.168.0.63의 IP를 가진 대역들간만 통신이 가능하고 그 외의 대역들에는 통신이 불가능하다.
그렇다면 다른 망에 있는 서버에 요청을 보내려면 어떻게 해야할까?
이 때 활용하는 장비가 바로 라우터(Router)이다.
라우터는 서로 다른 네트워크 간의 통신을 중계한다.
라우팅 프로토콜(OSPF,RIP ..)을 활용하여 최종 목적지로 가기 위해 어디로 패킷을 보내는 것이 최적의 경로인지 학습한다.
그리고 라우터의 경우 이런 통신 방식들이 존재하는데
예를 들어, 라우팅 테이블에 192.168.0.64/26 대역이 존재한다고 할 때 192.168.0.100 서버와 통신 요청이 들어오면 Forwarding 해서 전달하게 된다.
만약 라우팅 테이블에 기록되지 않은 대역으로 요청이 들어온 경우 해당 패킷을 Drop 시키게 된다.
그렇다면 망 밖의 서버들과 통신하기 위해서는 어떻게 해야할까?
가령 google.com(8.8.8.8)에 요청을 보내려면, 요청자 또한 공인 IP(Public IP)가 필요하다.
192.168.0.x, 10.0.x.x 등의 대역은 private ip이다.
라우터는 private ip가 목적지일 경우 인터넷 구간으로 보내지 않도록 설정되어 있다.
그리고 공인 IP가 존재하더라도 라우팅 정책이 수립되어 있지 않다면 어디로 패킷을 보내야하는지 라우터는 알 길이 없다.
그렇기 때문에 라우터에서 전체 대역대(0.0.0.0/24)에 대해서는 internet gateway로 요청을 전달하도록 정책(default gateway)을 추가해야 한다.
(내부망을 제외한 나머지 대역들에 대해서(라우팅 테이블에 기록되지 않은 대역)는 모두 internet gateway로 전달)
추가적으로 내부망에서도 라이브러리 설치 등을 위해 인터넷 구간에 연결이 필요한 경우가 꽤 있다.
인터넷 -> 내부망 접근은 안되어야 하고, 내부망 -> 인터넷 접근이 가능하도록 하려면 어떻게 해야할까?
이런 경우에는 NAT(Network Address Translation) 라는 기술을 활용하여 내부 서버 주소를 Public IP로 변환하면 된다.
따라서, NAT 장비는 인터넷 구간과 통신이 가능한 외부망에 존재하여야 한다.
Gateway 란?
서로 다른 통신망 혹은 프로토콜 간 네트워크 통신을 가능하게 하는 구성요소이다.
내부망과 인터넷망간에 통신을 할 때는 서로 다른 통신망이므로 gateway가 이를 중계하여야 한다.