dev-writeup-2024 / january

개발 1일 1글 스터디
2 stars 0 forks source link

[01-17] 네트워크 랜덤 작명소 영업합니다. [네트워크 5편 - DHCP] #72

Open Kjm04175 opened 10 months ago

Kjm04175 commented 10 months ago

서론

네트워크 공간 상에는 수 많은 단말이 존재합니다. 단말들은 각각 IP 주소를 통해 구분이 되는데, 이 IP 주소가 일종의 이름이라고 볼 수 있죠.

하지만, 이 이름을 막 지어줄 수 있을까요? 12글자에 불과한 IP로 이름을 막 지어버리면 똑같은 IP를 가지는 단말들이 생겨나지 않을까요? 이러면 network layer에서 라우팅을 하지 못할지도 모르는데요? 선택 장애를 가진 사람이라면 IP 주소를 설정하는데 1시간이 쓰일지도 모릅니다.

다행히 네트워크 세상에는 DHCP라는 좋은 기능이 하나 있습니다. DHCP는 작명 머신같은 존재로써, IP 주소 및 통신에 필요한 파라미터를 자동으로 할당해주는 기능을 합니다.

<랜덤 작명 머신으로 1트만에 SSR 닉네임 뽑기>

오늘은 네트워크 세상의 랜덤 작명 머신 'DHCP'가 무엇인지, 어떻게 동작하는지 알아보도록 하겠습니다.

image

What is DHCP?

DHCP란 Dynamic Host Configuration Protocol의 약자로써, 네트워크에 장비가 추가되었을 때 IP와 파라미터를 자동으로 할당해주는 프로토콜입니다.

DHCP가 할당해줄 수 있는 파라미터로는 subnet mask, dns 서버 ip등이 있습니다.

왜 이런 장치가 필요한 것일까요? IP를 그냥 사람이 입력해서 이용하면 안되는 건가요?

물론 가능하긴 합니다. 네트워크 설정에 직접 ip를 변경하는 기능이 있거든요.

하지만, 사람이 직접 입력하는 것이다 보니 오타로 인해 잘 돌아가던 다른 단말이 ip 충돌로 마비되는 사태가 발생할 수도 있습니다! 이는 제가 열심히 토탈워 업데이트 113GB를 수행하는 중, 옆자리의 누군가가 의도적으로 제 pc와 같은 ip를 가진 단말을 만들어버림으로 업데이트를 방해할 수도 있다는 것입니다. 끔찍한 일이죠.

의도적이든 의도적이지 않든, 인간에게 ip 할당을 맡기는 것은 불안정 합니다. 뛰어난 초 지성을 가진 컴퓨터가 자동으로 ip를 할당해주고, 반납을 받으며 관리하는 것이 더 유효하다고 볼 수 있습니다.

추가적으로, 일반적인 가정에서는 주로 라우터가 이 DHCP의 역할을 갖고 있다고 하며, ip를 배정해주는 과정은 UDP로 이루어진다고 합니다!

UDP로 ip를 배정해주는 이유는 무엇일까요? 네트워크에 새로운 장비가 추가되었을 때, 새로운 장비는 DHCP 서버가 어디 있는지 모릅니다. 때문에, 서브넷 상의 모든 노드에 브로드케스팅을 해 DHCP 서버를 찾아야 합니다. 이 과정에서 보내야 하는 메시지가 많고, 연결해 통신 할 대상을 모르기 때문에 성능이 좋은 비 연결 통신 방법인 UDP를 이용하는 것입니다.

How DHCP works?

그럼, DHCP가 어떻게 동작하는지 그 동작 방법을 뜯어봅시다.

  1. DHCP Discover - IP 주소가 할당되지 않은 신규 클라이언트는 당연히 IP 주소로 정보를 받을 수 없습니다. 때문에 MAC 주소를 통해 IP 정보를 받아와야 하죠. 위 그림 기준 새로운 클라이언트 PC3은 Broadcast 샤우팅을 통해 서브넷 내 모든 호스트에게 DHCP를 찾고 있음을 알립니다. 이 broadcast 패킷에는 MAC 주소가 달려있기 때문에, DHCP 서버가 이 DHCP Discover 패킷을 수신하면 2번 단계가 진행됩니다. 다른 클라이언트들은 자신을 대상으로 한 패킷이 아니라는 것을 감지하고 DHCP Discover 패킷을 폐기합니다.
  1. DHCP Offer - 자, 이번에는 DHCP 서버가 한번 소리를 크게 지를 때입니다. 새로 연결 된 클라이언트는 IP 주소가 없기 때문에 Broadcast할 수밖에 없거든요. 방금 전송을 한 host의 MAC 주소를 갖고 있기 때문에, DHCP 서버는 MAC주소를 목적지로 설정합니다. 말이 목적지지, 사실 해당 MAC 주소를 갖고 있는 녀석 빼고는 전부 메시지를 폐기해라! 와 다를 바 없습니다. 새로운 클라이언트가 DHCP Offer 패킷을 받으면 3단계가 진행됩니다.
  1. DHCP Request - 3단계에서는 이제 서브넷 네트워크 상에 DHCP 서버가 있다는 사실을 알았으니, IP를 내놓으라 DHCP Request를 보냅니다. 이 과정은 사실 DHCP Discover 그림과 동일한데, 네트워크 상 모든 장비에게 Broadcast를 하기 때문입니다. Broadcast의 이유는, DHCP 서버가 여럿일 수도 있기 때문이라고 하네용.
  1. DHCP ACK - 사진 2장을 지금 야무지게 돌려 쓰고 있습니다. DHCP 서버는 DHCP Request를 받고, 자신의 IP table에서 이용 가능한 IP 주소를 찾습니다. 그리고 해당 IP를 패킷에 넣어 전송하게 되죠. 이 과정 역시 Broadcast로 이루어집니다.

순서로 진행이 됩니다. 이 과정을 줄여 DORA라고 부르기도 한다네요.

이외 갱신과 반환의 동작이 필요한데, 이 과정은 이미 IP 주소를 보유하고 있기 때문에 1:1 동작으로 수행됩니다.

결론

오늘은 네트워크에서 IP를 할당해주는 DHCP에 대해 알아보았습니다. 일반적인 네트워크 커리큘럼이 아니라, 제가 끌리는 순서 대로 글을 작성했다 보니 설명에 빈 공간이 생기는 것 같네요.

image

하지만 단단히 토대를 다시 정리 하기엔, 이미 너무 먼 길을 와 버린 것 같습니다. 잃어버린 공백의 부분은 맥거핀으로 남겨야겠네요.

다음 주 화요일까지 얼마 남지 않았는데 모두 힘내서 스터디 마무리 합시다!

image

steammando commented 10 months ago

화이탱~

snaag commented 10 months ago

ㅋㅋㅋㅋㅋㅋㅋ 우와 글 진짜 재미있게 잘쓰시네요 👍🏻👍🏻👍🏻 블로그 하시면 방문자 금방 많아질것같습니다 ㅋㅋ