OSI 7계층

 

OSI 7계층

OSI 7계층을 나눈 이유는?

 

계층을 나눈 이유는 통신이 일어나는 과정을 단계별로 파악하기 쉽고,
특정한 곳에서 이상이 생긴다면 이상이 생긴 단계만 파악해 고칠 수 있기 때문이다.

 


1. 물리계층 (Physical Layer) / 케이블, 리피터, 허브 등을 통한 데이터 전송

  • 7계층 중 최하위 계층
  • 주로 전기적, 기계적, 기능적인 (0 , 1) 같은  특성을 이용해 데이터를 전송한다.
  • 데이터는 0 과 1 비트열, 즉 On, Off의 전기적 신호 상태로 이루어져 해당 계층은 단지 데이터를 전달한다.
  • 즉 데이터가 무엇인지, 어떤 에러가 있는지에 대해서는 전혀 신경쓰지 않는다.
  • 케이블이 대표적인 예시이다.

2. 데이터링크 계층 (Data-Link Layer) / 에러검출, 재전송, 흐름제어

  • 물리적인 연결을 통하여 인접한 두 장치 간의 신뢰성 있는 정보 전송을 담당한다. (Point-To-Point)
  • 따라서 통신에서의 오류도 찾아주고 재전송도 하는 기능을 가지고 있는 것이다.
  • 데이터링크 계층에서는 MAC 주소를 가지고 통신하게 된다.
  • 데이터링크 계층에서 전송되는 단위를 프레임이라고 하고, 대표적인 장비로는 브리지, 스위치 등이 있다. (여기서 MAC 주소를 사용한다.)

3. 네트워크 계층 (Network Layer) / 주소부여(IP), 경로설정(Route)

  • 네트워크 계층에서 가장 중요한 기능은 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능 (라우팅) 이다.
  • 라우팅 기능을 맡고 있는 계층으로 목적지까지 가장 안전하고 빠르게 데이터를 보내는 기능을 가지고 있다.
  • 네트워크 계층의 데이터 전송 단위는 패킷이다.
  • 즉, 네트워크 계층은 경로를 선택하고 주소를 정하고 경로에 따라 패킷을 전달해주는 것이 이 계층의 역할이다. (IP주소 사용)
  • 네트워크 계층은 라우팅, 흐름제어, 세그멘테이션, 오류제어, 인터네트워킹 등을 수행한다
  • 다른 네트워크를 연결해 데이터를 전달함으로써 인터넷이 가능하게 만드는 계층이다.

4. 전송 계층 (Transport Layer) / 패킷 생성 및 전송

  • 통신을 활성화하기 위한 계층이다.
  • 보통 TCP 프로토콜을 이용하며, 포트를 열어서 응용프로그램들이 전송을 할 수 있게 한다.
  • 만약 데이터를 받았다면 전송계층에서 해당 데이터를 하나로 합쳐서 5계층에 던져 준다.
  • 전송 계층까지는 물리적인 계층에 속한다 (TCP / UDP 프로토콜을 사용한다.)
  • 전송 계층은 특정 연결의 유효성을 제어하고, 일부 프로토콜은 상태 개념이 있고, 연결기반이다.
  • 즉, 전송 계층이 패킷들의 전송이 유효한지 확인하고 전송 실패한 패킷들을 다시 전송한다는 것을 뜻한다. (UDP는 아니겟지?)
  • 전송계층은 오류검출, 복구, 흐름제어, 중복검사 등을 수행한다.

5. 세션 계층 (Session Layer)

  • 데이터가 통신하기 위한 논리적인 연결을 말한다.
  • 세션 설정, 유지, 종료, 전송 중단시 복구 등의 기능이 있다.
  • 세션 계층은 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공한다.
  • 동시 송수신 방식, 반이중 방식, 전이중 방식의 통신과 함께, 체크 포인팅과 유휴, 종료, 다시 시작 과정 등을 수행한다.
  • 세션 계층은 TCP / IP 세션을 만들고 없애는 책임을 진다.

6. 표현 계층 (Presentation Layer)

  • 데이터를 어떻게 표현할지 정하는 역할을 하는 계층이다.
  • 표현 계층은 3가지 기능을 가지고 있다.
    1. 송신자에서 온 데이터를 해석하기 위한 응용계층 데이터 부호화, 변화
    2. 수신자에서 데이터의 압축을 풀수 있는 방식으로 된 데이터 압축
    3. 데이터의 암호화와 복호화

7. 응용 계층 (Application Layer)

  • 사용자와 가장 밀접한 계층으로 인터페이스 역할을 담당하는 계층이다.
  • 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행한다.
  • 응용 프로세스 간의 정보 교환을 담당한다.
  • ex) 전자메일, 인터넷, 동영상 플레이어 등

HTTP란?

HTTP는 HyperText Transfer Protocol의 약자로, 인터넷에서 하이퍼텍스트 문서인 HTML로 만든 웹페이지를 전송하기 위해 사용되는
프로토콜입니다.

즉, HTTP는 웹 브라우저와 웹 서버가 통신하는 절차와 형식을 규정한 것입니다.

HTTP 통신은 반드시 웹 브라우저의 요청이 있어야 시작됩니다.

 

 

HTTP 메시지

응용 계층의 데이터 단위는 메시지(Message)입니다. 

HTTP 메시지는 서비스를 제공하고 이용하기 위해 어플리케이션이 만든 데이터에 헤더를 붙여 캡술화한 것입니다.

헤더에는 각 계층에 적용되는 프로토콜이 데이터를 처리하여 계층의 역할을 수행할 때 필요한 정보가 담깁니다.

 

모든 HTTP 메시지는 시작 줄로 시작합니다.

 

HTTP는 실제 어플리케이션이 주고받는 데이터를 HTTP 헤드와 구별하여 HTTP 본문 또는 HTTP 바디라고 합니다.

한마디로 서버가 클라이언트에게 전송할 데이터가 담겨 있는 부분 HTTP 바디입니다.

 

따라서 HTTP 메시지는 HTTP 헤드와 HTTP 본문으로 구성됩니다.

HTTP 헤드와 HTTP 본문은 빈 줄(Black line)인 공백 라인으로 구분합니다.

공백 라인으로 요청과 응답에 관한 모든 정보가 전송되었음을 알려주는 것입니다.

 


REFRENCE

https://better-together.tistory.com/149

'Web Develop Log :' 카테고리의 다른 글

OSI 7계층 단순정리  (0) 2022.08.23
WAS (Web Application Server)란 무엇인가?  (0) 2022.08.10
Client 와 Server 란 무엇인가?  (0) 2022.08.08
JPA, Spring Data JPA 차이점  (0) 2022.07.23
Ajax 에 대해서 알아보기  (0) 2022.07.15

WAS (Web Application Server) 란 ?

웹 서버와 웹 컨테이너의 기능을 모두 수행하는 프로그램을 말한다.

 

웹 서버란?

  • 간단히 이야기하면 클라이언트 요청에 응답을 보내는 컴퓨터 프로그램을 말한다.
    이 데이터는 HTML 형식을 데이터이거나, 각종 리소스(자원)이다.

하드웨어 / 소프트웨어 적 웹 서버

  • 하드웨어 측면 :
    1. 웹사이트의 컴포넌트 파일들을 저장하는 컴퓨터
    2. 컴포넌트 파일에는 html 문서/ images / css / js 파일 등
    3. 이 컴포넌트 파일들을 최종 소비자의 디바이스에 전달한다.
    4. 웹 서버는 인터넷에 연결되어 있고, 도메인 이름을 통해 접속될 수 있다.
  • 소프트웨어 측면 : 
    1. 웹 사용자가 어떻게 호스트 파일들에 접근하는지를 관리
    2. HTTP 서버는 URL(Web address)과 HTTP의 소프트웨어 일부이다.

웹 서버의 동작 방식


웹 컨테이너 란?

웹 컨테이너는 클라이언트의 요청에 따른 데이터를 데이터베이스에서 전달받아 웹 서버로 전달하는 프로그램이다.

 

웹 컨테이너의 기능

  • 프로그램 실행 환경과 데이터베이스 접속 기능을 제공한다.
  • 여러 개의 트랜잭션을 관리한다.
  • 업무 처리를 위한 비지니스 로직을 수행한다.
  • Web Service 플랫폼의 역할을 수행한다.

즉, 웹 서버 측에서 클라이언트의 요청을 받아 응답할 때, 요청에 필요한 데이터를 처리하거나 웹 서버에 전달해 주는 역할을 한다.

때문에 데이터베이스 서버와 같이 작업을 수행하는 경우가 많다. 일종의 중간관리자로 웹 서버를 지원하는 역할이라고 보면 된다.

이런 소프트웨어를 미들웨어(Middleware)라고 한다.


WAS의 개념

aws는 DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 Application Server 이다.

HTTP를 통해 컴퓨터나 장치에 애플리케이션을 수행해주는 미들웨어(소프트웨어 엔진)이다.

 

WAS의 역할

WAS = Web Server + Web Container

  • WAS 는 Web Server 기능들을 구조적으로 분리하여 처리하고자하는 목적으로 제시되었다.
  • 분산 트랜잭션, 보안, 메시징, 쓰레드 처리 등의 기능을 처리하는 분산 환경에서 사용된다.
  • 주로 DB 서버와 같이 수행된다.
  • 현재 WAS가 가지고 있는 Web Server도 정적인 컨텐츠를 처리하는 데 있어서 성능상 큰 차이가 없다.

WAS의 주요기능

  • 프로그램 실행 환경과 DB 접속 기능 제공
  • 여러 개의 트랜잭션(논리 작업 단위) 관리 기능
  • 업무를 처리하는 비즈니스 로직 수행

그렇다면 WAS가 Web Server의 기능도 모두 수행하면 되지 않을까?

  • 기능을 분리하여 서버 부하 방지
    1. WAS는 DB 조회나 다양한 로직을 처리하느라 바쁘기 때문에 단순한 정적 컨텐츠는 Web Server에서 빠르게 클라이언트에 제공되는 것이 좋다.
    2. WAS는 기본적으로 동적 컨텐츠를 제공하기 위해 존재하는 서버이다.
    3. 만약 정적 컨텐츠 요청까지 WAS가 처리한다면 정적 데이터 처리로 인해 부하가 커지게 되고, 동적 컨텐츠의 처리가 지연됨에 따라
    수행 속도가 느려진다.
    4. 즉, 이로 인해 페이지 노출 시간이 늘어나게 될 것이다.
  • 물리적으로 분리하여 보안 강화
    1. SSL에 대한 암복호화 처리에 Web Server를 사용
  • 여러 대의 WAS를 연결 가능
    1. Load Balancing을 위해서 Web Server를 사용
    2. fail over(장애 극복), fail back 처리에 유리
    3. 특히 대용량 웹 어플리케이션의 경우(여러 개의 서버 사용) Web Server와 WAS를 분리하여 무중단 운영을 위한
    장애 극복에 쉽게 대응할 수 있다.
    4. 예를 들어, 앞 단의 Web Server에서 오류가 발생한 WAS를 이용하지 못하도록 한 후 WAS를 재시작함으로써
    사용자는 오류를 느끼지 못하고 이용할 수 있다.
  • 여러 웹 어플리케이션 서비스 가능
    1. 예를 들어, 하나의 서버에서 PHP Application과 Java Application을 함께 사용하는 경우
  • 기타
    1. 접근 허용 IP 관리, 2대 이상의 서버에서의 세션 관리 등도 Web Server에서 처리하면 효율적이다.

즉, 자원 이용의 효율성 및 장애 극복, 배포 및 유지보수의 편의성을 위해 Web Server와 WAS를 분리한다.
Web Server를 WAS 앞에 두고 필요한 WAS들을 Web Server에 플러그인 형태로 설정하면 더욱 효율적인 분산 처리가 가능하다.


References

https://gmlwjd9405.github.io/2018/10/27/webserver-vs-was.html

'Web Develop Log :' 카테고리의 다른 글

OSI 7계층 단순정리  (0) 2022.08.23
HTTP 프로토콜이란 무엇인가?  (0) 2022.08.10
Client 와 Server 란 무엇인가?  (0) 2022.08.08
JPA, Spring Data JPA 차이점  (0) 2022.07.23
Ajax 에 대해서 알아보기  (0) 2022.07.15

클라이언트  - 서버 기반 프로그램 동작 방식

 

클라이언트 - 서버 기반 프로그램 구조도

 

클라이언트는 처리할 데이터가 있으면 네트워크를 통해 서버에 전달하고, 서버가 처리한 결과를 네트워크를 통해 다시 받아

결과를 화면에 출력하는 역할만 합니다.

 

  1.  먼저 처리할 데이터를 입력 받아 서버에 처리를 요청하면
  2.  서버는 화면에서 입력한 데이터를 전송 받아 처리합니다.
  3.  그런 다음 계산 결과를 웹 브라우저로 전송하여 결과를 보여줍니다.

즉, 웹 기반 프로그램의 경우 사용자가 사용하는 프로그램의 기능이나 화면이 바뀌면 서버에서 모두 처리합니다.

클라이언트 - 서버 기반 프로그램과 마찬가지로 클라이언트가 특별히 수행해야 할 작업이 없습니다.

그리고 모든 기능을 서버에서 처리하므로 보안 면에서도 월등히 우수합니다.

 

웹 기반 프로그램은 관리하기 용이할 뿐 아니라 보안 면에서도 탁월하여 널리 사용되고 있습니다.

여기서 한 발 더 나아가 JSP가 ASP, PHP 같은 웹 기술을 더하고 데이터베이스 연동 기능을 추가한다면

실시간으로 클라이언트의 요청을 처리할 수도 있습니다.

'Web Develop Log :' 카테고리의 다른 글

OSI 7계층 단순정리  (0) 2022.08.23
HTTP 프로토콜이란 무엇인가?  (0) 2022.08.10
WAS (Web Application Server)란 무엇인가?  (0) 2022.08.10
JPA, Spring Data JPA 차이점  (0) 2022.07.23
Ajax 에 대해서 알아보기  (0) 2022.07.15

1. JPA ( Jakarta persistence API )

이전 Java Persistence API는 지속성과 관련이 있다.

JPA는 도구나 프레임워크가 아니고 오히려 구현자를 안내하는 일련의 개념을 정의한다.

JPA의 ORM(객체 관계형 매핑) 모델은 원래 Hibernate 를 기반으로 했지만 이후로 더 발전했다.

이전 JDBC나 Mybatis가 관계형 데이터베이스와 함께 사용할때 SQL Query문에도 신경을 더 써야했다면

JPA는 반복적인 CRUD SQL을 처리해주기에 ORM (SQL 중심이 아닌 객체 중심) 중심의 개발을 할 수 있다.

 

자바 ORM이란?

ORM이란 (Object-relational mapping)을 단순하게 표현하면 객체와 관계와의 설정이다.

ORM의 object는 OOP(Object_Oriented Programming)이다.

ORM 전에도 OOP사용은 자연스럽게 이루어졌지만 Custom Code를 작성하면서 OOP보다 SQL Query문 작성을

잘 하는 법이 더 중요해졌다. ORM이 나오면서 이러한 OOP다운 기본에 충실한 코딩에 더 신경을 쓸 수 있게 되었다.

그래도 복잡한 쿼리는 JDBC나 mybatis template 같은 연동모듈을 함께 사용해 구현하는 곳도 있다.

 

참조 : https://www.infoworld.com/article/3379043/what-is-jpa-introduction-to-the-java-persistence-api.html

 


JPA 사용 시 장점

1. 특정 데이터베이스에 종속되지 않는다.

오라클 데이터베이스나 Mysql 데이터베이스 등 여러 데이터베이스들의 Query문은 비슷하면서도 다른 점이 존재한다.

아마 JDBC나 Mybatis를 사용하고 있었다면 데이터베이스를 교체할 때 해당 데이터베이스에 맞는 쿼리문 또한 수정해야 한다.

하지만 JPA는 추상화한 데이터 접근 계층 방식이기에 설정 파일에 사용하는 데이터베이스 종류만 알려주면 데이터베이스 변경이

가능하다.

 

2. 객체지향적 프로그래밍

위에 한번 언급했듯이 데이터베이스 설계 중심에서 OOP 설계 중심으로 전환이 가능하다.

이를 통해 더 직관적이고 비지니스 로직에 집중할 수 있도록 도와준다.

 

3. 생산성 향상

ORACLE, Mysql 등 다른 데이터베이스 테이블에 컬럼을 추가했다면, 해당 테이블을 정의한 DTO 클래스의 필드를 모두 변경해야 한다.

하지만 JPA에서는 테이블과 매핑된 클래스에 필드만 추가한다면 관리가 가능하다.

 


JPA 사용 시 단점

1. 복잡한 쿼리 처리

일반적인 CRUD나 몇가지 조건이 필요한 작업은 JPA로도 충분히 가능하다. 하지만 복잡한 쿼리를 사용해야 할때 제약이 생기는데

이를 보안하기 위해서 JPQL을 지원하고 있다. 하지만 JDBC나 Mybatis 같은 연동 모듈을 사용해 SQL문법도

JPA와 같이 사용하는 곳도 있다.

 

2. 객체 간의 매핑 설계를 잘못했을때 성능 저하가 발생할 수 있다.

 

https://velog.io/@dev_zzame/JPA%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EC%9E%A5%EB%8B%A8%EC%A0%90%EC%9D%80-%EB%AD%90%EA%B0%80-%EC%9E%88%EC%9D%84%EA%B9%8C

 

JPA란 무엇인가, 그리고 장단점은 뭐가 있을까?

JPA(Java Persistence API)는 자바 ORM 기술에 대한 API 표준이다. ORM이란 Object Realational Mapping의 약자로 객체와 관계형 데이터베이스를 매핑해주는 것을 말한다. 그렇다면 ORM기술은 왜 나왔을까? JPA를 공

velog.io

 


2. Spring Data JPA

Spring Data JPA는 JPA를 쓰기 편하게 만들어 놓은 모듈이다.

JPA가 EntityManager로 데이터베이스에 접근했다면, Spring Data JPA는 Repository를 이용하여 데이터베이스에 접근한다.

JPA가 다른 SQL Query를 직접 작성하는 연동 모듈들 보다 코드가 더 간결하고 빠르게 코딩이 가능하지만 그래도 몇줄의 코드는 입력해야 하는데 Spring Data JPA를 사용하면 일반적인 CRUD는 한 줄의 코드 작성으로 완료될 수도 있다.

 

 

 

'Web Develop Log :' 카테고리의 다른 글

OSI 7계층 단순정리  (0) 2022.08.23
HTTP 프로토콜이란 무엇인가?  (0) 2022.08.10
WAS (Web Application Server)란 무엇인가?  (0) 2022.08.10
Client 와 Server 란 무엇인가?  (0) 2022.08.08
Ajax 에 대해서 알아보기  (0) 2022.07.15

https://developer.mozilla.org/ko/docs/Web/Guide/AJAX/Getting_Started

 

AJAX 비동기 자바스크립트와 XML(Asynchronous JavaScript And XML) 을 말합니다.

간단히 말하면 서버와 통신하기 위해  XMLHttpRequest 객체를 사용하는 것을 말한다고 한다.

 

XMLHttpRequest (XHR) 객체는 서버와 상호작용할 때 사용합니다. XHR을 사용하면 페이지의 새로고침 없이도 URL에서 데이터를 가져올 수 있습니다. 이를 활용하면 사용자의 작업을 방해하지 않고 페이지의 일부를 업데이트할 수 있다.

AJAX의 강력한 특징은 페이지 전체를 리프레쉬 하지 않고서도 수행 되는 "비동기성"입니다. 이러한 비동기성을 통해 사용자의 Event가 있으면 전체 페이지가 아닌 일부분만을 업데이트 할 수 있게 해줍니다.

 


 

데이터 형식

데이터를 전송하는데 있어 전송 형식은 여러 종류가 있지만, Ajax 통신에서 데이터를 전송하는 형식은 크게 세가지로 나뉜다.

바로 CSV, JSON, XML 형식입니다.

 

나는 XML 과 JSON 형식을 적어봐야겠다.

 

XML : CSV 형식의 가독성을 개선하기 위해 나온 데이터 형식이다. 태그로 속성과 데이터를 구분한다.

가독성은 좋지만 용량이 크며 데이터가 많아지면 분석속도가 오래걸린다는 단점이 있다.

 

JSON :  JavaScript의 객체 형태로 데이터를 전송하는 방법이다.

XML 과 CSV 의 단점을 최소화한 형식으로 현재 가장많이 쓰인다. 가독성도 좋고 용량도 적지만 데이터량이 많아지면 역시 분석속도가 떨어진다.

 

 


데이터 전달 방식

  • GET :  지정한 URL의 데이터를 열람하기 위한 메소드 (전송시 전송량이 적고, URL에 정보가 모두 담겨있는 단점이 있다.)
  • POST : 지정한 URL의 데이터를 생성하기 위한 메소드 (PUT, DELETE 메소드의 역할까지 담당이 가능하다.)
  • PUT : 지정한 URL의 데이터를 갱신하기 위한 메소드
  • DELETE : 지정한 URL의 데이터를 삭제하기 위한 메소드
  • HEAD : 지정한 URL의 헤더 정보를 요청하는 메소드

보안 및 특정 브라우저에서 PUT, DELETE 메소드를 지원하지 않는다.

 

단순히 데이터를 읽어 들어들이는 경우에 로그인 같은 경우 사용자의 아이디와 비밀번호만 데이터를 전송하면 되지만

GET 방식으로 전달시 사용자의 개인정보가 URL에 노출되므로 POST으로 정보를 전달한다.

 


Ajax 함수

자세한 사항은 김재훈님 블로그에서 더 많은 정보를 얻을 수 있습니다.

https://www.nextree.co.kr/p9521/

 

JavaScript, jQuery, 그리고 Ajax

Ajax는 Asynchronous JavaScript And XML의 약어로 언어나 프레임 워크가 아닌 구현하는 방식을 의미합니다. 데이터를 이동하고 화면을 구성하는데 있어서 웹 화면을 갱신하지 않고 필요한 데이터를 서버

www.nextree.co.kr

'Web Develop Log :' 카테고리의 다른 글

OSI 7계층 단순정리  (0) 2022.08.23
HTTP 프로토콜이란 무엇인가?  (0) 2022.08.10
WAS (Web Application Server)란 무엇인가?  (0) 2022.08.10
Client 와 Server 란 무엇인가?  (0) 2022.08.08
JPA, Spring Data JPA 차이점  (0) 2022.07.23

+ Recent posts