티스토리 뷰

Java

[JAVA] Network(Client, Server)

Hwan'ss 2019. 7. 21. 14:36

1. 클라이언트(Client) / 서버(Server)

  • 클라이언트/서버는 두 개의 컴퓨터 프로그램 사이에 이루어지는 역할 관계를 나타내는 것임
  • 클라이언트/서버 개념은 단일 컴퓨터 내에서도 적용할 수 있지만, 네트워크 환경에서 더 큰 의미를 가짐
  • 네트워크 상의 클라이언트/서버 모델은 여러 다른 지역에 걸쳐 분산되어 있는 프로그램들을 연결시켜주는 편리한 수단을 제공함

가. 클라이언트(Client)

  • 다른 프로그램에세 서비스를 요청하는 프로그램
  • 서비스를 사용하는 컴퓨터

나. 서버(Server)

  • 클라이언트의 요청에 대해 응답해주는 프로그램
  • 서비스를 제공하는 컴퓨터
  • 일반적으로 서버프로그램이 먼저 활성화된 상태에서 클라이언트의 요구사항을 기다리는데, 대체로 다수의 클라이언트 프로그램이 하나의 서버를 공유함
  • 서비스는 서버가 클라이언트로부터 요청받은 작업을 처리하며 그 결과를 제공하는 것을 뜻하며 서버가 제공하는 서비스의 종류에 따라 파일서버, 메일서버, 어플리케이션 서버 등이 있음 예를 들어 파일서버는 클라이언트가 요청한 파일을 제공하는 서비스를 수행한다. 서버에 접속하는 클라이언트의 수에 따라 하나의 서버가 여러 가지 서비스를 제공하기도 하고 하나의 서비스를 여러 대의 서버가 제공하기도 한다.
  • 서버가 서비스를 제공하기 위해서는 서버프로그램이 있어야 하고 클라이언트가 서비스를 제공받기 위해서는 서버프로그램과 연결할 수 있는 클라이언트 프로그램이 있어야 한다. 예를 들어 웹서버에 접속하여 정보를 얻기 위해서는 웹브라우저(클라이언트 프로그램)가 있어야 하고, FTP 서버에 접속해서 파일을 전송받기 위해서는 알FTP와 같은 FTP 클라이언트 프로그램이 필요함

2. 모델(Model)

가. 서버기반 모델(Server-based Model)

  • 네트워크를 구성할 때 전용서버를 두는 모델

나. P2P 모델(Peer-to-Peer Model)

  • 별도의 전용서버없이 각 클라이언트가 서버역할을 동시에 수행하는 모델
서버기반 모델(Server-based Model) P2P 모델(Peer-to-Peer Model)

 

안정적인 서비스의 제공이 가능함

 

공유 데이터의 관리와 보완이 용이함

 

서버구축 비용과 관리비용이 듬

 

 

 

서버구축 및 운용비용을 절감 할 수 있음

 

자원의 활용을 극대화 할 수 있음

 

자원의 관리가 어려움

 

 보안이 취약함

 

 

 

3. 클라이언트-서버 모델

가. TCP(Transmission Control Protocol)

  • 클라이언트와 서버가 연결된 상태에서 데이터를 주고받는 연결형 프로토콜

(1). 장점

클라이언트가 연결요청을 하고, 서버가 연결을 수락하면 통신 선로가 고정되고, 모든 데이터는 고정된 통신 선로를 통해서 순차적으로 전달되기 때문에 데이터를 정확하고 안전적으로 전달함.

(2). 단점

데이터를 보내기 전에 반드시 연결이 형성되어야 하기 때문에, 시간을 상당히 많이 잡아먹으며, 고정된 통신 선로가 최단선(네트워크 길이 측면)이 아닐 결우 상대적으로 UDP 보다 데이터 전송 속도가 느릴 수 있음.

 

나. UDP(User Datagram Protocol)

  • 서로 주고 받는 형식이 아닌 한쪽에서 일방적으로 보내는 프로토콜

4. TCP 네트워킹과 소켓

  • TCP 서버의 역할은 두 가지로 볼 수 있음.
  • 하나는 클라이언트가 연결 요청을 해오면 연결을 수락하는 것
  • 또 다른 하나는 연결된 클라이언트와 통신하는 것
  • java.net.ServerSocket : 클라이언트의 연결 요청을 기다리면서 연결 수락을 담당함
  • java.net.Socket : 연결된 클라이언트와 통신을 담당함

가. 바인딩(binding) 포트

  • 서버는 클라이언트가 접속할 포트를 가지고 있어야 하는데 그 포트를 바인딩 포트라고 함
  • 서버는 고정된 포트 번호에 바인딩해서 실행하므로, SeverSocket을 생성할 때 포트 번호 하나를 지정해야 함

 

  • 서버가 실행되면 클라이언트는 서버의 IP주소와 바인딩 포트 번호로 Socket을 생성해서 연결 요청을 함
  • ServerSocket은 클라이언트가 요청을 해 올 때 accept() 메소드로 연결 수락을 하고 통신용 Socket 을 생성함
  • 그 후 클라이언트와 서버는 각각의 Socket을 이용하여 데이터를 주고 받음

 

2019.07.21(일)

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2024/05   »
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 27 28 29 30 31
글 보관함