네트워크를 부분적으로 공부한 후 간결하게 정리하였습니다.
개선점들을 알려주신다면 적극 반영하겠습니다.
IP(Internet Protocol)
인터넷을 통해 데이터를 주고받을 때 사용되는 통신규약으로 네트워크 계층에 위치하는 프로토콜이다.
인터넷에 연결된 모든 장치들을 식별할 수 있도록 각각의 장비에 부여되는 고유 주소이다.
IPv6는 128비트로 구성된 IP주소로, 8개의 4자리 16진수로 이루어져있으며, 콜론으로 구분된다.
1234:0ae3:85a3:0000:0000:2f3a:0370:7334
구조
아이피는 네트워크 ID와 호스트 ID로 구성되어 있으며 위의 IP주소 예시에서의 네트워크 ID와 호스트 ID는 다음과 같다
IP 클래스
네트워크 ID는, 어떤 네트워크인지 식별하며, 호스트 ID는 네트워크에 연결되어있는 디바이스를 식별하며
옥텟 별로 IP의 클래스를 A,B,C로 나눌 수 있다.
호스트의 개수가 많을 수록, 대규모 네트워크에 적합하다.
Class A
네트워크 수는 적지만, 많은 디바이스를 연결시킬 수 있어 대규모 네트워크에 적합하다.(2^24 -2, 약 1670만개).
0과 127로 시작하는 주소는 예약 주소로 사용할 수 없다.
0.~ : 미지정 주소
127.~ : 호스트 주소로 OS와 네트워크가 제대로 연결되었는지 확인한다.
Class B
2바이트의 네트워크와 2바이트의 호스트를 가지고있다. (2^16 - 2, 65534개)
많은 인터넷 제공 기업들이 사용한다.
Class C
총 네트워크의 수가 많은만큼, 적은 디바이스를 연결해야한다. (2^8 - 2, 256개)
작은 기업이나, 개인용으로 많이 사용한다.
Class D와 Class E는 일반적인 네트워크 장치에 IP주소로 할당되지 않는다.
Class D: 멀티캐스트 그룹 주소로만 사용됨 (224 ~ 239)
Class E : 연구 및 실험 목적으로 예약되어 있음(240 ~ 255)
서브넷(Subnet)
IP 주소를 클래스로 구분하여 할당하는 방식은 비효율적이다.
예를 들어 100개의 IP 주소를 필요로 하는 중소기업 "매직" 이 있다.
클래스 C를 할당해야하지만, 256개 중 156개의 IP는 사용되지 않아 절반 이상의 낭비가 발생한다.
반대로, 중견기업 "마술"이 있다.
이 기업에서는 5000개의 IP주소를 필요로한다. 클래스 B를 할당하면 나머지 60,536개는 사용하지 않게 되어 엄청난 낭비가 발생한다.
반면에 클래스 C를 여러개 할당하자니 20개의 클래스 C 네트워크가 필요한데, 이는 관리와 라우팅 측면에서 매우 복잡해질 수 있다.
이러한 문제를 해결하고 IP 주소 자원을 효율적으로 관리하며 네트워크 성능을 향상시키기 위해 서브넷이 등장하게 되었다.
서브넷은 하나의 IP 네트워크를 더 작은 여러 개의 네트워크로 나누는 방법이다.
IP 네트워크를 서브넷으로 만드는 작업을 서브네팅(Subnetting)이라고 하며, 서브네팅을 통해 네트워크의 크기를 줄여 더 작은 네트워크로 나눌 수 있다. 이는 네트워크 주소의 일부 비트를 호스트 주소에서 가져와 서브넷 마스크를 변경함으로써 이루어진다.
이를 구분하기 위해 서브넷 마스크(Subnet Mask)를 사용한다.
서브넷 마스크(Subnet Mask)
서브넷 마스크를 더 간소화해서 표현할 수 있는 CIDR 표기법이 있다.
서브넷 마스크에서, 네트워크 ID에 해당하는 영역을 슬래시(/)로 표기하는 방식이다.
서브네팅(Subnetting)
서브네팅의 과정을 한번 그림으로 표현해보자.
기존의 192.168.100.0/24는 2^8 - 2= 256개의 IP주소를 가지고 있다.
여기서, 서브네팅을 통해 호스트 주소의 1비트를 빌려왔다.
이 때, 사용할 수 있는 호스트 IP는 총 7비트가되었으며, 2^7 - 2인 126개가 된다.
이를 CIDR로 표기하면 192.168.100.0/25, 192.168.100.128/25가 되고
서브넷 마스크는 255.255.255.128이 된다.
마찬가지로, 2비트 호스트 주소를 빌려온다면, 총 4개의 서브넷이 생성되며, 각 서브넷마다 2^6 - 2인 62개의 IP를 할당받을 수 있으며
이러한 규칙만 잘 이해한다면 서브네팅에 따른 서브넷, 호스트 범위, 호스트 수, 서브넷 마스크 등을 유추할 수 있다.
그렇다면, 위의 예시에서 "매직" 기업의 서브넷은 어떻게 구성해야할까?
단순 C 클래스 네트워크를 그대로 사용하는 것 보다, 서브네팅을 통해 1개 이상의 비트를 가져와서 구성하는 것이 더 효율적일 것이다.
더 잘게 쪼개진 네트워크를 가진 서브넷으로 나눌 경우의 이점
1. 서브넷에서 발생하는 브로드캐스트 트래픽이 절반씩 감소한다. 이는 운영 비용 감소에 긍정적이다.
2. 분리된 서브넷별로 보안 규칙등을 세분화할 수 있고, 보안 사고 발생 시 다른 네트워크로의 확산을 방지할 수 있다.
3. 서브넷 별로 관리하기 용이하고 확장에 유연하다.
Public IP / Private IP
IPv4 주소의 고갈로, 효율적으로 주소를 나눠 사용할 필요가 생겼다.
이러한 이유에서, 공인 주소와, 사설 주소를 구분하여 사용하는 방식이 도입되었다.
아래는, Public IP와 Private IP의 특징을 정리한 표와, Private IP의 클래스 별 범위이다.
보통의 LAN 단위에서는, Private IP를 통해 소통을 하며, 외부 소통(인터넷 등)을 위한 라우터는 Public IP를 가지게된다.
이전 포스팅(LAN/WAN) 과 지금의 내용들을 정리했을 때, 사설 네트워크에서는 외부와의 통신이 되지 않는다.
외부와의 데이터 통신을 LAN에서 보낼 때, ARP를 통해 목적지 IP 주소를 IP 패킷에 담아 라우터에 전송하여, 목적지 IP가 있는 라우터까지 라우팅 테이블을 따라 계속 이동한 뒤, 목적지 라우터에서 ARP를 통해 다시 목적지 MAC 주소를 받아 전달해준다고 머리속에 정리가 되어있었는데, 사설 IP 주소밖에 없는 현 상황에서 어떻게 외부와의 소통을 할 수 있을까? 에 대한 의문이 생겨 다음과 같이 통신 과정을 정리해보았다.
기준이 되는 네트워크는 이전 포스팅의 내 네트워크 환경이다.
참조
[유튜브] 크래프트맨 멘탈리티님의 네트워크 기초 무료강의
2023.04 ~ 백엔드 개발자의 기록
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!