[CH15. 네트워킹(Networking)] 네트워킹

1.네트워킹

두대 이상의 컴퓨터를 케이블로 연결하여 네트워크를 구성하는것.

1.1 클라이언트/서버(client/server)

서버(server)는 서비스를 제공하는 컴퓨터, 클라이언트(client)는 서비스를 사용하는 컴퓨터.
ex) 파일서버(file server), 메일서버(mail server), 어플래케이션 서버(application server)

서버기반 모델(server-based-model) P2P모델(peer-to-peer model)
- 안정적인서비스 제공이 가능하다.
- 공유데이터의 관리와 보안이 용이하다.
- 서버구축비용과 관리비용이 든다.
- 서버구축 및 운용비용을 절감할 수 있다.
- 자원의 활용을 극대화 할 수 있다.
- 자원의 관리가 어렵다.
- 보안이 취약하다.

1.2 IP주소(IP address)

IP주소는 컴퓨터(호스트, host)를 구별하는데 사용하는 고유한 값.
4 byte(32bit)의 정수로 구성되어있음. a.b.c.d와 같은 형식으로 표현됨.
abcd는 0~255사이의 정수이다.
윈도우 콘솔에서 ifconfig를 확인하면 ip주소를 확인 할 수 있음.
ex)

  • ip주소
    192.168.10 .100
    (네트워크주소).(호스트주소)
  • 서브넷마스크
    255.255.255.0

1.3 InetAddress

자바에서 IP주소를 다루기 위한 클래스로 InetAddress 제공함

1.4 URL(Uniform Resource Location)

URL은 인터넷에 존재하는 여러 서버들이 제공하는 자원에 접근할 수 있는 주소를 표현하기 위한것.
“프로토콜://호스트명:포트번호/경로명/파이명?쿼리스트링#참조”의 형태로 이루워져있음.

  • 프로토콜 : 자원에 접근하기 위해 서버와 통신하는데 사용되는 통신규약(http)
  • 호스트명: 자원을 제공하는 서버의 이름(www.javahome.com)
  • 포트번호 : 통신에 사용되는 서버의 포트번호(80)
  • 경로명 : 접근하려는 자원이 저장된 서버상의 위치(/sample/)
  • 파일명 : 접근하려는 자원의 이름(hello.html)
  • 쿼리 : url에서 ?이후부분
  • 참조 : url에서 # 이후부분

java에서 URL 클래스를 제공함

1.5 URL Connection

어플리케이션과 URL간의 통신연결을 나타내는 클래스의 최상위 추상클래스.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.net.*;
import java.io.*;

public class NetworkEx3{
public static void main(String[] args){
URL url = null;
String address = "http://www.javahome.com/sample/hello.html";
String line ="";

try{
url = new URL(address);
URLConnection conn = url.openConnection();

System.out.println("conn.toSTring(): "+conn);
}catch(Exception e){
e.printStackTrace();
}
}
}
  • 아래코드는 해당 페이지의 내용을 읽어온다..
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.net.*;
import java.io.*;

public class NetworkEx4{
public static void main(String[] args){
URL url = null;
BufferedReader input = null;
String address = "http://www.javahome.com/sample/hello.html";
String line ="";

try{
url = new URL(address);

input = new BufferedReader(new InputStreamReader(url.openStream()));

while((line= input.readline()) != null) {
System.out.println(line);
}
input.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
  • 이진파일을 읽어 저장함.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.net.*;
import java.io.*;

public class NetworkEx5{
public static void main(String[] args){
URL url = null;
InputStream in = null;
FileOutputStream out = null;
String address = "http://www.javahome.com/sample/hello.zip";
int ch = 0;

try{
url = new URL(address);
in = url.openStream();
out = new FileOutputStream("hello.zip");

while((ch= inlread()) != -1) {
out.writy(ch);
}
in.close();
out.close();
}catch(Exception e){
e.printStackTrace();
}
}
}

2. 소켓 프로그래밍

소켓을 이용한 통신프로그래밍.
java.net패키지를 통해 소켓 프로그래밍을 지원함.

2.1 TCP와 UDP

TCP/IP 프로토콜은 이기종 시스템간의 통신을 위한 표준 프로토콜로 프로토콜의 집합이다.
TCP와 UDP모두 TCP/IP에 포함되어 있음, OSI 7계층의 전송계층에 해당하는 프로토콜이다.

항목 TCP UDP
연결방식 .연결기반
- 연결 후 통신(전화기)
- 1:1통신방식
.비연결기반
- 연결없이 통신(소포)
- 1:1, 1:n, n:n 통신방식
특징 .데이터의 경계를 구분안함
.신뢰성 있는 데이터를 전송
- 데이터의 전송순서가 보장됨
- 데이터의 수신여부를 확인함
(데이터가 손실되면 재전송)
- 패킷을 관리할 필요가 없음
.UDP보다 전송속도가 느림
.데이터의 경계를 구분함
.신뢰성 없는 데이터 전송
- 데이터의 전송순서가 바뀔 수 있음
- 데이터의 수신여부를 확인안 함
(데이터가 손실되어도 알 수 없음)
- 패킷을 관리해 주어야 함
.TCP보다 전송속도가 빠름
관련 클래스 .Scoket
.ServerSocket
.DatagramSocket
.DatagramPacket
.MulticastSocket

2.3 TCP 소켓 프로그래밍

서버 프로그램과 클라이언트 프로그램간의 통신과정 단계

  1. 서버프로그램에서는 서버소켓을 사용하여 서버의 컴퓨터의 특정 포트에서 클라이언트의 연결요청을 처리할 준비를 한다.
  2. 클라이언트 프로그램은 접속할 서버의 IP주소와 포트 정보를 가지고 소켓을 생성해서 서버에 연결을 요청한다.
  3. 서버소켓은 클라이언트의 연결요청으 ㄹ받으면 서버에서 새로운 소켓을 생성해서 클라이언트의 소켓과 연결되도록 한다.
  4. 이제 클라이언트 소켓과 새로 생성된 서버의 소켓은 서버소켓과 관계없이 일대일 통신을 한다.

2.4 UDP 소켓 프로그래밍

댓글

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×