Shine's dev log
IP addressing (CIDR, DHCP) 본문
1. IP 주소
일반적으로 IP 프로토콜에서는 호스트들을 구분하기 위해 IP 주소를 사용한다.
이때까지 가장 많이 쓰인 IPv4 주소의 경우, 32bit로 이루어져 있으며, 4개의 바이트를 . 으로 구분하여 표시한다.
IP 주소는 아래와 같이 크게 두가지 파트로 나눌 수 있다.
1) subnet part
- 라우터를 통하지 않고도 서로 물리적으로 닿을 수 있는 네트워크를 나타내는 bit들
- 네트워크 구조에서 라우터를 제거해보면 어느부분이 subnet인지 알 수 있음
2) host part
- subnet part 하위의 bit들
2. CIDR (Classless Inter Domain Routing)
IP 주소를 표현하는 방식에는 class를 활용하는 방법과 활용하지 않는 방법이 있다.
우선 class를 활용하는 방법은, 미리 class를 나누어놓고 class마다 (subnet : host)를 3:1 2:2 1:3 등으로 나누는 방법이다.
이 방법은 subnet과 host 비율이 조절이 유연하지 못하므로 비효율적인 방법이다.
따라서 class를 활용하지 않는 방법이 널리 쓰이는데, 이것이 바로 CIDR 방식이다.
CIDR notation : a.b.c.d / x
CIDR은 위와같이 표시를 하는데 / 뒤의 x값이 subnet 부분의 비트수를 나타낸다.
만약 223.1.1.0 / 24 로 표현된 주소의 경우, 223.1.1의 24비트가 subnet 주소이고, 나머지 8비트가 host 주소이다.
또한, subnet 주소가 223.1.1.1******* 인 경우, 이를 CIDR로 표현하면 223.1.1.128 / 25가 된다.
아래 그림과 같은 4개의 host가 있는 subnet이 존재한다고 했을 때, 이를 CIDR로 표현하려면 어떻게 될까?
223.1.1.248 / 29 이렇게 표현할 수 있을 것이다.
3. DHCP (Dynamic Host Configuration Protocol)
일반적으로 회사나 연구실에서 사용하는 컴퓨터는 이동할일이 거의 없으므로 굳이 IP 주소를 변경해야 할 일이 없다. 따라서 고정 IP를 사용하는 것이 유리하다.
그래서 처음 컴퓨터를 세팅할 때 고정 IP와 게이트웨이를 할당해주는 작업이 필요하다.
하지만, 노트북이나 모바일 기기의 경우 계속해서 장소를 이동하며 사용해야 하므로 하나의 IP주소를 할당받아 사용하지 않는다.
IP 주소가 필요한 host에게 자동으로 IP 주소를 할당해주는 프로토콜이 DHCP이다.
DHCP 서버는 아래 그림과 같이 특정 subnet에 새로운 host가 추가되어 새로운 IP 주소를 필요로 할 때 동작한다.
DHCP의 동작 단계는 다음과 같다.
1) Host가 "DHCP Discover" 메시지를 뿌려 DHCP 서버를 찾는다
2) DHCP 서버가 "DHCP Offer" 메시지로 응답한다.
3) 호스트가 IP 주소를 얻고, 이를 사용해도 되는지 허락맡는 "DHCP request" 메시지를 보낸다.
4) 요청받은 IP 주소를 사용하는 것에 문제가 없으면, DHCP 서버가 "DHCP ack" 메시지를 보낸다.
즉, 호스트는 우선 DHCP 서버를 찾고, 해당 서버로부터 사용 가능한 IP 주소를 받아와 쓰는 것이다.
자세한 과정은 아래 그림과 같다.
- DHCP에 관한 추가정보들
- 호스트가 DHCP Discover 메시지를 뿌리면 여러개의 DHCP 서버가 응답을 해줄 것이고, 호스트는 그 중에 마음에 드는 거 하나를 골라서 request를 보내면 된다.
- 한번 DHCP 서버를 발견하면 굳이 다시 Broadcast 하지 않고 request - ack 과정만을 통해 IP주소를 할당받으면 된다.
- DHCP는 IP주소 할당 뿐 아니라 첫번째 hop의 라우터의 주소, local DNS 서버의 주소와 이름, subnet mask 정보(subnet 비트수) 등의 유용한 정보를 제공한다. (옵션 필드를 통해 확인가능)
4. subnetting & supernetting
subnetting은 subnet mask를 적용함으로써 네트워크 대역을 여러개로 분할하여 효과적으로 네트워크를 관리하는 과정이고,
supernetting은 여러개의 작은 네트워크를 하나의 커다란 네트워크 대역으로 묶는 과정이다.
즉, subnetting과 supernetting은 서로 반대 개념이라고 생각하면 된다.
아래 그림과 같이 ISP에 할당된 IP 주소 블록을 여러 조직에게 배분해주는것이 subnetting의 예시이다.
또한 아래 그림과 같이 여러 조직이 가진 IP 주소 블록을 하나의 ISP가 묶는 것이 supernetting의 예시이다.
오늘 배운 내용을 정리해보면,
1. IPv4 주소의 경우 32비트로, CIDR 을 활용해 subnet과 host 부분을 나눠 표기할 수 있다.
2. 움직이는 호스트의 경우, DHCP를 이용해 IP주소를 할당받는다.
3. subnetting은 하나의 네트워크 대역을 여러개의 network로 분할하는 과정이고, supernetting은 여러개의 분할된 네트워크를 하나로 묶는 과정이다.
위 내용은 공부하며 정리한 것으로, 오류가 있을 수 있습니다.
'컴퓨터 네트워크' 카테고리의 다른 글
IPv6 의 개념 (0) | 2021.07.02 |
---|---|
NAT(Network Address Translation) 의 개념 (0) | 2021.03.07 |
IP 프로토콜 (IP header, fragmentation) (0) | 2021.03.03 |
Network layer 개요 (0) | 2021.02.28 |
TCP congestion control (0) | 2021.02.26 |