network

[network] 혼자 공부하는 네트워크 03-2 정적 IP 주소와 동적 IP 주소 (240812)

hail2y 2024. 8. 12. 20:38

IP 주소의 분류

  • 공인 IP 주소와 사설 IP 주소
  • 정적 IP 주소와 동적 IP 주소 -- 이 글에서 다룰 내용 

정적 할당

  • 호스트에 직접 (수작업으로) IP 주소를 부여하는 방식
  • 이렇게 할당된 IP 주소 = 정적 IP 주소(static IP address)
  • 정적 IP 주소를 부여할 때 어떤 값들을 입력해야 하는지는 기억하자
    - 부여하고자 하는 IP 주소, 서브넷 마스크, 게이트웨이(라우터) 주소, DNS 주소

https://www.youtube.com/watch?v=NTHyAzHHA3U&list=PLVsNizTWUw7HfOCgvlfHIDPPo3TE-2iQM&index=27&t=615s

기본 게이트웨이 (default gateway)

  • 게이트웨이(gateway)의 일반적인 의미
    - 서로 다른 네트워크를 연결하는 하드웨어적/소프트웨어적 수단
  • 호스트가 속한 네트워크 외부로 나가기 위한 기본적인 첫 경로(첫 번째 홉)
  • 네트워크 외부와 연결된 라우터(공유기)의 주소를 의미하는 경우가 많음
  • IP 할당의 맥락에서 사용된 '게이트웨이'라는 용어는 기본 게이트웨이(즉, 라우터(공유기)의 주소)를 의미

cf. DNS 주소

- 로컬 DNS 서버 주소를 의미

- 도메인 이름을 기반으로 패킷을 주고받을 때 도메인 이름을 IP 주소로 변환해주는 작업을 하는 것이 DNS 서버

- 호스트들끼리 패킷을 주고받을 때 기본적으로 IP 주소를 활용

- 일반적으로 DNS 서버 주소를 ISP가 자동으로 할당해 주는 경우가 많음

- 공개된 DNS 주소도 있음; ex. 8.8.8.8, 1.1.1.1

모든 IP 주소를 정적으로 할당할 수 있을까?

  • 호스트의 수가 많아질 경우 관리 곤란
  • 의도치 않게 잘못된 IP 주소를 입력할 수도 있고, 중복된 IP 주소를 입력할 수도 있음
  • 휴먼 에러(human error) 발생

동적 할당

  • 호스트에 IP 주소를 프로토콜을 활용해 자동으로 할당하는 방식
  • IP 동적 할당에 사용되는 대표적인 프로토콜: DHCP(Dynamic Host Configuration Protocol)
  • 이렇게 할당된 IP 주소 = 동적 IP 주소(dynamic IP address)

DHCP를 통한 IP 주소 할당

  • 클라이언트와 DHCP 서버 간 메시지 송수신을 통해 할당이 이루어짐
  • 클라이언트: IP 주소를 할당받고자 하는 호스트
  • DHCP 서버: 호스트에게 IP 주소를 제공하는 호스트
    - DHCP 서버의 역할은 일반적으로 라우터(공유기)가 수행
    - 특정 호스트에 DHCP 서버 기능을 추가할 수도 있음
    - DHCP 서버는 클라이언트에게 할당 가능한 IP 주소 목록을 관리하다가 클라이언트 요청 시 IP 주소를 할당
  • DHCP로 할당받은 동적 IP 주소는 사용할 기간(임대 기간)이 정해짐

https://www.youtube.com/watch?v=NTHyAzHHA3U&list=PLVsNizTWUw7HfOCgvlfHIDPPo3TE-2iQM&index=27&t=615sㄹ

[chatGPT 답변 참고 - 윈도우와 맥 환경에서 네트워크 확인 명령어]

1. 윈도우

위의 명령어 'ipconfig /all'은 윈도우에서만 동작되는 듯 싶고 여기서 '/all'은 네트워크 어댑터에 대해 상세한 정보를 출력하라는 의미이다. 기본적으로 ipconfig는 네트워크 어댑터의 IP 주소, 서브넷 마스크, 기본 게이트웨이 정보만을 보여주지만 '/all' 옵션을 추가할 시 다음의 정보도 확인할 수 있다.

  • 호스트 이름
  • DNS 서버 주소
  • MAC 주소(물리적 주소)
  • DHCP 서버 정보
  • IP 리스(임대) 시작 및 만료 시간
  • 각 네트워크 어댑터에 대한 추가 정보(예: 상태, 설명 등)

2. macOS

기본적으로는 ifconfig 명령어를 사용한다. 네트워크 관련 명령어는 다음과 같다.

chatGPT - 네트워크 관련 명령어

동적 IP 리스 정보가 궁금해서 관련 명령어들을 물어봤던 건데 결과를 직접 확인해보고, 또 Lease 키워드를 포함하고 있는지 명령어로 검색해 보아도(-> | grep Lease) 'system_profiler SPNetworkDataType 명령어 실행- Wi-Fi - DHCP Server Responses' 부분에서만 확인할 수 있었다. 여기서는 리스 기간이 0으로 나타나 있는데 리스가 무제한일 경우 0으로 표시될 수 있다고 한다. DHCP Message Type에서 0x05는 DHCP ACK 메시지를 나타낸다고 한다.

 

chatGPT 왈, "일반적으로 DHCP 리스 정보를 확인하려면 다음과 같이 수동으로 확인해야 한다." - cd /var/db/dhcpclient/leases → cat <파일이름> 이대로 따랐더니 권한이 안 되는지 거부당했다; 위 명령어로 확인할 수 있었던 걸로 만족!

macOS 터미널 - 'system_profiler SPNetworkDataType' 명령어 실행 결과 중

동적 IP의 리스 정보까지 확인하려다 길이 많이 샜는데 주소 혹은 간단한 정보만 확인하는 거라면 다음 명령어로도 가능하다. 동적 IP 즉, DHCP로 할당된 IP 주소가 다양한 네트워크 환경에서 사용될 수 있다는데 대부분 Wi-Fi 환경에서 사용한다고 하여 그 부분에 집중하여 작성했다.

  • ipconfig getifaddr en0
  • networksetup -getinfo Wi-Fi 

ifconfig를 하면 나 같은 경우 장황하게 알 수 없는 정보들이 나열되어서 뭐가 뭔지 구분이 힘들었는데, chatGPT 덕분에 조금은 이해할 수 있었다. 아래에 나온 약어들은 인터페이스 이름들을 지칭하는데, 역할과 유형에 따라 설계되었다. 다음을 간단히 요약하면 lo는 루프백, en은 이더넷, awdl은 Apple의 무선 연결, utun은 터널 인터페이스를 의미한다.

chatGPT - ifconfig 내 명령어 해석

동적 IP 주소 할당 과정에서 주고받는 메시지

DHCP Discover

DHCP Offer

DHCP Request

DHCP Acknowledgement (이하 DHCP ACK)

https://losskatsu.github.io/os-kernel/dhcp/#3-dhcp%EC%9D%98-ip-%ED%95%A0%EB%8B%B9-%EA%B3%BC%EC%A0%95

 

 DHCP Discover (클라이언트 DHCP 서버)

  • DHCP 서버 찾는 메시지
  • 브로드캐스트로 전송
  • 클라이언트는 아직 IP 주소를 할당받지 못함: 송신지 IP 주소는 0.0.0.0으로 설정

 DHCP Offer (DHCP 서버 → 클라이언트)

  • 클라이언트에게 할당 가능한 IP 주소 정보를 제안하는 메시지
  • 할당 가능한 IP 주소, 서브넷 마스크, 임대 기간 등의 정보 포함

 DHCP Request (클라이언트  DHCP 서버)

  • DHCP Offer에 대한 응답
  • 브로드캐스트로 전송(∵아직까지 동적 메시지를 할당받지 못한 상태이기 때문에)

DHCP ACK(DHCP 서버 → 클라이언트)

  • 최종 승인과 같은 메시지
  • DHCP ACK 메시지를 수신한 클라이언트는 이제 할당받은 IP 주소를 자신의 IP 주소로 설정한 후 임대 기간 동안 사용
  • 원칙적으로는 사용 기간이 끝나면 IP 주소를 DHCP 서버에 반납하고 재할당을 위해서는 같은 과정을 거쳐야 함
  • 임대 갱신(Lease Renewal)을 통해 임대 기간을 연장할 수 있음
    - IP 주소 임대 기간이 끝나기 전에 임대 기간을 연장하는 것

    - 임대 기간이 끝나기 전에 기본적으로 두 차례 자동으로 수행
    - 자동 임대 갱신이 모두 실패하면 그때 IP 주소 반납

https://www.netmanias.com/en/post/techdocs/5998/dhcp-network-protocol/understanding-the-basic-operations-of-dhcp