-
PC에 인터넷을 연결할 때 사용하는 어댑터(유선, 무선, wifi, ...) 에는 IPv6 주소와 IPv4 주소가 있다.
IPv6주소는 16진수로 표기한 주소,
IPv4주소는 10진수로 표기되어 있다.(참고로 16진수는 16이 한 단위이고, 1~9는 그대로 표기하고 10~16은 A~F로 표기한다)
우리가 프로그래밍을 할 땐 IPv4 주소를 사용한다.
DNS service(Domain Name Service)
도메인(ex. www.naver.com) -> IP주소로 바꿔주는 서비스이다.
(역으로도 제공)내 PC의 IP주소와 기타 정보를 확인하는 방법은 powershell에서 해당 명령어를 입력하면 된다.
(cmd창에서 입력해도 동일하다!)
Windows : ipconfig 또는 ipconfig /all (더 자세한 정보를 보여준다.)
Mac/Linux : ifconfig 또는 ip addr show
DNS확인 : nslookup(윈도우) 또는 host(맥, 리눅스)
nslookuppowershell에서 nslookup을 입력 후 사이트 주소를 입력하면 DNS 정보를 확인할 수 있다.
이름에는 실제 주소를 보여주고
IPv4주소를 확인할 수 있다.
IP주소가 여러개인 경우에도 모두 보여준다.
Aliases는 별칭이란 뜻으로, 사용자에게는 실제 이름 대신 이 Aliases를 보여준다.
추가 명령어로는,
hostname : 내 PC이름을 보여준다.
ping <ip주소> : 해당 ip로의 연결여부 확인 (포트번호까지 연결이 가능한지는 알려주지 않는다.)if) 포트번호까지 연결이 가능한지 알아보려면 telnet을 사용하면 된다!
any address
0.0.0.0인 IP주소인데, All을 생각하면된다.예를들어, 0.0.0.0 <포트번호>
라고 입력하면 모든 IP주소에 대해서 <포트번호>로 기다리겠다는 뜻이다.
Loopback Address
127.0.0.1
모든 PC에 아무것도 설치하지 않아도 무조건 사용 가능한 IP주소이다! localhost를 가르키게됨
localhost == 127.0.0.1(Loopback Address)
listen port : 연결요청, 처리요청을 기다리는 포트(단방향)
서버쪽에서 가짐
클라이언트는 listen port가 없다.
(서버와 클라이언트 역할을 하는 p2p의 경우, listen 포트도 가지고 있고 클라이언트도 가지고있다!
예를들면 토렌트... )포트번호는 0~65535 범위를 가진다.
Well Know Port Numbers : 국제인터넷주소관리기구가 미리 예약한 포트(서버 만들 때 이 번호는 사용하지 않는다.)
Registered Port Numbers : 기업에서 사용하는 포트(서버 만들 때 이 번호로 사용)
Dynamic Or Private Port Numbers : 운영체제가 클라이언트에게 동적으로 부여하는 포트.
프로그래밍을 통해 임의로 지정할 수도 있다.
java.net.InetAddress로 IP 주소 얻기
InetAddress : IP 주소 표현한 클래스
로컬 컴퓨터의 IP 주소
도메인 이름을 DNS에서 검색한 후 IP 주소를 가져오는 기능 제공import java.net.InetAddress; import java.net.UnknownHostException; public class InetAddressExample { public static void main(String[] args) { try { // InetAddress 클래스의 정적메소드인 getLocalHost() 메소드를 // 호출하여, 내 PC의 IP주소를 가지고 있는 InetAddress 객체를 얻어냄! InetAddress local = InetAddress.getLocalHost(); System.out.println("내 컴퓨터 IP주소 : " + local.getHostAddress()); System.out.println(local); // --- // DNS서버에 질의한 도메인명(아래, www.naver.com)에 매핑되어있는 // 모든 IP주소를 요청 // www.를 붙이지 않은 도메인 명을 입력하면 모든 IP주소가 나옴 InetAddress[] iaArr = InetAddress.getAllByName("naver.com"); for(InetAddress remote : iaArr) { System.out.println("www.naver.com IP주소 : " + remote.getHostAddress()); } // enhanced for } catch(UnknownHostException e) { e.printStackTrace(); } // try-catch } // main } // end class
getHostAddress() : IP주소를 String으로 반환
getLocalHost() : InetAddress 타입을 반환
이 메소드를 사용하여 생성한 객체를 직접 찍어보면 객체의 레퍼런스 대신,<내PC이름>/<IPv4주소> 형태로 더 상세한 정보를 확인할 수 있다.
'JAVA' 카테고리의 다른 글
Eclipse JEE 버전 설치하기 (0) 2022.06.20 아파치 메이븐(Apache Maven)이란? / 메이븐 프로젝트 생성하기 (0) 2022.06.20 JAVA Collections 클래스의 유용한 메소드들 (0) 2022.04.15 멀티 스레드의 개념(왜 멀티 스레드를 사용해야할까?) (0) 2022.04.09 TCP 네트워킹과 log4j2 사용방법(로그를 찍어보자!) (0) 2022.04.06