-
[Network] IP 주소 체계와 SubnetCS/Network 2021. 12. 11. 18:17
Network-layer의 Data plane에서는 무슨 일이 일어나는지 알아보자!
Network-layer의 역할
network-layer는 들어오는 패킷을 어떤 링크로 내보낼지 결정하는 역할을 한다. 이러한 기능을 라우터가 담당한다. 라우터는 들어오는 모든 IP 데이터그램의 헤더를 보고 어떤 output port로 내보낼지 결정하고 전송한다. 이를 Routing과 Forwarding이라고 말한다.
Routing & Forwarding
Routing(control plane)
라우팅은 출발지에서 도착지까지 패킷의 route(전체 경로)를 결정하는 역할을 한다. 라우팅은 네트워크 전역에서 일어나며, routing algorithm을 통해 이루어진다.
Control plane은 두가지 approach가 있다.
- Tranditional routing algorithms: 라우터 내에 구현되어 있음
- Software-define network(SDN): 원격 서버에 구현되어 있음
Forwarding(data plane)
포워딩은 라우터로 들어온 패킷을 적절한 아웃풋 링크로 보내는 역할을 한다. 포워딩은 라우터별로 일어나며, forwarding table을 사용하여 행해진다.
IP Address (IPv4)
IP address는 인터페이스를 식별하는 역할을 하고 유일한 32 bits 숫자로 이루어져 있다.
인터페이스: 호스트나 라우터와 링크를 연결해주는 역할
인터넷은 호스트와 호스트를 직접적으로 연결하는 것이 아니라 네트워크와 네트워크를 연결한다. 그런데 만약 다음과 같이 모든 호스트가 임의의 IP 주소를 가지고 있다면 어떻게 될까?
모든 호스트가 어떠한 규칙 없이 임의의 IP 주소를 가지고 있다면 라우터의 forwarding table에는 이를 통하는 모든 호스트의 IP 주소가 들어있어야 한다. 이렇게 될 경우 forwarding table의 크기가 너무 커져 불필요한 메모리 낭비와 검색하는 데에 많은 시간이 소비되어 비효율적인 라우팅 시스템이 될 것이다.
👉 이를 해결하기 위해 계층화된 주소 체계인 IP Prefix(Subnet mask)를 사용한다.
IP prefix(Subnet mask)를 사용하는 장점이 무엇이 있을까❔❔
1. 네트워크 확장성이 향상된다.
IP prefix를 사용할 경우 패킷을 특정 호스트로 보내기 위해 모든 호스트의 IP 주소를 저장하는 것이 아니라 위의 그림과 같이 prefix 정보만 저장해 특정 호스트가 있는 네트워크를 찾을 수 있다.
👉 즉, forwarding table이 작아져 메모리 낭비와 검색 시간을 최소화할 수 있다.
2. 새로운 호스트를 추가하기가 쉽다.
만약 이전처럼 라우터가 모든 호스트의 IP 주소를 가지고 있어야 된다면 새로운 호스트가 추가되었을 때 라우터의 forwarding table은 업데이트되어야 할 것이다.
하지만 IP prefix를 사용할 경우 호스트의 IP 주소는 네트워크의 prefix를 가지기 때문에 forwarding table을 수정할 필요가 없다.
Subnets
Subnet은 무엇인가?
IP 주소에서 네트워크 영역을 부분적으로 나눈 부분 네트워크를 말한다. Subnet을 사용함으로써 네트워크 성능을 향상할 수 있다.
IP 주소는 subnet part과 host part로 나눌 수 있다.
subnet part(=prefix): subnet을 구분하기 위함
host part: 같은 subnet 내의 호스트를 구분하기 위함
그럼 Prefix의 길이는 어떻게 정하는 것인가❔❔
Prefix의 길이를 정하는 방법으로는 Classful Addressing과 Classless Addressing이 있다.
Classful Addressing은 A, B, C, D, E 클래스로 IP 주소를 나누어 엄격하게 계층화된 구조를 가진다. A 클래스에는 2^24=16,777,216의 호스트를 가질 수 있고, C 클래스에는 2^8=64의 호스트를 가질 수 있다. 이렇게 고정된 prefix를 가지기 때문에 유동적이지 못하고 낭비되는 주소가 많아진다는 단점이 있다.
Classless Addressing은 prefix를 정해놓지 않고 네트워크 규모에 따라 IP 주소를 할당할 수 있는 방법이다. 위에서 말한 Subnet 컨셉을 사용한다. 이것을 Classless Inter-Domain Routing(CIDR)이라고 부른다.
'CS > Network' 카테고리의 다른 글
[Network] IPv6과 Tunneling (0) 2021.12.11 [Network] Dynamic Host Configuration Protocol(DHCP) (0) 2021.12.11 [Network] DNS 동작 원리 (0) 2021.09.29 [Network] HTTP vs HTTPS (0) 2021.09.29 [Network] TCP vs UDP (0) 2021.09.28