자바 - IP주소(IP Address), 네트워크 주소, 호스트 주소에 대해서 알아보자
IP주소(IP Address)
IP주소는 컴퓨터(호스트, host)를 구별하는데 사용되는 고유한 값으로 인터넷에 연결된 모든 컴퓨터는 IP주소를 갖는다. IP주소는 4byte(32bit)의 정수로 구성되어 있으며, 4개의 정수가 마침표를 구분자로 'a.b.c.d'와 같은 형식으로 표현된다. 여기서 a, b, c, d는 부호없는 byte값, 즉 0~255사이의 정수이다. (ex. 192.168.10.100)
IP주소는 다시 네트워크 주소와 호스트 주소로 나눌 수 있는데, 32bit(4 byte)의 IP주소 중에서 네트워크 주소와 호스트 주소가 각각 몇 bit를 차지하는 지는 네트워크를 어떻게 구성하는 가에 따라 달라진다. 그리고 서로 다른 두 호스트의 IP주소의 네트워크 주소가 같다는 것은 두 호스트가 같은 네트워크에 포함되어 있다는 것을 의미한다.
윈도우 os에서 호스트의 IP주소를 확인하려면 cmd에서 ipconfig를 입력하면 된다.
네트워크 주소, 호스트 주소
cmd창에서 ipconfig를 입력해 얻은 IP주소와 서브넷 마스크를 2진수로 표현하면 아래와 같다.
IP주소
192 | 168 | 10 | 100 | ||||||||||||||||||||||||||||
1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 |
네트워크 주소 | 호스트 주소 |
서브넷 마스크(Subnet Mask)
255 | 255 | 255 | 0 | ||||||||||||||||||||||||||||
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
IP주소와 서브넷 마스크를 비트연산자 '&'로 연산하면 IP주소에서 네트워크 주소만을 뽑아낼 수 있다.
192 | 168 | 10 | 100 | ||||||||||||||||||||||||||||
1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 |
&
255 | 255 | 255 | 0 | ||||||||||||||||||||||||||||
1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
=
192 | 168 | 10 | 0 | ||||||||||||||||||||||||||||
1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
'&'연산자는 bit의 값이 모두 1일 때만 1을 결과로 얻기 때문에 IP주소의 마지막 8bit는 모두 0이다. 이 결과로 네트워크 주소는 24 bit(192.168.10)이라는 것과 호스트 주소는 마지막 8비트(100)이라는 것을 알 수 있다.
IP주소에서 네트워크 주소가 차지하는 자리수가 많을수록 호스트 주소의 범위가 줄어들기 때문에 네트워크의 규모가 작아진다. 이 경우 호스트 주소의 자리수가 8자리이기 때문에 256개(2^8개)의 호스트만 이 네트워크에 포함될 수 있다.
호스트 주소가 0인 것은 네트워크 자신을 나타내고, 255는 브로드캐스트 주소로 사용되기 때문에 256-2로 실제로 네트워크에 포함 가능한 호스트 개수는 254개이다.
이처럼 IP주소와 서브넷 마스크를 '&'연산 하면 네트워크 주소를 얻어낼 수 있어 서로 다른 두 호스트의 IP주소를 서브넷 마스크로 '&'연산을 수행해서 비교하면 이 두 호스트가 같은 네트워크 상에 존재하는 지의 여부를 쉽게 확인할 수 있다.
'언어공부 > Java' 카테고리의 다른 글
자바 - 소켓(socket) 프로그래밍, TCP와 UDP (0) | 2021.06.30 |
---|---|
자바 - InetAddress 클래스와 URL(Uniform Resource Locator) (0) | 2021.06.30 |
자바 - 네트워킹(Networking), 클라이언트와 서버(Client & Server) (0) | 2021.06.28 |
자바 - 스트림을 이용해 파일 복사(카피)하기 (0) | 2021.06.06 |
자바 - 직렬화(serialization), ObjectInputStream&ObjectOutputStream (0) | 2021.06.06 |