010. 네트워크

Cornchip·2022년 9월 27일
0

bitcamp

목록 보기
10/11
post-thumbnail

목차
1. Client & Server
2. Proxy 패턴



1. Client & Server

1) C/S Application

  1. 사용자와 App 간
  • UI제공
  • 업무로직 수행 (로직: 업무와 관련된 기능을 수행)

  1. 데이터관리 App과 파일 간
  • 데이터를 파일에 I/O

3. App과 데이터관리 App 간
  • Client App은 데이터관리App(Server App)에 데이터 작업(CRUD)을 요청
  • Server App은 Client App에게서 받은 작업결과를 응답

이렇게 Applicatoin을 Client와 Server로 이원화 한 것
= C/S Application


  • Client와 Server간의 데이터 전송에 네트워킹 기술을 이용한다.

    java.net.Socket / java.io.*(스트림클래스, PrintStream, etc)

  • C/S Applicatoin Architecture 의 장점

    다중 사용자에게 동시에 서비스 제공


2) 네트워크 통신

  • 소켓 생성
    java.net.*

new Socket("접속하려는 상대편의 네트워크 주소", 포트번호(port));

  • 접속하려는 상대편의 네트워크 주소:

    • 도메인명
    • IP 주소
    • 127.0.0.1 = local 컴퓨터를 가리키는 도메인명과 IP주소
  • 포트번호:

    • 식별자

  • IP 주소

    • 네트워크 상에서 컴퓨터 식별번호

      = 지구에서 유일한 값
      = 국제기구에서 번호 관리

    • 다중 랜카드를 이용하면 한 컴퓨터에 여러 개의 IP 주소를 저장할 수 있다.
  • IPv4

    • 형식 : 0~255.0~255.0~255.0~255
    • (32bit = 4byte)라서 IPv"4" 인 것.
    • 42억 대의 장치에 대해 IP 주소 부여(>> 모자라다)
    • 42억개로 부족하기 때문에 내부에서는 "사설 IP" 사용
      • 192.168. 으로 시작하는 IP가 사설 IP이다.
      • 외부로 보낼 때는 공유기에서 구분을 해준다.
      • 외부에서 받아올 때도 사설IP를 알려주고 받아온다.
  • 연결 기다림 : 서버 소켓
    new ServerSocket(포트번호)



2. Proxy 패턴

1) 소개

  • Proxy 패턴을 활용한 네트워킹 코드 캡슐화

    캡슐화 : 해당 기능이 필요한 경우 간단히 메서드 호출로 처리

  • Proxy 패턴

    Client >> _call_ >> [통신대행자] >> _통신_ >> Server
    Client << _리턴_ << [통신대행자] << _결과_ << Server
    통신대행자 : 통신코드를 감춘다.

  • Proxy 패턴 적용 이전

    BoardHandler << 통신 >> BoardServlet

  • Proxy 패턴 적용 이후

    BoardHandler << call, return >> BoardDaoProxy << 통신 >> BoardServlet

  • proxy 서버 역할

    1. 필터링
      => 접근제어
    2. 로깅(logging)
      => 사용기록 추적
    3. 캐싱(caching)
      => 임시 보관

2) 연결방식

  • stateful

  • stateless
    = Connection-Oriented = 연결지향 = TCP


1. stateful 방식
  • 연결을 끊을 때까지 나머지가 대기해야 하는 줄서기 방식
    ex) 은행 업무
  • FTP, POP3, 채팅, 게임
2. stateless 방식 = TCP 방식
  • [연결>>요청>>응답>>연결끊기] 를 반복하는 방식
    ex) 114, ARS 인증
  • HTTP
3. TCP 방식이 아닌 Connectionless 방식 = UDP 방식

ex) 편지, 방송
ping


3) 네트워크 용어와 개념

  • Remote Object : 실제 Data를 저장하고 꺼내는 일을 하는 객체 BoardDao
    • Skeleton : Remote Object의 서버측 대행자 BoardServlet

      Server 측 ORB (Object Request Broker)

    • Stub : Remote Object의 클라이언트 쪽 대행자 BoardHandler

      Client 측 ORB (Object Request Broker)


  • 분산시스템 아키텍처

    • server를 회계전담서버, 인사전담서버, ... 등으로 나누다보니 시스템 간 기능호출이 필요하다
    • 이 때문에 원격메서드호출이 필요하다.
  • 원격메서드 호출기술과 진화과정

    1. RPC (Remote Procedure Call)
      • 원격 메서드를 만드는 개발자에게 부담이 가중되어서
        호출 대행자 생성을 자동화 했다.
      • '메서드 생성기'를 통해 코드를 자동생성
    2. RMI (Remote Method Invocation)
      • 객체 생성기가 skeletonstub의 코드를 자동 생성한다.
    • EJB(Enterprise Java Beans) Beans (=Object)

      only java만 가능

    • CORBA (Common Object Request Broker Architecture)

      언어중첩 : 언어에 구애받지 않고 호출할 수 있게 해준다.

    1. Web Service Architecture : EJB+CORBA (+ 웹통신 + XML)
      • WSDL : Web Service Description Language
        = 호출함수 원격 객체의 메서드 정보
      • WSDL을 client에게 응답 > 사용할 stub을 서버에게 요청 > stub을 다운로드
      • 이후 stub과 skeleton은 HTTP에 따라 통신
      • Eclipse IDE 등은 개발도구에서 stub 객체를 자동으로 다운로드 한다.
        개발자가 직접 다운로드 하지 않는다.
    2. RESTful API : 4.에서 추가로 순수 HTTP 기술 사용
      • 개발도구를 사용하여 sub을 자동 다운로드 하더라도 결국 client측에서는 stub객체를 사용해야 한다.
      • 또한 프로그래밍 언어에 맞춰 stub을 다운로드 해야한다.
      • 이를 해결하기 위해 순수 HTTP 기술 사용 프로그래밍 언어별로 stub이 필요없다.

  • Thread를 이용한 멀티태스킹 구현 : 동시 요청 처리하기

    ServerApp : 프로세스
    RequestThread : 실행흐름을 분리


  • IP주소 v4의 경우 : 32bit 양의 정수 값

    1. C0A8004A (16진수)
    2. 3,232,235,594 (10진수)
    3. 192.168.0.74 (표현하기 쉽게 1byte씩 잘라서 10진수로 표기)
    4. localhost (기억하기 쉽게 이름을 부여)
      IP주소를 직접 사용하는 대신에 IP주소에 부여된 알파벳과 숫자로 된 텍스트 이름을 사용하는 것이 편하다.
      IP주소에 대한 텍스트 이름을 알려주는 서버가 "DNS"
  • 통신을 하는 모든 프로그램은 port번호를 가져야 한다.

  • client 의 port번호는 OS로부터 자동 발급 받는다. 49152 ~ 65535


  • VM (Virtual Machine)

    Host OS 위에 Guest OS를 설치하는 모양새.
    가상머신은 실제컴퓨터처럼 H/W 자원을 사용 :: 자원낭비가 심하다.
    그래서...아래의 Docker 등장

  • Docker

    App을 실행하는데 필요한 H/W 자원만 사용
    물론 VM처럼 별도의 컴퓨터에서 실행하는 것처럼 동작


  • URI (Uniform Resource Identifier) : URL, URN
    • URL : Uniform Resource Locator

      다음의 형식을 띤다.
      scheme://<user>:<password>@<host>:<port>/path<url-path>

      • scheme : 프로토콜
      • < user > : 사용자id
      • < password > : 암호
      • < host > : 서버주소
      • < port > : 포트번호
      • path : 자원의경로
      • < url-path > : query string

      • id와 암호는 생략가능
    • URN : Uniform Resource Name

      example:animal:ferret:nose


  • 정적자원(Static Resources)과 동적자원(Dynamic Resources)

4) TCP/IP

  • packet에 관하여

  • Collaboration Diagram

    Sequence Diag.
    시간 흐름에 따라 실행과정을 표현하기에 적합


  • Connection-Oriented vs Connectionless

    Connection-Oriented : TCP (연결지향)

    • stateful
    • stateless
      ServerSocket, Socket

    Connectionless : UDP (비연결)

    DatagramSocket, DatagramPacket
    편지, ping

profile
cornchip

0개의 댓글