[Java Network] 2. IP주소 InetAddress


java에서 IP주소 InetAddress 클래스에 대한 포스팅이다. InetAddress 클래스는 Java에서 IP 주소를 표현하고 네트워크와 관련된 작업을 수행할 수 있도록 제공되는 표준 클래스이다. 이 클래스는 IP 주소와 호스트 이름을 다룰 수 있으며, 네트워크 애플리케이션 개발에 사용한다.



1. IP 주소와 서브넷 마스크

  1. IP 주소
    • 네트워크에 연결된 장치를 식별하는 고유한 주소.
    • 예: 192.168.1.10
  2. 서브넷 마스크
    • 네트워크 주소와 호스트 주소를 구분하기 위한 값.
    • 예: 255.255.255.0
  3. 작동 방식
    • 서브넷 마스크는 IP 주소와 비트 단위로 AND 연산을 수행하여 네트워크 주소를 구합니다.
    • 예:
      • IP 주소: 192.168.1.10 (이진: 11000000.10101000.00000001.00001010)
      • 서브넷 마스크: 255.255.255.0 (이진: 11111111.11111111.11111111.00000000)
      • 네트워크 주소: 192.168.1.0 (이진: 11000000.10101000.00000001.00000000)


ipconfig 명령어

명령어 ipconfig를 실행하면 네트워크 인터페이스에 대한 IP 정보를 볼 수 있다.

$ ipconfig
이더넷 어댑터 이더넷:

    IPv4 주소 . . . . . . . . . : 192.168.1.10
    서브넷 마스크 . . . . . . . : 255.255.255.0
    기본 게이트웨이 . . . . . . : 192.168.1.1

1. IPv4 주소

  • 장치의 IP 주소
  • 예: 192.168.1.10
  • 설명:
    • 이더넷 어댑터에 할당된 고유한 IP 주소
    • 네트워크에서 이 장치를 식별하는 데 사용
    • 192.168.1.10은 사설 IP 주소이며, 보통 가정용 네트워크나 소규모 네트워크에서 사용
    • 이 IP 주소는 서브넷 내에서 유효한 호스트 주소로 사용
    • 네트워크 주소가 192.168.1.0이고 브로드캐스트 주소가 192.168.1.255라면, 192.168.1.10은 이 범위 내의 특정 호스트

2. 서브넷 마스크

  • 네트워크와 호스트를 구분하기 위한 마스크.
  • 예: 255.255.255.0
  • 설명:
    • 네트워크 주소와 호스트 주소를 구분하기 위한 값
    • 255.255.255.0클래스 C 서브넷 마스크로, 네트워크의 앞 24비트를 네트워크 부분으로, 나머지 8비트를 호스트 부분으로 사용
    • 이 서브넷에서는:
      • 네트워크 주소: 192.168.1.0
      • 브로드캐스트 주소: 192.168.1.255
      • 유효한 호스트 주소 범위: 192.168.1.1 ~ 192.168.1.254
    • 서브넷 내에서 최대 254개의 장치(호스트)를 연결할 수 있음

3. 기본 게이트웨이

  • 네트워크 외부로 데이터를 전송할 때 사용하는 라우터의 IP 주소
  • 예: 192.168.1.1
  • 설명:
    • 네트워크 외부로 데이터를 전송할 때 사용하는 라우터의 IP 주소
    • 게이트웨이는 다른 네트워크(예: 인터넷)와 통신하기 위한 출입구 역할
    • 일반적으로 가정용 네트워크에서는 라우터가 기본 게이트웨이 역할을 하며, 대부분의 사설 네트워크에서 기본적으로 192.168.1.1을 사용



2. IP주소 InetAddress 클래스

import java.net.InetAddress;

public class IpNetAddressExample {
    public static void main(String[] args) {
        try {
            // 로컬 호스트 정보
            InetAddress localHost = InetAddress.getLocalHost();
            System.out.println("로컬 호스트 이름: " + localHost.getHostName());
            System.out.println("로컬 호스트 IP 주소: " + localHost.getHostAddress());

            //도메인명으로 IP주소 정보
            InetAddress google = InetAddress.getByName("www.google.com");
            System.out.println("호스트 이름: " + google.getHostName());
            System.out.println("IP 주소: " + google.getHostAddress());
            System.out.println("toString(): " + google.toString());

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
로컬 호스트 이름: XXXX-MacBook-Pro
로컬 호스트 IP 주소: 192.168.23.16
호스트 이름: www.google.com
IP 주소: 142.250.198.36
toString(): www.google.com/142.250.198.36