Network는 다양한 컴퓨터들끼리 연결되어 있는 망을 의미한다.


컴퓨터 뿐만 아니라 다양한 사물(Things), 예를들어 냉장고 선풍기, 에어컨 등의 사물(Things)들이 Network, Internet에 연결이 되고


그것을 IOT(Internet Of Things) 사물 인터넷이라고 한다.


특히 Java는 컴퓨터를 벗어나 다양한 사물에 활용되기 좋아 널리 사용되고 있다.







Network의 깊은 지식이 목적이 아니기 때문에 전문적인 내용을 다루지 않고


Java에서 쓸만한 간단한 Server, Client 통신을 공부한다.







Network는 결국 목적지까지 어떻게 가느냐가 제일 중요한 과제이다.


그래서 컴퓨터에 고유 통신 번호인 IP가 지정되고 IP는 집주소 처럼 데이터를 전달할 목적지 주소로 쓰이게 된다.


또한 컴퓨터 장치 자체에 부여된 주소도 따로 있지만 IP만 사용한다.


IP와 함께 필요한게 하나 있는데 포트 번호가 꼭 필요하다.


일반적으로 사용하는 포트는 TCP와 UDP가 있고


TCP는 Three Way Handshake와 같은 방법으로 확실한 데이터를 전송하지만 속도가 조금 느리다.


UDP는 일방적인 전송을 하므로 불확실한 데이터를 전송하지만 속도가 빠르다는 장점이 있다.







IP와 포트의 예로는 127.0.0.1:8080과 같이


127.0.0.1은 IP가 되고


: 뒤에 8080은 포트 번호가 된다.


그리고 127.0.0.1은 자신을 지정하는 IP로 자신의 IP를 모를때 쓰는 IP이다.





Java에서 자신의 IP 주소를 얻는법과


특정 도메인의 IP를 얻는법을 확인해보자


InetAddress를 사용한다.





여기서 도메인은 네이버로 예를 든다면


naver.com이 도메인(IP의 닉네임으로 이해하면 된다)이다.


수많은 웹사이트들을 접속하는데 일일히 IP를 암기하고 사용 할 수 없으니 닉네임을 배정하는 혁신적인 기술이다.


도메인이 생기고 인터넷의 발전은 급격히 상승했다.



package chap12.exam01.ipaddr;

import java.net.InetAddress;

public class GetIp {

	public static void main(String[] args) throws Exception {
		// 내 컴퓨터의 IP 얻기
		// localhost => 127.0.0.1 => 자신의 주소를 지정하는 주소
		InetAddress addr = InetAddress.getLocalHost();
		System.out.println("my PC IP " + addr.getHostAddress());
		
		// 특정 도메인으로 IP 얻기
		String domain = "naver.com";
		addr = InetAddress.getByName(domain);
		System.out.println(addr.getHostAddress());
		
		// 특정 도메인으로 IP 전부 얻기
		domain = "www.youtube.com";
		InetAddress[] addrs = InetAddress.getAllByName(domain); // 반환값이 배열
		for(InetAddress ip : addrs) {
			System.out.println("ip : " + ip);
		}
	}

}



여기서 특정 도메인으로 IP 전부 얻기라는 말이 이해가 안 갈수도 있다.


왜 여러대가 나오는거지? 할 수 있는데 웹사이트들은 서버를 여러대를 두어 접속을 대비하여야 하기 때문에 여러개가 나온다.


예를들면 naver.com과 같이 대형 웹사이트는 1분안에 수만, 수십만명이 동시에 접속할 수 있기 때문에


서버를 여러대 준비하여 부하가 낮아지게끔 해야한다.


만약 여러대를 준비하지 않을 경우 사람이 몰리는 아침시간에 naver.com에 접속하려고 하면


과장해서 1시간, 2시간 걸릴 것이다...



'개념 및 코딩 > 10.네트워크' 카테고리의 다른 글

[JAVA]10-06.UDP, Datagram  (0) 2018.09.27
[JAVA]10-05.N:M MultiChat Server, Client  (2) 2018.09.27
[JAVA]10-04.1:1 Chat Server, Client  (0) 2018.09.27
[JAVA]10-03.Echo Server, Client  (0) 2018.09.27
[JAVA]10-02.TCP Server, Client  (0) 2018.09.27

+ Recent posts