728x90
반응형

[Servlet] Servlet과 JSP로 구현하는 MVC 패턴 | Java 웹 구조의 이해 - 2

 

[Servlet] Servlet과 JSP로 구현하는 MVC 패턴 | Java 웹 구조의 이해 - 2

[Servlet] Servlet과 JSP로 구현하는 MVC 패턴 | Java 웹 구조의 이해 - 1 [Servlet] Servlet과 JSP로 구현하는 MVC 패턴 | Java 웹 구조의 이해 - 1[Servlet] Servlet Listener란? 웹 애플리케이션의 생명주기 관리하기 [Servl

crushed-taro.tistory.com

1. Network

1. Network 개요

1. Network란

Network 사진 1

  • 여러 대의 컴퓨터를 통신 회선으로 연결한 것이다.
  • (홈 네트워크, 지역 네트워크, 인터넷 등이 해당된다.)

 

2. Server & Client

  • 서버와 클라이언트는 네트워크로 연결된 컴퓨터 간의 관계를 역할로 구분한 개념이다.
    • 서버는 서비스를 제공하는 컴퓨터(혹은 프로그램)로, 클라이언트의 연결을 수락하고 요청 내용을 처리하여 응답을 보내는 역할이다.
    • 클라이언트는 서비스를 받는 컴퓨터(혹은 프로그램)로, 네트워크 데이터를 필요로 하는 모든 애플리케이션에 해당한다.
  • 클라이언트는 서버에 연결 요청을 하려면 IP주소와 Port 번호를 알아야 한다.

Network 사진 2

  • IP 주소는 네트워크 상에서 컴퓨터를 식별하는 번호이며, 네트워크 어댑터(랜카드)마다 할당된다.
  • Port는 같은 컴퓨터 내에서 프로그램을 식별하는 번호이다.

 

2. Java Network

1. Inet Class

  • IP주소를 다루기 위해 Java에서 제공하는 Class이다.
  • 주요 method는 다음과 같다.
Method 명 설명
byte[] getAddress() IP주소를 byte배열로 반환
static InetAddress[] getAllByName(String host) 도메인명에 지정된 모든 호스트의 IP주소를 배열로 반환
static InetAddress getByAddress(byte[] addr) byte 배열로 IP주소 반환
static InetAddress getByName(String host) 도메인명으로 IP주소 반환
String getCanonicaHostName() FQDN(Full Qualified Domain Name) 반환
String getHostAddress() 호스트의 IP주소 반환
String getHostName() 호스트의 이름 반환
static InetAddress getLocalHost() 지역호스트의 IP주소 반환
boolean isMulticastAddress() IP주소의 멀티캐스트 주소 여부 반환
boolean isLoopbackAddress() IP주소의 loopback 주소(127.0.0.1) 여부 반환

 

2. Socket Programming

1. Socket Programming이란

  • 소켓을 이용한 통신 프로그래밍이다.
    • 소켓(Socekt)이란 프로세스 간 통신에 사용되는 양쪽 끝 단을 의미한다.

 

2. Socket Programming 프로토콜 종류

  • TCP
    • 연결 지향적 프로토콜로, 서버가 수락해야 데이터 송수신이 가능하다. (Like 전화)
    • 데이터 전송 속도가 느리지만 정확하고 안정적으로 전달할 수 있다.
  • UDP
    • 비연결 지향적 프로토콜로, 연결 없이 일방적으로 데이터를 전달한다. (Like 택배)
    • 데이터 전송 속도가 빠르지만 신뢰성 없는 데이터를 전송한다.

 

3. TCP Socket Programming

Network 사진 3

  • 클라이언트와 서버 간의 1:1 소켓 통신을 한다.
  • 서버가 먼저 실행되어 클라이언트의 요청을 기다려야 하고, 서버용 프로그램과 클라이언트용 프로그램을 따로 구현해야 한다.
  • 자바에서는 TCP 소켓 프로그래밍을 위해 java.net패키지에서 ServerSocket과 Socket Class를 제공한다.

 

  • 서버용 TCP 소켓 프로그래밍 순서
    1. 서버의 port 번호를 정한다.
    2. 서버용 Socket 객체를 생성한다.
    3. 클라이언트 쪽에서 접속 요청이 올 때까지 대기한다.
    4. 접속 요청이 오면 요청 수락 후, 해당 클라이언트에 대한 Socket 객체를 생성한다.
    5. 연결된 클라이언트와 입출력 stream을 생성한다.
    6. 보조 stream을 통해 성능을 개선할 수 있다.
    7. stream을 통해 읽고 쓰기를 진행한다.
    8. 통신을 종료한다.

 

  • 클라이언트용 TCP 소켓 프로그래밍 순서
    1. 서버의 IP 주소와 서버가 정한 port번호를 매개변수로 하여 클라이언트용 Socket 객체를 생성한다.
    2. 서버와의 입출력 Stream을 오픈한다.
    3. 보조 Stream을 통해 성능을 개선할 수 있다.
    4. Stream을 통해 읽고 쓰기를 진행한다.
    5. 통신을 종료한다.

 

  • TCP upgrade → HTTP

Network 사진 4

  • TCP에서 업그레이드된 것이 HTTP이다.
    • 몇 번째 요청인지 순번까지 포함하여 보내고, 받는 쪽에서 재조합해 사용한다.
    ⇒ Socket class를 이용한다.

 

4. UDP Socket Programming

Network 사진 5

  • UDP는 비연결 지향이므로 연결 요청을 받아 줄 서버 소켓이 필요 없다.
  • Java.net 패키지에서 제공하는 두 개의 DatagramSocket간에 DatagramPacket으로 변환된 데이터를 주고 받는다.
728x90
반응형

+ Recent posts