DHCP, NAT, DNS

Jeongtae Kim·2022년 8월 8일
1

네트워크

목록 보기
8/8
post-thumbnail

📒 DHCP란 무엇일까?

의미

'Dynamic Host Configuration Protocol'의 줄임말로 '동적 호스트 설정 프로토콜'이라는 뜻입니다. IP 주소 및 기타 통신 매개변수를 네트워크에 연결된 장치에 자동으로 할당해주는 프로토콜입니다.

📌 DHCP의 장점과 단점

  • 장점
    - DHCP의 사용 없이는 수동으로 IP 주소를 할당해야 하기 때문에 네트워크 관리자가 해야 할 작업을 간소화시킵니다.
    - IP 주소의 충돌을 방지하여 모든 사용자가 인터넷을 정상적으로 이용할 수 있게 합니다.
    - 별도의 IP 할당 서버가 필요하지 않아 네트워크 관리를 효율적으로 할 수 있습니다.
  • 단점
    - DHCP는 아무런 인증 과정을 거치지 않아 사이버 공격에 취약하여 잘못된 정보를 클라이언트에게 제공할 수 있습니다.
    - IP 할당을 DHCP 서버에 의존하고 있어 서버가 종료되면 IP 할당이 불가능하여 인터넷 사용도 불가능합니다.

📌 DHCP의 동작

이미지 출처

  1. DHCP Discover : 브로드캐스트 방식으로 클라이언트 컴퓨터가 DHCP 서버를 찾기 위해 메시지를 보내어 서버의 위치를 찾습니다.
  2. DHCP Offer : DHCP Discover 메시지 중 Flag 값이 1이면 브로드캐스트 방식, 0이면 유니캐스트 방식으로 클라이언트의 메시지를 받은 DHCP 서버가 자신의 IP 주소와 클라이언트가 사용할 IP 주소, DNS 주소, 임대 시간 등을 보냅니다.
  3. DHCP Request : 브로드캐스트 방식으로 하나의 선택된 DHCP 서버에 클라이언트가 사용할 네트워크 정보를 요청합니다.
  4. DHCP Ack : DHCP Ask 메시지 중 Broadcast Flag 값이 1이면 브로드캐스트 방식, 0이면 유니캐스트 방식으로 클라이언트가 사용할 네트워크 정보를 전달합니다. DHCP Offer에서 보내는 정보와 동일한 매개변수가 있습니다.

📒 NAT란 무엇일까?

의미

'Network Address Translation'의 줄임말로 '네트워크 주소 변환'이라는 뜻입니다. 라우터 등의 장비를 이용하여 사설 IP에서 공인 IP로 변경할 때에 필요한 주소 변환 서비스로 외부 인터넷에 연결할 때는 DHCP로 할당한 사설 IP가 아닌 공인 IP를 이용해야 하기 때문에 사용합니다.

📌 NAT가 필요한 이유

  1. 공인 IP 주소 절약
    • IPv4로 표현 가능한 주소의 개수는 약 43억개입니다. 우리는 컴퓨터, 스마트폰 등 장비를 둘 이상 사용하는 경우도 많은 편이기 때문에 공인 IP만 있었다면 이미 IPv4는 바닥이 났을 것입니다. 사설망과 NAT가 있었기 때문에 공유기같은 라우터에만 공인 IP를 사용하여 공인 IP의 주소를 절약할 수 있었던 것입니다.
  2. 보안의 목적
    • 공개된 인터넷망에서 사설망으로 해킹이나 침입의 위험이 있습니다. 그러나 NAT가 있기 때문에 외부 인터넷망에선 내부 사설 IP를 가진 호스트들을 확인할 수 없고 직접적으로 접근하지 못하기 때문에 NAT는 공개망과 사설망 사이의 방화벽에서도 쓰이는 기술입니다.

📌 NAT의 동작

이미지 출처

통신을 할 때에 NAT 테이블을 보면 다음과 같은 특징이 있습니다.

  • 사설망에 위치한 호스트들은 각각 다른 사설 IP와 포트 번호를 가지고 있습니다.
  • 외부로 나갈 때에 동일한 공인 IP와 각각 다른 포트 번호로 변환됩니다.
  • 같은 곳에 접속할 때 그 목적지의 IP 주소와 포트 번호는 같습니다.

이때 주소만 변환한다면 NAT, 포트번호까지 변환한다면 PAT라고 합니다. 그러니까 PAT는 NAT에 속한다고 할 수 있습니다.

이를 참고하여 NAT 동작 방식으로 웹서버에 통신한다면 다음과 같이 통신할 수 있습니다.

  1. 클라이언트가 웹서버에 접근하기 위해 사설 IP와 할당된 포트로 요청 패킷을 송신합니다.
  2. NAT 역할을 수행하는 장비에서 요청 패킷을 수신한 후 사설 IP를 공인 IP로 변경하고 웹서버로 다시 송신합니다. 그리고 변경 전후의 IP 주소를 NAT 테이블에 저장됩니다.
  3. 요청 패킷을 수신한 웹서버가 사용자의 요청을 보고 공인 IP로 응답 패킷을 송신합니다.
  4. 응답 패킷을 수신한 NAT 장비가 NAT 테이블을 확인하고 사설 IP로 응답 패킷을 송신하면 사용자가 최종적으로 응답 패킷을 수신하게 됩니다.

📒 DNS란 무엇일까?

의미

'Domain Name System'의 줄임말로 사용자가 URL에 입력한 도메인을 네트워크 상에서 사용되는 IP 주소로 바꾸고 해당 IP 주소로 접속하는 과정, 전체 시스템을 말합니다.

📌 DNS의 배경

이제 NAT로 인터넷 접속도 가능하게 되었는데 어떠한 웹 사이트에 들어가기 위해서는 웹서버의 IP 주소를 알아야 합니다. 그러나 우리도 하루에도 많은 사이트에 들어가는데 많은 IP 주소를 외우는 것은 어려운 일입니다. 그래서 외우기 쉬운 도메인 네임이라는 것을 사용하여 구글에 들어갈 때는 IP 주소 대신에 'google.com'이라고 되게 만들고 싶습니다.

이제 도메인 네임을 IP 주소로 바꾸는 시스템이 필요한데 DNS가 나오기 전에는 'Hosts File'이라는 것이 있었습니다.

이미지 출처

이렇게 IP 주소와 도메인을 대응시켜 어떠한 도메인으로 접속하면 대응하는 IP 주소로 접속되게 하는 파일이 Hosts File입니다. 기존에는 컴퓨터마다 이 파일만을 이용하여 접속을 했지만 호스트들이 어마어마하게 많아지면서 복잡하지만 본질적인 해결책인 DNS가 등장하게 되었습니다. 참고로 Hosts File은 아직도 있으며 Hosts File을 먼저 검사한 뒤 없으면 DNS로 검사하게 되어있습니다.

📌 DNS의 구성

  1. 도메인 네임 스페이스 (Domain Name Space) : 도메인 주소를 어떻게 관리하고 분산시킬 것인지에 대한 방법입니다. DNS는 한 서버가 마비되었을 때 도메인을 사용하지 못하는 재앙을 막기 위해 도메인을 계층적으로 여러 컴퓨터에 분산시키는 방식을 채택했습니다.
  2. 네임 서버 (Name Server, 혹은 DNS 서버) : 도메인 주소를 관리하기 위해 사용하는 DNS 전용 서버입니다. 보통 도메인 주소의 일부만을 가진 분산 형태를 가집니다. (.kr, .com 등)
  3. 리졸버 (Resolver) : DNS 상의 클라이언트로 네임 서버에게 도메인 주소에 대한 IP 주소를 물어보고 그 결과를 클라이언트에게 제공하는 장비나 프로그램입니다.

📌 DNS의 동작

예시 도메인 : google.com. (URL 끝에는 루트 도메인인 '.'이 생략되어 있습니다.)

  1. 클라이언트와 연결되는 로컬 DNS 서버는 알고 있는 전 세계에 골고루 흩어져 있는 루트 네임 서버 중 하나의 루트 네임 서버를 선택합니다.
  2. 로컬 DNS 서버는 루트 네임 서버에 '.com'을 담당하는 네임 서버 목록을 리턴해달라고 요청합니다. 루트 네임 서버는 해당 목록을 리턴합니다.
  3. 그 서버들 중 하나를 선택하여 'google.com'을 담당하는 네임 서버 목록을 리턴해달라고 요청합니다. '.com' 네임 서버는 해당 목록을 리턴합니다.
  4. 최종적으로 그 서버들 중 하나를 선택하여 'google.com'의 IP 주소를 리턴해달라고 요청합니다. 그 IP 주소를 클라이언트로 전달하여 서버에 접속하게 됩니다.

. -> .com -> google.com : URL을 완성할 때까지 네임 서버를 찾아갑니다.

DNS 참고 글

생활코딩 리눅스 요약 : 24 - 그룹 ~ 29 - 도메인 (domain)

출처

DHCP - NordVPN
DHCP - crone
DHCP - jwprogramming
NAT - sangjinkang
NAT - zigispace
DNS - JS_active.log
DNS - Hanamon

profile
유용할지도 모른다.

1개의 댓글

comment-user-thumbnail
2022년 8월 25일

유익한 정보 감사합니다.

답글 달기