자바

자바 네트워크 - 서버와 클라이언트, IP 주소와 포트, InetAddress

알통몬_ 2017. 4. 11. 08:57
반응형


안녕하세요 알통몬입니다.

공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^

 


네트워크란 -> 여러 대의 컴퓨터를 통신 회선으로 연결한 것을 말합니다.

흔히들 말하는 서버는 서비스를 제공하는 프로그램이고

클라이언트는 서버가 제공한 서비스를 제공 받는 프로그램을 말합니다.

*인터넷에서 두 프로그램이 통신을 하기 위해선 연결을 요청하는 역할과 수락하는 역할이 필요합니다.

클래이언트/서버 모델은 한 개의 서버와 다수의 클라이언트로 구성되는 것이 일반적입니다.

하지만 두 개의 프로그램이 서버이면서 클라이언트의 역할을 하는 P2P(peer to peer) 모델도 있습니다.

P2P 모델에서는 먼저 접속을 시도한 컴퓨터가 클라이언트가 됩니다.

ex) 1:1 채팅 프로그램이나 공유 프로그램


IP 주소와 포트 :

 IP 주소란 컴퓨터의 고유한 조소입니다. 네트워크 어댑터인 랜 카드 마다 할당이 됩니다.

한 개의 컴퓨터에 랜 카드가 두 개가 장착되어 있다면?? => 두 개의 IP 주소를 할당할 수 있습니다.

IP를 확인하려면 명령 프롬프트에 들어가서 ipconfig /all 명령어를 치면돕니다.


IP주소는 XXX.XXX.XXX.XXX의 형태로 표현되고 xxx는 0~255 사이의 정수입니다.

IP 주소를 모른다면 통신을 할 수 없습니다.  프로그램은 DNS를 통하여 연결할 컴퓨터의 주소를 찾습니다.

IP는 컴퓨터의 네트워크 어댑터 까지만 갈 수 있는 정보입니다.

때문에 컴퓨터 내에서 실행하는 서버를 선택하기 위해서는 추가적인 정보를 필요로 하는데

이것이 바로 포트입니다. 서버는 시작할 때 고정적인 포트번호를 가집니다.(포트 바인딩)

기본적으로 웹서버는 80번과 바인딩되고, FTP 서버는 21번과 바인딩됩니다.

클라이언트가 웹 서버에 연결하려면 80번으로 연결을 요청해야하고

FTP서버에 연결하려면 21번에 연결을 요청해야합니다.


포트번호는 0번에서 65535번까지의 범위를 가집니다.


InetAddress로 IP 주소 얻기 :

자바는 IP 주소를 java.net.InetAddress 객체로 얻습니다.

InetAddress 는 로컬 컴퓨터의 IP 주소 뿐만이 아니라 도메인 이름을 DNS 에서 검색한 후

IP 주소를 가져오는 기능을 제공합니다.


로컬 컴퓨터의 주소를 얻고 싶을 때는

InetAddress inetAddress = InetAddress.getLocalHost(); 를 사용하고

외부 컴퓨터의 도메인 이름을 알고 있다면

InetAddress inetAddress =InetAddress.getByName(String host);

InetAddress[] inetArray = InetAddtess.getAllByName(String host);

처럼 사용하면 됩니다.


예제)

import java.net.InetAddress;

import java.net.UnknownHostException;


public class Example {

 public static void main(String[] args) {

  try {

   InetAddress local = InetAddress.getLocalHost();

   System.out.println("내 컴퓨터 IP주소: " + local.getHostAddress());

   

   InetAddress[] iaArr = InetAddress.getAllByName("www.naver.com");

   for(InetAddress remote : iaArr) {

    System.out.println("www.tistory.com IP주소: " + remote.getHostAddress());

   }

  } catch(UnknownHostException e) {

   e.printStackTrace();

  }

 }

}

이상입니다.

다음 포스팅에서는 ServerSocket 과 Socket에 대해 공부하겠습니다.

반응형