Java Class Notes

Network (네트워크)

헤일리유 2023. 3. 15. 21:26

 

네트워크 Network


 

네트워트란 

네트워크(Network)란 같은 데이터 전송 프로토콜(protocol)을 가지고 통신을 하는 연결된 장치들을 총칭하는 것을 말한다.
여러 장치들이 서로 교신하기 위해서는 같은 의사소통방식을 사용해야 하는데 이런 역할을 하는 것을 프로토콜이라 한다.

프로토콜은 컴퓨터와 컴퓨터가 통신 하기 위한 일종의 규약으로 서로 다른 언어를 사용하는 사람 사이에 의사소통이 안되듯이 네트워크 에서도 동일한 규격의 프로토 콜을 사용해야만 네트워크가 가능 하다.

사전적 의미로 전선이나 혈관, 통로 등으로 이루어진 망형 조직을 말하는 것으로 IT 에서 네트워크는 컴퓨터와 컴퓨터를 연결해주는 망을 의미한다.

 

일상적으로 사용하고 있는 인터넷은 네트워크 응용 서비스의 한 종류로 TCP/IP 라고 하는 통신 프로토콜에 기반하고 있다.

 

- TCP/IP(Transmission Control Prorocol/Internet Protocol)는 컴퓨터 통신을 위 한 프로토콜 중 하나로 우리가 사용하는 인터넷의 기반이 된다.
- TCP/IP
가 인터넷의 기반 프로토콜이 된 이유는 하드웨어, 운영체제, 접속 매체와 관계없이 동작할 수 있는 개방형 구조이기 때문이다.

- TCP/IP 는 보다 큰 네트워크 프로토콜 개념인 OSI 7 Layer 에서 유래한 것으로 복 잡성을 단순화 한 4계층 구조를 가진다.

 

 

 

 

OSI ( Open System Interconnection )

개방 구조 상호연결 이라는 뜻으로 다른 기종간의 통신시 네트워크 구조에 상관없이 통신을 할 수 있도록 국제표준으로 정해놓은 통신상황을 개방할 수 있도록 하는 규약

 

 

 

 

 

Client and Server

- 컴퓨터간의 관계를 역할(role)로 구분하는 개념

- 서비스를 제공하는 쪽이 서버, 제공받는 쪽이 클라이언트가 된다.
-
제공하는 서비스의 종류에 따라 메일서버(email server), 파일서버(file

server), 웹서버(web server) 등이 있다.
-
전용서버를 두는 것을 서버기반 모델, 전용서버없이 각 클라이언트가

서버역할까지 동시에 수행하는 것을 P2P 모델이라고 한다.

 

 

 

 

 

IP주소(IP address)

  • 컴퓨터(host, 호스트)를 구별하는데 사용되는 고유한 주소값 
  • 4 byte의 정수로 ‘a.b.c.d’와 같은 형식으로 표현.(a,b,c,d는 0~255의 정수)
  • IP주소는 네트워크주소와 호스트주소로 구성되어 있다.
  • 네트워크주소가 같은 두 호스트는 같은 네트워크에 존재한다.
  • IP주소와 서브넷마스크를 &연산하면 네트워크주소를 얻는다.
  • 네트워크에 연결된 컴퓨터를 구분하기 위해 사용
  • 4개로 구분된 10진수를 사용함.
  • 사설 IP는 NAT(Network Access Translator) 등을 이용해서 인터 넷 접속 시
  • 공인 IP로 매핑됨(일부 인터넷 서비스에 제약이 있을 수 있음) – IP 주소 부족 문제를 해결하기 위해 IPV6가 등장함
  • IP주소 구분

 

 

 

Web Programming

네트워크>>도메인 이름

  • IP 주소를 알기 쉬운 이름으로 바꾼 것
  • DNS(Domain Name System) 서버가 필요함.
  • DNS 처리과정
  • Internet : 일반적으로 우리가 알고 있는 인터넷으로 고유명사화 되었음. - internet : 내부 네트워크를 의미하는 네트워크 용어
  • 인터넷과 www 서비스
  • 인터넷은 TCP/IP 기반의 네트워크가 전세계적으로 확대되어 하나로 연결 된 ‘네트워크의 네트워크’
  • 인터넷 = www가 아님. www는 인터넷 기반의 서비스 중 하나 대표적인 인터넷 기반 서비스

 

 

 

 

 

 

EX - URL  

package ch14;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.Scanner;

public class Url1 {
	
	 public static void main(String[] args) throws MalformedURLException {
		
		 Scanner sc = new Scanner(System.in);
		 System.out.println("Type URL below. ");
         System.out.print(">>");
		 String str = sc.nextLine();
		 URL url = new URL(str);
		 System.out.println("Protocol : "+url.getProtocol());
		 System.out.println("Host : "+url.getHost());
		 System.out.println("Port : "+url.getPort());
		 System.out.println("File path : "+url.getFile());

		 sc.close();
		 
	}
	
}
Type URL below. 
>> https://www.google.com:80/
Protocol : https
Host : www.google.com
Port : 80
File path : /

 

 

 

 

 

Socket 소켓

통신을 하기 위해 사용되는 TCP 포트를 나타내는 말이며 하부 네트워 크에 신경 쓰지 않고 통신하기 위한 소프트웨어적인 메커니즘 (mechanism)이다.

소켓은 전구 소켓과 같이 컴퓨터가 연결된 통신 끝 점에서 멀리 떨어 져 있는 컴퓨터끼리 데이터를 송수신하도록 하기 위해 두 컴퓨터를 연결시켜 주는 도구라고 할 수 있다.

  • 서버 : 정보나 서비스를 제공하는 측
  • 클라이언트 : 정보나 서비스를 제공 받는 측
  • IP 주소 : 인터넷에 연결된 모든 컴퓨터을 구분하기 위해서 사용하는 것
  • 포트번호 :전송된데이터를특정프로그램으로보내기위해서는각응용 프로그램을 구분해야 하는데 이때 사용되는 것이 포트 번호이다.

 

 

 

 

InetAddress

InetAddress 클래스는 자바 프로그램 안에서 IP 번호와 URL 주소를 알아내고 싶을 때 사용한다.

 

 

Ex - InetAddress1

import java.net.*; class InetAddress1{
public static void main(String[] args) throws UnknownHostException{
InetAddress addr1 = InetAddress.getByName("www.choongang.co.kr");
InetAddress addr2 = InetAddress.getByName("211.183.8.85");
InetAddress addr3 = InetAddress.getLocalHost(); System.out.println("=========================="); System.out.println( "addr1 = " + addr1.getHostAddress()); System.out.println( "addr2 = " + addr2.getHostName()); System.out.println( "로컬 주소 = " +
addr3.getHostAddress());
System.out.println( "로컬 이름 = " + addr3.getHostName());
} }

 

Ex - InetAddress2

package ch17;
import java.net.*;
import java.util.Scanner; public class InetAd1 {
public static void main(String[] args) throws UnknownHostException {
	Scanner sc = new Scanner(System.in); 
    System.out.println("도메인을 입력하세요");
	String domain = sc.nextLine();
	InetAddress ia = InetAddress.getByName(domain);
	System.out.println("호스트 이름 : "+ia.getHostName()); 
    System.out.println("IP주소 : "+ia.getHostAddress()); 
    sc.close();
} }

 

 


 

 

 

Ex - TimeServer

package ch14;

import java.io.*;
import java.net.*;
import java.util.GregorianCalendar;

public class TimeServer {

	public static void main(String[] args) throws IOException {
		
		ServerSocket ss = new ServerSocket(7000);
		try {
			System.out.println("Server working");
			while (true) {
				Socket client = ss.accept();	// client가 접속하기를 기다림 
				OutputStream os = client.getOutputStream(); // client에게 보냄 
				ObjectOutputStream oos = new ObjectOutputStream(os); // 직렬화해서 보냄 
				oos.writeObject(new GregorianCalendar());
				oos.flush();
				os.close(); oos.close(); client.close();
			}
		} catch (Exception e) {
			System.out.println(e.getMessage());		
		} finally {
			ss.close();
		}
		
	}

}

Ex - TimeClient

package ch14;

import java.io.*;
import java.net.*;
import java.util.*;

public class TimeClient {

	public static void main(String[] args) throws UnknownHostException, IOException, ClassNotFoundException {
		
		Scanner sc = new Scanner(System.in);
		System.out.println("Connect IP ");
		String ip = sc.nextLine();
		Socket client = new Socket(ip,7000);
		InputStream is = client.getInputStream();
		ObjectInputStream ois = new ObjectInputStream(is);
		GregorianCalendar gc = (GregorianCalendar) ois.readObject();
		System.out.printf("Current time : %TF %TT", gc, gc);
		
		is.close(); ois.close(); client.close();
		sc.close();
		
	}

}

 

 

 

 

Ex - TimeClient

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'Java Class Notes' 카테고리의 다른 글

Lambda & Stream (람다식과 스트림)  (0) 2023.03.16
Thread(스레드)  (0) 2023.03.10
Ex - Customer Account  (0) 2023.03.10
Genetic and Collection (제네릭과 컬렉션)  (0) 2023.03.06
Exception (예외처리)  (0) 2023.03.03