IP는 네트워크에서 사용할 수있는 자리 라고 생각할 수 있습니다. 그리고 해당 자리는 각 Host들이 사용하고 있지요.

하지만 IP의 갯수는 한정적입니다. 모든 Host들을 끝없이 수용할 수 있진 않아요.

그렇다면 이 한정적인 IP를 어떻게 하면 효율적으로 분배할 수 있을까요?

DHCP(Dynamic Host Configuration Porocol)

DHCP(동적 호스트 구성 프로토콜)은 효율적인 대규모 IP관리를 위해 나온 프로토콜 입니다.

OSI 7 layer에서 4번째 레이어인 Transprot Layer에서 사용됩니다.

혹시 PC방을 이용해본 적이 있나요?

PC방에 가게되면 일단 앉을 수 있는 자리가 있는지 확인인 후에 빈 자리가 있다면 그 곳으로 안내를 받게됩니다.(안내를 안 해주는 경우가 더 많지만 그런건 넘어가자고요 ㅎㅎ)

그리고 해당 자리에서 몇 시간을 이용할 것인지 결제를 하게 됩니다.
사용하다 더 필요하면 추가적인 결제를 통해 자리를 이용할 수 있는 시간을 추가할 수도 있습니다.

그리고 이용 시간이 끝나거나 중간에 더이상 쓸 필요가 없다면 해당 자리를 반납하고 다음 사람이 같은 방법으로 해당 자리를 사용하게 됩니다.

DHCP의 기본적인 아이디어는 IP를 일정 시간만큼만 대여해주고, 이후에는 다시 반납받자 입니다.

이를 위해 Host들에게 IP를 분배해주기 위해 DHCP Server가 생겨났습니다.
그리고 Host들도 HDCP Server에 속하게 되었기 때문에 DHCP client라는 이름으로 불리게 됩니다.

해당 포스트에서는 간략하게 설명하기 위해
HDCP Server 는 '서버'
HDCP Client 는 '클라이언트'
라고 부르겠습니다.

DHCP에서의 IP할당 과정

DHCP에서의 IP할당은 TCP의 비슷한 느낌으로 진행됩니다.

클라이언트와 서버간에 메세지를 서로 주고 받으며 진행되는데, 총 4가지의 메세지로 구성되어 있습니다.

DHCP Discover

클라이언트에서 서버를 찾기 위해 사용하는 메세지입니다.
혹시나 존재할 수 있는 서버에게 응답을 요청합니다.

메세지 전송 방향 : 클라이언트 -> 서버

서버가 있는지 확인하는 목적이기 때문에 클라이언트의 MAC주소를 담아서 브로드케스트방식으로 메세지를 전송합니다.

브로드캐스트 방식을 사용한다는 것은 UDP를 사용한다는 이야기가 되겠지요!

주요 파라미터
Client MAC : 클라이언트의 MAC주소

DHCP offer

클라이언트에서 서버를 찾는다는 메세지에 대하여 서버의 존재를 알려주는 메세지 입니다.

전송 방향 : 서버 -> 클라이언트

동시에 클라이언트에게 할당해 줄 IP주소와 여러 정보를 할당해서 전송해 줍니다.

DHCP offer는 클라이언트가 보낸 DHCP Discover에 따라 달라지는데, 정확히는 Broadcast flag의 값이 0인지 1인지에 따라 달라집니다.

Broadcast flag???
(추후에 내용 추가하겠습니다...)

브로드케스트 플래그의 값이 0이면 브로드케스트로, 1이라면 유니케스트로 전송해 줍니다.

주요 파라미터

Clinet MAC : 클라이언트 MAC주소

Your IP : 단말기에 할당된 IP주소

Subnet Mask(Option 1) : 서브넷 마스크 값

Router(Option 3) : 라우터의 Default Gateway IP 주소

DNS(Option 6) : DNS 서버 IP 주소

IP Lease Time(Option 51) : IP주소를 임대할 수 있는 시간

DHCP Server Identifier(Option 54) : 본 메세지(DHCP offer)를 보낸 서버 주소
(DHCP서버는 두 개 이상 존재할 수 있기때문에, 각 DHCP서버는 자신의 IP주소를 본 필드에 넣어서 보내줍니다.)

DHCP Request

클라이언트가 서버의 DHCP offer메세지를 잘 받았습니다.
그래서 서버가 있음을 인지 했고, 동시에 전송해준 데이터들도 잘 받았습니다.
그래서 클라이언트는 여러개의 서버들 중 하나를 선택하여 해당 서버에게 클라이언트가 사용할 네트워크 정보를 요청합니다.

전송 방향 : 클라이언트 -> 서버

메세지는 브로드케스트로 전송합니다.

주요 파라미터

Client MAC : 클라이언트 MAC주소

Requested IP Address(Option 50) : 사용하기로 정한 IP주소를 넣어줍니다.
(DHCP offer에서 받은 Your IP값이 여기에 들어갑니다.)

DHCP Server Identifier(Option 54) : 2개 이상의 DHCP offer를 받았을 경우(DHCP 서버가 2대 이상일 때) 그 서버의 IP를 넣어줍니다.
(DHCP Server Identifier의 값이 들어갑니다.)

DHCP Ack

DHCP Request를 통해 요청을 받은 서버가 요청된 네트워크 정보를 클라이언트에게 전송해줍니다.
(DHCP offer와 같은 데이터가 전송됩니다.)

전송 방향 : 서버 -> 클라이언트

DHCP offer때와 마찬가지로 broadcast flag에 따라 브로드캐스트나 유니캐스트로 전송됩니다.

주요 파라미터(DHCP offer와 같습니다.)

Clinet MAC : 클라이언트 MAC주소

Your IP : 단말기에 할당된 IP주소

Subnet Mask(Option 1) : 서브넷 마스크 값

Router(Option 3) : 라우터의 Default Gateway IP 주소

DNS(Option 6) : DNS 서버 IP 주소

IP Lease Time(Option 51) : IP주소를 임대할 수 있는 시간

DHCP Server Identifier(Option 54) : 본 메세지(DHCP offer)를 보낸 서버 주소

Reference :
https://jwprogramming.tistory.com/35

profile
C++을 좋아하는 조금 모자란 사람이랍니다!

0개의 댓글