23일차

고규빈·2022년 1월 17일
0

1. 네트워킹(Networking)

클라이언트/서버(client/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주소와 서브넷마스크를 ‘&’연산하면 네트워크주소를 얻는다.

InetAddress

  • IP주소를 다루기 위한 클래스

2. 소켓 프로그래밍

TCP와 UDP

  • 소켓(socket)이란, 프로세스간의 통신에 사용되는 양쪽 끝단(end point)
  • 전화할 때 양쪽에 전화기가 필요한 것처럼, 프로세스간의 통신에서도
    양쪽에 소켓이 필요하다.

▶ 소켓 프로그래밍이란?

  • 소켓을 이용한 통신 프로그래밍을 뜻한다.

▶ TCP와 UDP

  • TCP/IP프로토콜에 포함된 프로토콜. OSI 7계층의 전송계층에 해당

TCP소켓 프로그래밍

  • 클라이언트와 서버간의 1:1 소켓 통신.
  • 서버가 먼저 실행되어 클라이언트의 연결요청을 기다리고 있어야 한다.
  1. 서버는 서버소켓을 사용해서 서버의 특정포트에서 클라이언트의 연결요청을 처리할 준비를 한다.

  2. 클라이언트는 접속할 서버의 IP주소와 포트정보로 소켓을 생성해서 서버에 연결을 요청한다.

  3. 서버소켓은 클라이언트의 연결요청을 받으면 서버에 새로운 소켓을 생성해서 클라이언트의 소켓과
    연결되도록 한다.

  4. 이제 클라이언트의 소켓과 새로 생성된 서버의 소켓은 서버소켓과 관계없이 1:1통신을 한다.

TCP소켓 프로그래밍 - 예제

  1. 서버프로그램을 실행한다.
java.exe TcpIpServer
  1. 서버소켓을 생성한다.
> 
serverSocket = new ServerSocket(7777); // TcpIpServer.java
  1. 서버소켓이 클라이언트 프로그램의 연결요청을 처리할 수 있도록 대기상태로 만든다. 클라이언트 프로그램의 연결요청이 오면 새로운 소켓을 생성해서 클라이언트 프로그램의 소켓과 연결한다.
Socket socket = serverSocket.accept(); // TcpIpServer.java
  1. 클라이언트 프로그램(TcpIpClient.java)에서 소켓을 생성하여 서버소켓에 연결을 요청한다.
Socket socket = new Socket(“192.168.10.100”,7777); // TcpIpClient.java
  1. 서버소켓은 클라이언트 프로그램의 연결요청을 받아 새로운 소켓을 생성하여 클라이언트의 소켓과 연결한다.
Socket socket = serverSocket.accept(); // TcpIpServer.java
  1. 새로 생성된 서버의 소켓(서버소켓 아님)은 클라이언트의 소켓과 통신한다.

UDP소켓 프로그래밍

  • TCP소켓 프로그래밍에서는 Socket과 ServerSocket을 사용하지만,
    UDP소켓 프로그래밍에서는 DatagramSocket과 DatagramPacket을 사용.

  • UDP는 연결지향적이지 않으므로 연결요청을 받아줄 서버소켓이 필요없다.

  • DatagramSocket간에 데이터(DatagramPacket)를 주고 받는다

profile
안녕하세요

0개의 댓글