네트워크 - Dynaminc Host Config, Protocol

2020-12-18

컴퓨터 네트워크를 공부하면서 정리를 한 내용들 입니다.

-참고 K-mooc 부산 대학교 유영환 교수님 : 컴퓨터 네트워크 강의


DHCP

DHCP는 네트워크에 접속 할 때 관리자가 또는 사용자가 설정 할 필요 없이

자신의 IP 주소를 네트워크에 있는 서버로부터 자동으로 얻는 것입니다.

이것의 좋은 점은 일단 주소의 재 사용을 가능하게 한다는 것 입니다.

네트워크를 접속하기 위해서 모든 컴퓨터는 고유한 IP 주소를 가져야 합니다.

300명의 학생이 있고, 각자 컴퓨터를 갖고 있습니다.

이 학생들이 학교에서 컴퓨터를 사용해서 인터넷에 접속 하고 싶다 하면

300명의 학생 각각이 가지고 있는 300대의 컴퓨터에는 모두 IP 주소가 할당되어야 합니다.

그런데 모든 300명의 학생이 동시에 인터넷에 접속하고 있을 확률은 거의 없습니다.

매 시간 서로 수업시간이 있기 때문에 300명 중에 적어도 200명은 수업에 들어 간다고 가정을 합니다.

300개의 IP주소를 가지고 각자의 컴퓨터에 유니크한 고유의 IP 주소를 할당할 것이 아니라,

어느 시점에 보면 100대의 컴퓨터만 사용 하고 있으니까 100대의 컴퓨터에 필요한 IP 주소 정도만 확보하고,

사용하면 더욱 편하지 않냐는 생각이 들었습니다.

이 점을 학과에서는 100개의 IP 주소만을 가지고 DHCP 덕분에

현재 인터넷에 접속 중인 컴퓨터에만 IP를 동적으로 할당 하는 것입니다.

그리고 그 학생이 컴퓨터를 끄고 수업에 들어가면 해당 IP를 회수 해서

다시 수업을 마치고 나와서 인터넷에 접속한 다른 학생한테 그 주소를 할당 하는 것입니다.

결론

DHCP는 어떤 사용자가 학교 네트워크나 회사 네트워크에 접속을 하는 순간

네트워크 내에 있는 DHCP 서버가 자신이 가지고 있는 IP 주소 pool 중에서

현재 사용하고 있지 않는 주소를 할당 해 주는 프로토콜입니다.

DHCP Overview

실제로 DHCP가 어떤 식으로 동작하는지 알아봅니다.

그림에서 오른쪽에 있는 노트북이 네트워크에 접속 했습니다.

이 네트워크 내에는 223.1.2.5 라는 주소를 가진 DHCP 서버가 있습니다.

host boradcasts “DHCP discover”

먼저 클라이언트가 접속 하면서 IP 주소가 현재 할당되어 있지 않기 때문에

source 주소는 0.0.0.0이라고 되어 있는 메시지를 보내게 됩니다.

그때 DHCP의 서버 주소를 모르기 때문에

목적지 IP 주소의 모든 bit를 1로 세팅해서 255.255.255.255로 보내게 됩니다.

이 주소는 broadcast IP로 해당 네트워크 안의 모든 컴퓨터들로 전송하는 IP 주소입니다.

모든 컴퓨터들이 받겠지만 DHCP 서버가 아닌 경우 관심을 갖지 않을 것이고,

DHCP에서는 이 메시지를 받고 응답을 하게 됩니다.

DHCP server responds with “DHCP offer”

DHCP offer 메시지를 클라이언트한테 발송 하면서 223.1.2.4주소를 사용 할 수 있다 라고 응답합니다.

이것도 역시 메시지의 source 주소는 DHCP 서버 이지만

수신자는 현재 주소를 갖고 있지 않기 때문에 broadcasting을 하게 됩니다.

클라이언트는 메시지를 받으면 일단 transaction ID를 살펴 보고 자신이 보낸 메시지와 같다면,

223.1.2.4가 DHCP 측에서 제공 해 줄 수 있다고 하는 주소라는 것을 알게 됩니다.

host requests IP address : “DHCP request”

클라이언트는 응답받은 주소를 사용하고자 하면 다시 DHCP request 메시지를 보냅니다.

아직까지는 사용허락을 받지 않았기에 source를 0.0.0.0으로 둔 채로 broadcasting을 합니다.

DHCP server sends address : “DHCP ack”

DHCP 서버측에서는 request에 대한 ACK를 클라이언트 측으로 보내게 됩니다.

그 다음부터는 클라이언트가 223.1.2.4라는 주소를 사용 하게 됩니다.

여기서 그림을 살펴보시면 lifetime이라는 것이 있습니다.

이것은 설정된 시간 동안 해당 주소를 사용 할 수 있다는 뜻 입니다.

3600초라고 되어 있을 때 한 시간이 지나면 다시 갱신 메시지를 통해서

시간을 갱신해서 사용 할 수 있게 됩니다.

Why not use it on the offer?

Discover 하고 offer 메시지가 오면 바로 223.1.2.4 주소를 사용하면 되지 않을까하는 생각이 들 수 있습니다.

굳이 4단계를 거치는 이유는, 네트워크 내에는 DHCP 서버가 꼭 한 대만 있다는 보장은 없기 때문입니다.

서버가 다른 쪽에 더 있다고 가정 하면 다른 서버측도 offer 메시지를 보낼 수 있습니다.

한 서버에게 223.1.2.4 라는 주소를 offer 받을 수 있고, 다른 서버는 다른 주소를 offer 할 수도 있습니다.

그 중에서 클라이언트는 하나를 선택해서 request 메시지를 보내게 됩니다.

그리고 응답을 받음으로써 최종적으로 이 주소를 사용 할 수 있는 것 입니다.