안녕하세요 알통몬입니다. 공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
네트워크란 -> 여러 대의 컴퓨터를 통신 회선으로 연결한 것을 말합니다.
흔히들 말하는 서버는 서비스를 제공하는 프로그램이고
클라이언트는 서버가 제공한 서비스를 제공 받는 프로그램을 말합니다.
*인터넷에서 두 프로그램이 통신을 하기 위해선 연결을 요청하는 역할과 수락하는 역할이 필요합니다.
클래이언트/서버 모델은 한 개의 서버와 다수의 클라이언트로 구성되는 것이 일반적입니다.
하지만 두 개의 프로그램이 서버이면서 클라이언트의 역할을 하는 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에 대해 공부하겠습니다.