AWS만이 아닌 다른 IT 관련 네트워크 구성에서 빠지지 않는 단어가 있다.
바로 Subnet이다.
그렇다면 이 Subnet이 뭔지 금일 파헤쳐보도록 하자.
우선 Subnet을 알기 전에 IP 주소가 무엇인지부터 짚고 넘어가자.
IP는 Internet Protocol의 약어로 말그대로 인터넷 통신 규약이다.
더 정확하게 얘기하자면, 패킷 교환 네트워크(인터넷)에서 데이터를 주고받을 때의 통신 규약이다.
OSI계층에서 IP계층은 호스트의 주소지정과 패킷분할 및 조립 기능을 담당한다.
IP Address(Internet Protocol Address)
우리는 택배, 우편을 보낼때 항상 도착 주소를 명시해야한다. 그렇지 않으면, 받는 사람이 누구인지 어디인지 알수 없기 때문에 명시해야 하는데, 그래야 그 편지는 우리가 원하는 목적지에 잘 전달될 것이다. 그리고 보낸 곳이 어딘지 정확히 명시해 주어야 받는 사람이 알 수 있을 것이다.
컴퓨터에서도 마찬가지 이다. 각기 떨어져 있는 컴퓨터들이 다른 컴퓨터로 데이터를 전송하고 주고받기 위해서는 각 컴퓨터들의 주소가 존재해야 한다. 그래야 내가 어떤 데이터를 전송할 때 그 데이터의 최종 목적지를 알 수 있기 때문이다. 그래서 네트워크(인터넷) 상에서 데이터를 주고받기 위해 모든 컴퓨터들은 각자의 주소를 가지는데 그 주소가 IP 주소(IP Address)이다.
그렇다면 이 IP 채계는 두가지로 나뉜다.
첫째로 IPv4
현재 우리가 일반적으로 사용하는 주소는 IPv4라고 보면 된다. 이 주소는 32비트로 이루어져 있으며, 8비트씩 4개의 구간으로 나누어서 나타낸다. 각 자릿수는 0~255(2^8)의 범위로 표현이 가능하다. 따라서 이론적으로 42억 9496만 7296개의 IP가 존재한다. 하지만 일부 IP주소들은 특별한 용도를 위해 예약되어 있어서 실질적으로는 더 적은 수의 IP 주소만 사용할 수 있다고 생각하면 되겠다.
하지만, 이 IPv4도 처음에 고안됐을때는 충분한 갯수라고 예상했지만, 지금은 무수히 많은곳, 또 무수히 많은 기기들이 인터넷과 연결되어 있어서 IPv4의 개수로도 부족하여 고안된것이 IPv6이다.
먼저 IPv4의 옥탯이라는 개념이 있다.
먼저 사전적인 의미로는 컴퓨터에서 8개의 비트가 한데 모인 것을 말한다. 초기 컴퓨터에서는 1바이트가 꼭 8비트만을 표현하지는 않았기 때문에 옥텟이라는 용어를 생성하게 되었다.
Pv4 주소에서의 옥텟이라는 말의 의미는 32비트의 IP 주소를 8비트로 나누는 단위라고 할수 있다. IP 주소는 32비트로 이루어져 있고, 그것을 옥텟(Octet)단위로 끊어서 표현한다. 각 옥텟은 10진수로 0~255의 값을 가지게 된다. 그리고 나누어진 옥텟을 마침표(.)단위로 나누어서 표기하는 것이다.
IPv4 주소는 총 32비트로 이루어져 있는데 4구간으로 나누어서 사용된다. 그래서 8비트씩 4구간으로 나누어서 사용하게 되는데 8비트씩 나누어진 것을 옥텟이라고 한다.
위 그림을 보면 알 수 있다. 실제로 IP 주소는 컴퓨터에 저장 될 때 비트 단위로 저장되어 있을 것이다. 그것을 옥텟 단위로 구분하여 10진수의 정수로 표현하고 각 옥텟사이를 마침표(.)로 구분해 주면 우리가 일상적으로 사용하는 IPv4 주소가 된다.
왜 이렇게 옥텟단위로 나눠서 10진수로 표시하는 것일까? 그 이유는 사람이 보기 편하게 다루기 위해서이다. 사람이 비트를 일일히 보고 다루는 것은 정말 무식하고 어려운 일이다. 따라서 우리는 개발의 편의성을 위하여 몇개의 수를 사람이 보기쉬운 10진수로 표현한 것이다.
다음으로는 IPv6에 대해서 자세히 알아보도록 하겠다.
위에서 보여준 IPv4가 현재 가장 많이 사용되고 있다. 하지만 이 주소체계로는 약 42억개의 주소만을 표현할 수 있다. 현재 전 세계 인구수는 2017년 기준으로 74억명에 이른다고 한다. 그렇다면 컴퓨터가 굉장히 보편화된 지금의 상황에서 한 명당 하나의 컴퓨터에 IP만 부여해도 그 IP의 수는 현저히 부족하게 된다. 따라서 당연히 현재 IPv4방식의 IP주소는 고갈되었다.
물론 이런 부족한 IP주소를 더 많은 컴퓨터에서 사용할 수 있도록하는 기술은 다양하게 존재한다.(유동 IP, 서브넷 마스크 등) 하지만 이런 것들도 언젠가는 한계가 있을 것이다. 따라서 사람들은 더 풍족한 IP주소를 원하게 되고 이는 곧 IPv6의 탄생의 배경이 된다.
IPv4에서 32비트를 사용했다면, IPv6에서는 128비트로 확장하였다. 32비트의 주소체계로 표현할 수 있는 IP주소의 수는 약 42억개 였다면 IPv6는 2의128제곱개의 IP주소를 표현할 수 있고 이를 계산하보면, 340,282,366,920,938,463,463,374,607,431,768,211,456개라고 한다. 읽어내기 조차 힘든 엄청난 수이다. 내가 죽기 전까지 이 주소가 고갈되는 것은 볼 수 없을 것 같다.
IPv4를 옥텟단위로 4등분하여 표기하였다면, IPv6는 2옥텟(16비트) 단위로 8등분하여 표기한다. 따라서 각 자리는 네자리의 16진수로 표현되고, 각 자릿수들은 콜론(:)으로 구분하여 표기한다.
2001:0db8:85a3:08d3:1319:8a2e:0370:7334
위 형식으로 표현될 수 있다.
다음으로는 네트워크 클래스에 대해서 얘기 하겠다.
네트워크 클래스 등장배경
먼저 IPv4는 32비트로 이루어져 있다. 따라서 2^32, 약 40억개의 주소를 가진다. 처음에 IP주소를 설계할 때는 40억개 정도면 충분히 전인류가 사용할 수 있을줄 알았다. 하지만 사용하다보니 턱없이 부족한 수라는 것을 알게 되었다.
우리가 개인적으로 가지고 있는 기기의 종류만해도, 노트북, 스마트폰, PC 등이 있다. 전세계 인구가 대략 75억명 이라고 하는데, 각자 스마트폰 하나씩에 IP주소 하나씩만 부여해도 IPv4의 주소체계로는 개별적으로 부여할 수 없다.
물론 현재 IPv4 환경에서 우리는 기기하나당 IP주소를 하나씩 부여하지는 않지만, 애초에 충분한 IP주소가 존재했다면 기기마다 IP주소를 부여하여 네트워크 환경구축을 쉽게 할 수 있었을 것이다. 최근에는 스마트폰에 내부적으로 새로운 IPv6체계의 IP주소를 부여하고 있고(핫스팟 기능을 사용할 수 있다는 것은 공인IP가 존재한다는 것이다.), 전반적으로 IPv6환경으로 천천히 넘어가고 있는 추세이다.
하지만 우리는 IPv4를 사용해 왔기 때문에 이미 인프라가 IPv4환경으로 구축되어 있다. 따라서 이미 구성된 인프라를 최대한 활용하기 위해서 IPv4체계의 IP주소를 사용하는 네트워크의 규모에 따라 관리하기 쉽도록 클래스라는 이름으로 나누기 시작했고, 이는 네트워크 클래스의 등장으로 이어진다.
네트워크 클래스(Network Class)
클래스 | 최상위 비트 | 범위 | 네트워크 비트 | 호스트 비트 | 네트워크 수 | 호스트 수 |
Class A | 0 | 0.0.0.0 ~ 127.0.0.0 | 8 | 24 | 128 | 16,777,214 |
Class B | 1 | 128.0.0.0 ~ 191.255.0.0 | 16 | 16 | 16,384 | 65,534 |
Class C | 11 | 192.0.0.0 ~ 223.255.255.0 | 24 | 8 | 2,097,152 | 254 |
Class D | 111 | 224.0.0.0 ~ 239.255.255.255 | N/A | N/A | N/A | N/A |
Class E | 1111 | 240.0.0.0 ~ 255.255.255.255 | N/A | N/A | N/A | N/A |
우리가 일상적으로 사용하는 범위의 IP주소는 아래와 같은 구조를 가지고 있다. 일반적으로 사용되는 IP주소는 A, B, C Class 네트워크에 포함된다.
IP주소 = 네트워크 주소 + 호스트 주소
여기서 네트워크 주소는 인터넷 상에서 네트워크를 구분하는 역할을 하고, 호스트 주소는 특정 네트워크 안에 존재하는 기기들을 구분하는 역할을 한다.
이해를 위해서 위의 그림을 참고해 보면, 어떤 라우터에 연결된 네트워크인지 구분하는 것은 그 IP주소가 어떤 클래스냐에 따라서 그 비트수가 결정된다.
위의 예시에서는 첫번째 옥텟의 수가 0~127사이에 있는 A Class 네트워크이기 때문에, 앞쪽의 8비트를 통해 네트워크를 구분하여 어떤 네트워크인지 찾아간다. 따라서 라우터는 네트워크 주소만을 판별한다고 할 수 있다. 호스트 주소는 라우터에게 별로 중요하지 않은 정보이다.
네트워크 주소를 통해 해당 네트워크를 찾아가게 되면, 그 네트워크 내에 여러개의 장치들이 연결되어 있을 것이다. 바로 네트워크 내에서 장치들을 구분하기 위해 존재하는 주소가 호스트 주소이다.
따라서 위의 원리를 이해한다면, 네트워크 주소를 통해 네트워크를 찾아가고, 호스트 주소를 통해 네트워크 내의 특정 장치로 접근한다는 것을 쉽게 이해할 수 있을 것이다.
IPv4 네트워크 클래스라는 것은 네트워크를 규모에 맞게 잘 사용하기 위해서 네트워크 주소의 비트 수, 호스트 주소의 비트 수를 약속에 의해서 나눠놓은 것으로 볼 수 있다.
마지막으로 서브넷이다.
위에서 언급했듯이 클래스 단위로 네트워크를 분류하다보니, 어떤 기업에서는 적은 양의 호스트 주소가 필요한데, B Class 네트워크를 할당받아서 IP주소에 여유가 생기게 되고, 어떤 기업에서는 많은 양의 호스트 주소가 필요한데, C Class 네트워크를 할당받아서 IP주소가 부족해지는 현상이 생기게 된다.
따라서 클래스로만 네트워크를 분류하는 것은 비효율적이라는 결론이 나오고, 좀 더 적절한 단위로 네트워크를 분할해야할 필요성이 생기게 된다. 이러한 이유로 인해서 서브넷의 개념이 탄생하게 된다.
클래스 단위로 분류를 하게 되면 적절한 네트워크의 크기로 구분할 수 없다. 따라서 서브넷으로 분할하여 사용한다. 서브넷(Subnet)이라는 것은 하나의 네트워크가 분할되어 나눠진 작은 네트워크이다. 네트워크를 분할하는 것을 서브네팅(Subnettin)이라고 한다. 그리고 이 서브네팅은 서브넷 마스크(Subnet Mask)를 통하여 수행될 수 있다.
네트워크 주소를 나타내는 부분이 25자리로 기존의 C Class 네트워크보다 네트워크 주소를 나타내는 부분이 한 자리 더 많다. 이렇게 되면 서브넷 마스크는 /25 라고 표현할 수 있을 것이다.
만약 서브넷 마스크를 변경하여 네 개의 서브넷으로 분할하고 싶다면, 한 자리 더 네트워크 주소로 넘기면 된다. 하지만 이렇게 분할을 많이 하게 되면, 하나의 서브넷에서 가질 수 있는 호스트 주소가 줄어들게 되므로, 로컬 네트워크의 규모에 따라서 서브넷 마스크 값을 잘 조정하는 것이 필요하다.
서브넷이 필요한 이유
이러한 기술들은 결국 각 클래스로 나눠진 네트워크를 운영중인 서비스의 규모에 맞게 분할하여 사용하기 위한 기술이다. 따라서 이런 기술을 통해서 A Class 네트워크와 같은 매우 큰 네트워크를 작게 나눠서 사용하면서, 낭비되는 IP주소 자원을 최소화하려는 것이 주된 목적이다.
다른 이유로는 브로드 캐스팅을 사용할 때이다. 이 기술은 특정 네트워크에 연결된 모든 기기에 하나의 메시지로 동시에 데이터를 보내는 것이다. 이를 사용할 때 연결된 호스트 디바이스가 많다면, 당연히 성능의 저하가 올 수 있다. 따라서 네트워크의 규모를 줄여서 브로드 캐스팅으로 인한 부하를 줄일 수 있는 것이다.
[Network]IP주소(IP Address)
http://hyoje420.tistory.com/10
[Network]네트워크 클래스(Network Class)
http://hyoje420.tistory.com/31
[Network]서브넷(Subnet)
https://hyoje420.tistory.com/32
'[AWS] > STUDY' 카테고리의 다른 글
[AWS] Data Link and Migration (0) | 2022.07.20 |
---|---|
[AWS] Serverless 환경 (0) | 2022.07.08 |
[AWS] Scale Down (0) | 2022.07.06 |
[AWS]AMI, SnapShot 계정간 공유, 다른 Region으로 복사 (0) | 2022.07.05 |
[AWS]AMI 생성방법 (0) | 2022.07.05 |
[AWS]운영서버 장애시 자동 Restart (0) | 2022.06.30 |
[AWS] [윈도우] 다른 Region으로 키 복사 (0) | 2022.06.30 |
[AWS] [리눅스] 다른 Region으로 키 복사 (0) | 2022.06.30 |
댓글