오늘은 네트워크 주요 기술 중 하나인 DHCP에 대해 알아보겠습니다.

 

그전에 앞서, 호스트가 네트워크와 통신 시에 필요한 것들을 살펴볼까요?

 

첫 번째로, 물리적 네트워크가 구성이 되어 있어야 합니다. (외부망이든 내부망이든)

 

두 번째로, IP 주소, 서브넷 마스크, 게이트웨이, DNS 주소 설정 등이 더 필요하죠

 

여기서 IP 주소, 서브넷 마스크, 게이트웨이, DNS 주소 설정 등을 자동으로 해주는 것을 가리켜 정적 할당이라 하고,

 

그 외에 자동으로 설정하는 것을 동적 할당이라고 합니다.

 

최근에는 동적 할당 방식을 많이 이용하고 있는데, 이는 보안이 강화될뿐더러 저희가 수동으로 관리를 하지 않으니 관리가 쉬워진다는 장점 때문입니다

 

또한 IP를 별도로 설정하지 않아도 네트워크에 쉽게 접속이 가능합니다.

 

이걸 가능케 하는 프로토콜이 있는데요. 바로 오늘 소개할 프로토콜인 DHCP 프로토콜입니다.

 

DHCP 프로토콜은 앞서 설명했다시피, IP를 동적으로 할당하는 데 사용되는 프로토콜입니다.

 

해당 프로토콜을 사용하면 네트워크와 통신 시에 필요한 각종 설정들을 자동으로 할당받아 사용할 수 있습니다.

 

요약하자면,

  1. 별도의 IP 설정 작업이 필요 없어 사용자와 관리자 모두 편하게 네트워크에 접속이 가능

  2. 사용하지 않는 IP 정보는 회수되며 사용하는 경우에만 재할당이 됩니다

  3. 자동으로 할당되니 사용자가 직접 입력하며 발생할 수 있는 사소한 실수까지 예방이 가능합니다.

 

DHCP 동작방식

Discover 부터 DHCP 서버로의 Ack 과정

그럼 우리 클라이언트가 DHCP 서버에서 어떤 식으로 동적할당을 받는지 한 번 알아보겠습니다.

 

1. DHCP Discover ( 서버야 어딨니, 나 뭐 쓸지 좀 알려줘)

DHCP 클라이언트는 DHCP 서버를 찾기 위해 DHCP Discover 메시지를 연결된 네트워크상에서 브로드캐스트로 전송합니다.

  • 요청을 보낼 때, 출발지 MAC 주소는 클라이언트 본인으로 설정합니다.
  • 목적지 MAC 주소와 IP는 브로드캐스트 방식으로 요청합니다.
  • 아직 IP를 할당받은 상태가 아니니 Src IP는 0.0.0.0을 사용합니다.
  • IP를 할당받는 과정이므로 , 패킷을 정상적으로 주고받을 수 없으니 TCP가 아닌 UDP를 사용합니다.
  • 결국 첫 번째 과정은 DHCP 서버를 찾기 위한 메시징의 과정이라 볼 수 있습니다.

 

2. DHCP Offer (나 여깄어, 이거 쓰면 돼)

  • DHCP 서버는 DHCP Discover를 수신합니다.
  • DHCP 서버는 클라이언트에 할당할 IP 주소와 서브넷, 게이트웨이, DNS 정보, Lease Time( 해당 정보 *임대 시간  )의 정보를 포함한 DHCP 메시지를 클라이언트로 전송을 해줍니다.
    • 여기서 클라이언트에 할당할 IP 주소는 DHCP IP Pool 중에서 선택하게 됩니다. ( DHCP 서버가 보관하는 IP 리스트라 생각하시면 됩니다. )
    • IP 리스트들은 우리가 임의로 설정도 가능합니다. ( MacOS 기준 시스템 설정 -> 네트워크 -> 고급 사항)
*임대 시간 ?

클라이언트가 DHCP 서버로부터 할당 받은 정보들을 사용(임대) 할 수 있는 시간을 뜻합니다. 만료가 된다면 다시 1번의 과정을 거쳐야 할 것 같지만, 

실제로 저렇진 않고, 쓰는 도중에 새로 갱신을 합니다. ( 마치 AccessToken과 RefreshToken 처럼요 . )

리프레쉬 과정은 임대 시간중 50%가 지날 때 쯔음 진행되며

DHCP Discover(1번 과정)과 Offer(2번 과정)을 생략 한 채, 클라이언트 요청 ( Request ) 서버의 응답( Ack)를 통해 갱신됩니다.

1, 2번 과정을 생략하기 때문에 불필요한 브로드캐스트가 발생하지 않고, 유니캐스트로 진행되기 때문에 시간 또한 짧습니다.

만약 리프레쉬 과정에서 클라이언트가 응답하지 않는다면 사용하던 IP를 다시 서버에 반납하게 됩니다.

 

3. DHCP Request ( ㅇㅋ 이거 지금부터 쓴다 그럼?)

  • DHCP 클라이언트는 DHCP 서버로부터 제안받은 IP 주소와 DHCP 서버 정보를 포함한 요청 메시지를 브로드 캐스트로 다시 전송합니다.
여기서 한 가지 의문이 생기실 수 있습니다. 2번째 과정에서 클라이언트는 서버로부터 받은 메시지 안에 정보들이 담겨있을 텐데, 왜 유니캐스트로 전달하지 않고, 브로드 캐스트로 전달할까? 

여기에는 세 가지 이유가 있습니다. 

1.  DHCP 서버 여러 대가 동작하는 환경 일 수 있기 때문에 이를 위해 기본적으로 브로드 캐스트 방식을 사용합니다.

2. DHCP 서버 여러 대가 운용 중인 환경에서 클라이언트는 서버로부터 Offer 메시지를 여러 개를 수신 받고, 하나만 골라 Request 메시지를 보냅니다.

3. 위의 과정에서 브로드캐스트가 수행되며 여러 서버에서는 해당 Request 메시지가 자기것인지 확인하고 아니라면 패킷을 드랍시킵니다.

 

 

4. DHCP Acknowledgement ( ㅇㅇ 지금 부터 쓰는 거 확인했엉, 기록해둘게 )

  • 3번 과정을 통해 DHCP 클라이언트가 제공해준 IP 주소를 사용하겠다는 요청을 받습니다.
  • DHCP 서버는 해당 요청을 수신 후, 해당 IP를 누가, 언제부터 사용했는지를 기록합니다 ( 아마 Pool 때문에 그런 것 같습니다.)
  • 그 후, DHCP 클라이언트에게 확인했다는 메시지를 보내게 됩니다.
더보기

🛎️ 짤막 상식 !

 

IP Pool 에서 할당 가능한 IP가 모두 할당이 된 경우에는 새로운 클라이언트에서 IP 요청이 들어와도 IP를 내 줄 수 없게 되는 상태가 벌어집니다.

 

이를 악의적으로 이용해 DHCP 서버에서 가용한 모든IP를 가짜로 할당받아,

 

실제 클라이언트가 IP 주소를 할당받지 못하게 하는 공격 방식을 DHCP Starvation(기아 상태) 공격이라고 합니다 

 

 

여기까지 DHCP란 무엇이며, DHCP의 동작 방식을 살펴보았습니다.

 

'Network' 카테고리의 다른 글

3-way handshake  (1) 2023.11.07
TCP 송/수신 원리  (8) 2023.09.03

+ Recent posts