ipv4 addressing : classful vs. classless addressing(CIDR)
과거에는 서브넷이 가변적이지 않았다.
즉, 위의 사진에서처럼 클래스에 따라 서브넷이 어디까지 있는지 확정할 수 있었다.
클래스는 처음 비트가 0으로 시작하고뭐 이런걸로(1st octet high order bits) 클래스를 구분할 수 있다.
그러나, 이런 방식에는 문제가 있다.
인터넷이 발달하면서 디바이스의 수가 기하급수적으로 늘어나고, 결국 주소부족 현상이 일어난 것이다.
이를 극복하고자 classful한 방식에서 classless addressing으로 점차 바뀌게되었다.
CIDR (Classless InterDomain Routing)
이 사진에 따르면 host를 많이 수용할 수 있는 클래스 b를 계속 원해
→ 그러니까 b가 빨리 소진되고 c는 안쓰여
→ 낭비구나!
→ 그럼 클래스없이 해보자!
그렇게 고정길이 → 가변길이로 subnet portion을 주도록 되었다.
(subnet에 대한 내용은 이전 글을 참고하자.)
이렇게 슬래쉬(/)하고 그 뒤에 서브넷 부분에 몇 비트가 사용되었는 지 표현해주는 것이다. 위의 이미지의 경우에는 23에 해당하는 부분을 **“subnet mask”, “network prefix”, “prefix”**라고 부르면 된다.
추가로 host part는 전부 0으로 표기한다.
how to get one?
그럼 두가지 질문이 생긴다.
- host는 어떻게 그 네트워크에서 ip주소를 얻을 수 있을까?
- network (subnet part)는 어떻게 스스로 ip주소를 얻을 수 있을까?
1번에 대한 대답은 크게 두 가지다.
- hard coded by sysadmin in config : 아이피 블록에 주소 요청하면 사용되지 않는 주소를 부여해준다. 그럼 그 주소를 직접 타이핑을 해 사용한다.(수동)
- DHCP (Dynamic Host Configuration Protocol) : Dynamic 하게 네트워크에 연결할 때마다 새로운 주소를 할당 받을 수 있다. 네트워크에 plug하면 주소를 얻어와서 연결되는 방식이다. 서버로부터 얻으며 일시적으로 쓸 주소이다.
누가봐도 자동으로 부여해주는 DHCP가 훨씬 좋다.
DHCP
그럼 DHCP에 대해 깊게 알아보자!
- client-server protocol
- plug and play 방식
- service/deamon runs over UDP
- deamon? : 컴퓨터에는 프로세스가 여러 개 돌고 있는데, 이거는 back-ground 로 도는 것을 말한다.
- 여기에서 server는 67번(server)을 사용을 해서 서비스를 운용해. client는 68포트를 사용한다. 이 포트 주소는 well-known인데, 그 이유는 client IP주소가 없고 broadcast이기 때문.
- 주소는 ISP 서버로부터 ip주소를 받아와
- DHCP는 주소 재 사용이 가능하므로 ip주소 운영 면에서 참 좋다
- 예를 들어 3명이 동시에 연결하는 일이 전혀 없다면 중복해서 아이피주소를 사용할 수 있게 하니까 효율적이다. 한 사람이 안 쓰면 다른사람한테 할당해주면 되니까
- 사용자가 방을 옮겼는데 해당 구역이 관할하는 subnet이 기존과 다른 subnet이면 또 그에 맞는 IP주소를 요청해야 하는데, DHCP는 이 과정을 자동으로 config해주니까 유용하다는 것이다.
DHCP는 4의 메시지 동작 과정을 통해 ip주소를 전달 받는다.
- DHCP discover : client
- DHCP offer :server
- DHCP request client
- DHCP ack : server
위의 그림을 파보자.
1. 우선 client가 DHCP server가 있는지 찾는다.
2. 해당 메시지를 받은 DHCP server가 자기가 여기 있다고 말해준다.
3. client가 이를 확인하고 ip주소를 요청한다.
4. server가 ip주소를 부여해준다.
이런 흐름으로 이뤄진다. 아래 사진으로 구체적으로 보자.
- 위의 메시지 네 개 모두는 broadcast가 된다.
- router를 거치지 않은 곳에서 broadcasting
- router에 연결된 subnet에서 broadcast가 된다.
- 255.255.255.255 는 broadcast를 한다는 의미이다.
- router가 각각의 subnet에서 broadcast하는 걸 받으니까 DHCP 서버랑 router가 연결되어있는경우가 많다.
DHCP의 추가 기능 : subnet에 할당된 ip주소 뿐만 아니라..
- DNS의 이름과 ip주소에 대한 정보도 알려줘
- first-hop router주소도 알려주고
- 어디까지가 subnet portion인지도 알려줘
요약
내가 네트워크에 들어오면 DHCP가 백그라운드로 작동이 되는데, broadcasting이 되면 서버가 그걸 받고 서버의 답을 써서(클라이언트의 아이피주소..등)보내줘. 그럼 이걸 decapsulate을 해서 받아 보고, 자동으로 식별(configuration)이 되는 거임. 내 주소와 상대방의 주소를 알기 위한 거..
이렇게 1번에 대한 답을 알았다.
- host는 어떻게 그 네트워크에서 ip주소를 얻을 수 있을까? -> by. DHCP!!
- network (subnet part)는 어떻게 스스로 ip주소를 얻을 수 있을까?
다음 글에서는 2번에 대한 답을 알아보자
'네트워크당' 카테고리의 다른 글
[네트워크] IP addressing은 왜 해주어야할까? (feat. subnet) (0) | 2023.12.27 |
---|---|
[네트워크] IPv4 구조와 패킷의 분리와 결합 원리 (0) | 2023.12.04 |
[네트워크] 라우터의 구조를 알아보자(2) (0) | 2023.11.27 |
[네트워크] 라우터의 구조를 알아보자 (0) | 2023.11.15 |
[네트워크] Data plane과 Control plane (0) | 2023.11.07 |