CS
  • CS-Study
  • database
    • B-Tree와 B+Tree
    • DB JOIN
    • DB Lock
    • DB 트래픽
    • DBCP (DB Connection Pool)
    • Flyway
    • Message Broker
    • MySQL InnoDB 스토리지 엔진
    • MySQL 엔진 아키텍처
    • RDB와 NoSQL
    • Redis
    • SQL Injection
    • 스키마 (Schema)
    • Table Scan과 Index Scan
    • Apache Kafka
    • Key
    • 뷰 (View)
    • 인덱스
    • 정규화
    • RDBMS, NoSQL의 클러스터링/리플리케이션 방식
    • 트랜잭션(Transaction)
    • 트랜잭션의 격리성(Transaction Isolation)
    • 프로시저와 트리거
    • DB 정규화 (Normalization)
  • etc
    • MSA
    • REST, REST API, RESTful
    • SOLID 원칙
    • TDD (Test-Driven Development)
    • 서버리스
    • 컨테이너와 도커
  • java
    • Collections
    • Garbage Collection
    • Generic
    • JDBC
    • Java Virtual Machine(JVM)
    • Java Thread
    • Java8 vs Java11 vs Java17
    • 객체지향 프로그래밍 OOP (Object Oriented Programing)
    • Optional
    • RxJava(Reactive Programming)
    • 문자열(String & StringBuffer & StringBuilder)
    • Synchronized
    • Virtual Thread
    • Wrapper Class
    • Equals()와 Hashcode()
    • final
    • Jackson 라이브러리
    • 리플렉션(Reflection)
    • static class와 static method
    • 스트림(Stream)과 람다(Lambda)
    • 스프링 프레임워크에서 사용되는 디자인 패턴
    • 예외처리(Exception)
    • Java Annotation
    • 추상클래스와 인터페이스
  • network
    • 3-way handshake
    • 4-way Handshake
    • DHCP(Dynamic Host Configuration Protocol)
    • DMZ(DeMilitarized Zone)
    • DNS(Domain Name System)
    • HTTP Method
    • HTTP 버전 비교
    • HTTP status code
    • HTTP
    • IP Address
    • Mutiplexing & Demultiplexing
    • OSI 7계층
    • SOP, CORS
    • TCP와 UDP
    • XSS와 CSRF
    • gRPC
    • Stateless와 Connectionless
    • 라우터 Router
    • 로드밸런서(Load Balancer)
    • 브라우저에 URL입력시 네트워크 상 일어나는 일
    • 서브넷 마스크, 게이트웨이
    • 웹 소켓과 소켓 통신
    • 쿠키(Cookie)와 세션(Session)
  • operating-system
    • IPC (Inter Process Communication)
    • 인터럽트
    • TLB
    • 스레싱 Thrashing
    • Thread Pool, Fork-Join
    • Thread Safe
    • 프로세스
    • 가상 메모리
    • 데드락 (DeadLock, 교착 상태)
    • 동기/비동기 & 블로킹/논블록킹
    • 동기화(Synchronization)
    • 메모리 할당과 단편화
    • 뮤텍스와 세마포어, 모니터
    • 세그먼테이션과 페이징
    • 운영체제
    • 캐시 메모리
    • Context switching(문맥 교환)
    • 컴파일
    • 파일 시스템
    • 페이지 교체 알고리즘(Page Replacement Algorithm)
    • 프로세서 스케줄링 알고리즘
    • 프로세스 주소 공간
  • spring
    • @Transactional
    • AOP(Aspect-Oriented Programming)
    • DTO, DAO, VO, Entity
    • DispatcherServlet
    • Hibernate, JPA, Spring Data JPA
    • Ioc와 DI
    • JPA 연관관계 맵핑
    • N+1 Problem
    • ORM
    • Persistence Context
    • SQL Mapper vs ORM vs QueryBuilder
    • Servlet Filter와 Spring Interceptor
    • Servlet
    • Spring MVC와 Spring Boot
    • Tomcat
    • WebFlux
Powered by GitBook
On this page
  • 등장배경
  • DHCP란?
  • DHCP 특징
  • 호스트 구성 정보 (Configuration Information)
  • DHCP 동작 절차
  • DHCP Relay Agent
  • DHCP의 IP주소 할당 방식
  1. network

DHCP(Dynamic Host Configuration Protocol)

Previous4-way HandshakeNextDMZ(DeMilitarized Zone)

Last updated 11 months ago

동적 호스트 설정 프로토콜

등장배경

  • TCP/IP 프로토콜을 사용하는 모든 호스트들은 , 가 할당되어야 정상적으로 네트워크와 연결이 가능함

  • 다른 망과 통신하기 위해서는 디폴트게이트웨이 주소를 알아야하고, IP 주소 대신 도메인 이름을 사용해 통신하기위해 도 알아야함

  • 일반 사용자들이 해당 주소들을 입력하는 것이 쉽지 않으므로 호스트 설정 프로토콜이 등장하게 되었음

DHCP란?

  • 개념

    • DHCP 서버에 의한 호스트 구성정보 동작할당 절차 정의

    • 호스트를 인터넷에 연결할때 호스트 구성정보를 자동으로 할당해주는 프로토콜

      • DHCP 서버 : 호스트 구성 정보를 유지하고 있는 서버

    • IP주소, 서브넷마스크, 디폴트 게이트웨이 주소, DNS 서버주소 등을 자동으로 할당해주는 프로토콜

  • 원리

    • 클라이언트가 DHCP 서버에게 IP를 요청하고 DHCP가 현재 사용하지 않는 IP를 잠시 임대해주는 방식

      • 같은 IP를 계속 부여하는 것이 아닌 임대 시간 동안 빌려주는 것

      • 항상 같은 IP가 아닌 그때 그때마다 동적으로 IP가 변경될 수 있음

    • 일반적인 가정집이나 사무실에서 가장 많이 사용되는 네트워크 사용 방법

DHCP 특징

  • 클라이언트/서버 형태로 동작함

    • 동적인 구성 정보를 요청/제공하는 프로토콜

    • DHCP 클라이언트(요청) 및 서버(응답)가 동일 서브넷에 있을 수도 있고, 다른 서브넷에 분리될 수 도 있음

  • UDP 기반 프로토콜

    • 서버가 사용 가능한 주소를 자동으로 확인하고 네트워크 클라이언트에게 IP 주소를 실시간으로 부여함

      • UDP 67(Server)번과 68(Client)번 포트를 사용함

    • DHCP는 네트워크 장비의 초기화 과정에서 일어나기 때문에 네트워크 구성 정보를 효율적으로, 빠르게 구성할 수 있어야 함

      • 신뢰성보다 속도가 더 중요하기 때문에 UDP를 사용함

장점

  • 사용자 편의성

    • ip 주소들을 외우고 있지 않아도 됨

  • IP 주소 절약

    • 필요할 때만 할당하고, 동시 사용자 수만큼 할당함

  • 신뢰성 높은 DHCP IP 주소 구성

    • 동일한 IP 주소를 사용하는 사용자들 사이 충돌 방지

  • 높은 이동성

    • 사용자는 네트워크 범위내에서 어디서든지 모바일 장치 이용 가능

  • 효율적인 네트워크 관리

    • DHCP 이용시 별도 IP 할당 서버가 필요하지 않으며 네트워크 관리 효율성 개선

보안문제

  • 승인받지 않은 DHCP 서버가 잘못된 정보를 클라이언트에게 제공할 위험성 존재

  • 승인받지 않은 클라이언트가 DHCP서버를 가로채 리소스에 대한 접근 권한 얻을 위험성 존재

  • 악성 클라이언트가 DHCP 리소스를 소모시킬 수 있는 위험성 존재

호스트 구성 정보 (Configuration Information)

DHCP 서버는 클라이언트에 다음 기본 정보를 제공한다.

기본 정보

  • 호스트 IP 주소

    • 동일한 네트워크 주소인지, 다른 네트워크 주소인지 판별

  • 서브넷 마스크(Subnetmast)

    • 네트워크 ID 필드 크기, 네트워크 주소 구분을 위한 필수 정보

    • 서브넷 마스크를 통해 해당 ip 주소와 연결된 네트워크 주소를 계산하고, 그 값을 통해 라우팅

  • 디폴트 게이트웨이 주소(Default Gateway Address)

    • 자신의 네트워크에 연결된 라우터의 주소, 목적지 주소가 동일 네트워크에 존재하지 않을 때 IP 데이터그램을 전달할 다음 홉 주소

추가 정보

    • 지역 DNS 서버의 주소, DNS Query를 전달할 서버

디폴트 게이트웨이 주소

기본적으로 host컴퓨터는 라우팅 테이블 정보가 없다. 따라서 자신과 연결되어있는 네트워크에 해당하는 목적지 주소가 있다면 해당 주소로 전송하면 된다. 하지만 그렇지 않을 경우 라우터로 패킷을 전송해야하고, 이 값을 디폴트 게이트웨이 주소라고 한다.

DHCP 동작 절차

  1. DHCP 서버 발견 (DHCP Server Discovery)

    • DHCP서버를 찾기 위해 단말이 DHCP Discover 메시지를 브로드캐스트함

    • 동일 서브넷 안의 모든 단말들은 해당 메시지 수신할 수 있음

  2. DHCP 서버 제안 (DHCP Server Offer)

    • Discover 메시지를 수신한 DHCP 서버는 자신을 알리기 위해 DHCP Offer 메시지를 브로드캐스팅(Broadcasting)함

      • DHCP Offer 메시지: 제안하는 IP주소, DHCP서버 ID, 임대기간 등 포함

    • Offer 메시지 또한 동일 서브넷 안의 모든 단말들이 수신

  3. DHCP 요청 (DHCP Request)

    • DHCP서버 존재를 확인한 호스트는 DHCP Request 메시지를 브로드캐스팅함

      • DHCP Request 메시지: 자신에게 IP주소를 제안한 DHCP 서버의 ID 포함

    • 특정 DHCP 서버에 요청하며 나머지 DHCP서버도 요청 메시지를 인지

  4. DHCP 확인 (DHCP Ack)

    • 서버는 DHCP Request 메시지의 DHCP 서버 ID 확인

    • 자신의 IP 주소와 동일한 경우

      • DHCP Ack메시지를 보로트캐스트 방식으로 전송하고 IP주소를 할당함

    • 자신의 IP 주소와 동일하지 않은 경우

      • 제안한 IP주소를 IP주소 풀에 그대로 유지

DHCP Relay Agent

  • 필요성

    • 일반적으로 DHCP 메시지는 브로드캐스팅되기 때문에 단말과 DHCP 서버는 반드시 동일 서브넷 상에 위치해야함

      • 그 이유는 라우터가 브로드캐스트 패킷을 다른 인터페이스로 전달하지 않기 때문에 단말이 송신한 DHCP 메세지가 라우터를 통해 DHCP 서버로 전달될 수 없기 때문

    • 하지만 이러한 제약 사항으로 DHCP 서버가 각 서브넷(랜)마다 위치해야만 하는데 실제 통신 사업자 망 혹은 기업망 환경에서 이와 같은 구성은 실용적이지 못함

    • 이와 같은 문제를 해결하기 위해 DHCP Relay Agent 개념이 생겨남

      • 라우터에 DHCP Relay Agent 기능을 설정하면, 서로 다른 서브넷에 위치하는 단말과 DHCP 서버간에도 DHCP 메시지 통신이 가능하게 됨

  • 개념

    • 서로 다른 서브넷에 위치한 클라이언트가 DHCP 서버와 통신할 수 있도록 중계하는 역할

      • 가장 핵심적인 기능은 단말이 송신하는 DHCP 브로드캐스트 패킷을 유니캐스트로 변환하여 DHCP 서버에 전달하는 것

    • DHCP 서버가 없는 서브넷으로부터 다른 서브넷에 존재하는 1개 이상의 DHCP서버에게 DHCP 또는 BOOTP 요청을 중계(Relay)

  • DHCP Relay Agent가 있는 환경에서 DHCP의 동작 원리

    1. [단말 -> DHCP 서버] DHCP Discover Message

      • 단말이 Discover 패킷을 브로드캐스트하면 이를 DHCP Relay Agent가 수신하여 유니캐스트로 변환하여 DHCP 서버로 전달

    2. [단말 <- DHCP 서버] DHCP Offer Message

      • DHCP 서버가 DHCP Relay Agent에게 유니캐스트로 보내면 이를 수신한 DHCP Relay Agent는 단말로 브로드캐스트로 변환하여 전송

    3. [단말 -> DHCP 서버] DHCP Request Message

      • 단말이 Request 패킷을 브로드캐스트하면 이를 DHCP Relay Agent가 수신하여 유니캐스트로 변환하여 DHCP 서버로 전달

    4. [단말 <- DHCP 서버] DHCP Ack Message

      • DHCP 서버가 DHCP Relay Agent로 유니캐스트로 보내면 이를 수신한 DHCP Relay Agent는 단말로 브로드캐스트로 변환하여 전송

BOOTP

  • 정적으로 클라이언트/서버 형태의 구성정보를 제공하는 프로토콜

  • 처음으로 부팅된 컴퓨터, 디스크를 갖지 않은 컴퓨터에게 IP주소등 구성정보 제공

  • 지금은 거의 사용되지 않은 구형 프로토콜, 상위버전읜 동적 DHCP와는 완벽 호환

DHCP의 IP주소 할당 방식

  • 동적 할당

    • 관리자가 DHCP에 IP주소를 유보해놓은 경우 동적할당 방식 활용

    • 제한된 수량의 IP주소를 '재사용', '한시적 사용', '자동 재활용' 가능

  • 자동 할당

    • DHCP서버는 관리자가 정한 규칙에 따라 IP주소 클라이언트에 영구할당하는 방식

    • DHCP서버에 이전 IP주소 할당 데이터가 있고, 동일한 IP주소를 동일한 클라이언트에게 재할당할 수 있다는 점에서 동적할당과 다름

  • 수동 할당

    • 관리자가 각 클라이언트에 대한 고유한 식별자를 IP주소에 수동할당하는 방식

    • 미리 할당된 IP주소를 장치에게 전달해 장치가 IP주소 사용

다른 서브넷에 있을 경우 이용함

스크린샷 2023-07-03 오후 3 54 51
IP 주소
서브넷 마스크
DNS 주소
DHCP Relay Agent
DNS 서버 주소