본문 바로가기

CS/네트워크

12. 상위계층(세션 계층 + 표현 계층 + 응용 계층)

쉽게 배우는 데이터 통신과 컴퓨터 네트워크를 정리한 내용입니다

 

인터넷 환경에서 계층 4까지는 운영체재 내부에 구현된다. TCP/IP기능 사용하기 위한 응용 프로그램에서는 계층 5,6,7을 묶음으로 작성해 필요한 응용기능을 만든다.

* 세션 계층 : 응용프로그램이 어떻게 TCP/IP 프로토콜과 연동되어 동작하는지 이해하기위해 이해가 필요

* 표현 계층 : 데이터의 표현에 대해 정의하려는 목적으로 표준화(오늘날 대용량 데이터 처리가 늘어나며 데이터압축&암호화 기능 중요화됨)

* 응용 계층 : 

세션 연결을 이용한 클라이언트&서버의 개념과 동작원리는 상위계층(특히 응용계층)에서 중요한 역할을 함

 

1. 상위 계층의 이해

상위 계층인 세션 계층, 표현 계층, 응용 계층은 하나의 프로그램으로 묶여 사용자 프로그램으로 구현된다. 

(세션계층, 표현계층의 기능은 단순화되거나 구현되지 않는 경우가 많다)

상위 계층은 응용 환경의 요구조건에 따라 복잡도가 달라짐 -> 메타버스는 매우 복잡, 인터넷 채팅은 비교적 쉬움

 

2. 세션 계층

응용 환경에서 두 응용 프로세스 간의 세션을 설정하기 위해 만들며, 상위계층에 제공하는 기능은 아래와 같다

  • 세션 연결의 설정과, 해제
  • 세션 메세지 전송
  • 동기(Synchronization)문제를 처리
세션 계층 vs 전송 계층
다운로드 과정에서 TCP연결이 끊겨 전송이 중단됨
* 세션 기능이 없으면 : 서버와 다시 연결해 처음부터 다운로드 작업을 실행해야함
* 세션 기능이 있으면 : 복구후 이미 다운로드된 내용 이후부터 연속해서 전송받을수 있음

동기(Synchronization)문제 처리

동기 기능 : 통신 양단에서 서로 동의하는 논리적인 공통 처리 지점(동기점)을 정하기 위해 사용되는데, 동기점을 설정은 메세지 전송과정시 발생하는 오류를 복구하기 위해서이다. -> 동기점이 살정된 지점까지는 모두 완벽하게 처리되었으니, 오류 발생시 동기점 이후부터 작업

 

세션 연결을 사용한 메세지 전송과정인 대화 단계에서 오류가 발생하면 이전에 설정된 동기점까지는 복구할 수 있다

의도적으로 동기점을 설정해 해당 지점에서 작업을 이어 진행할 수도 있음!

 

1) 토큰

두 응용 프로세스의 대화를 관리하기 위해 만든 특수 메세지로 세션 계층에서 사용.

 

토큰의 종류

  • 데이터 토큰(Data Token) : 데이터를 전송할 수 있는 권리를 제공. 데이터 전송시 세션 사용자는 반드시 데이터 토튼을 가져야함
  • 해제 토큰(Release Token) : 통신 양단 간의 연결 해제과정을 제어하기위해 사용. 임의의 사용자가 연결해제요청하려면 필요
  • 동기 토큰(Synchronization Token) : 세션 연결을 사용하는 과정에서 동기 처리가 필요한 지점에 사용

동기점을 부여하기위한 토큰

큰 파일을 전송할때 한번에 하나를 보내는것보다 작은 단위로 나누는게 전송 오류에 대처하기가 쉽다.

작은 단위로 나뉘어 전송후 에러가 발생한다면, 이때 위에서 언급된 동기점을 이용해 완료이후의 데이터만 추가로 전송해주면된다.

동기점을 부여하기위해 동기 토큰을 사용하며 크게 2가지 종류가 있다

  1. 주동기 토큰 / 액티비티 토큰(Major Token) : 특정 대화 단위를 구분한다
  2. 부동기 토큰(Minor Token) : 대화 단위 내에서 다시 작은 단위로 나누어 처리

2) 동기

세션 연결을 사용해 데이터를 주고 받다 오류가 발생했을 때, 이를 효과적으로 복구할 수 있게 해준다

재동기 기능

전송 오류 발생시 해당 지점(동기점)으로 돌아가 복구하는 일련의 복구과정

위의 그림처럼 동기점은 주동기점과 부동기점으로 나뉜다

  • 주동기점
    • 전송 단위가 대회고 정의됨
    • 주동기점은 두 세션 프로세스 사이의 대화의 한 단위가 완료되었다는 것을 의미
    • 주 동기점의 이전은 이미 완벽하게 전송되었기 때문에 주동기점 이전의 복구과정이 불필요하다
  • 부동기점
    • 대화 단위 내의 작은 부분에서 설정됨
    • 오류 복구가 완벽하게 이루어지지 않을 가능성이 있다
    • 복구에 필요한 백업정보량이 주동기점보다 낮아 복구 소요 부담이 덜하다
    • 부동기점에서 복구가 이루어 지지 않았다 -> 순차적으로 전 부동기점으로 후퇴해 복구기능을 수행한다

3) 세션 연결

상위 계층의 응용프로세스가 다른 응용프로세스에 세션을 설정하기위해 세션계층의 연결을 사용한다

- 다중 세션 연결을 지원하는 서버

하나의 서버가 다수의 클라이언트를 동시에 지원할 수 있다(각각 별도의 독립적 연결이다)

서버가 제공하는 서비스 시간이 짧은 응용 환경에서 유용하게 사용된다

하나의 서버의 서비스 이용시간이 길어질 경우 나머지 클라이언트의 대기시간이 무한정 증가될 수 있다.

- 단일 세션 연결을 지원하는 서버

하나의 서버가 하나의 클리언트만 지원한다.

여러 클라이언트를 지원하려면 복사된 하위 서버를 여러개 만들어 연결해아한다.

초기 서비스 환경 구축이 필요해 서비스 시간이 짧은 응용 환경에는 사용되지 않는다

대부분의 TCP/IP 서비스는 단일 세션 연결 방식을 사용하고 있다

3. 표현 계층

응용 프로세스 사이에 전송되는 메시지의 표현 방법을 규정한다

1) 데이터 표현

컴퓨터는 제각각 자신이 이해하는 방식으로 데이터를 표현할때 추상문법을 사용하며, 문제없이 송수신 하기위해 공통된 규칙전송 문법으로 변환해 전송한다.

ASN.1 (Abstract Syntax Notation Number 1)
ISO에서 정의한 추상문법으로 응용환경에서 폭넓게 사용된다.
응용 계층의 문법 규칙 뿐만 아니라 PDU(Protocol Data Unit)의 구조를 정의하도록 만들어졌다.

2) 데이터 압축 & 보안

- 압축 : 전송 데이터 양을 줄이는 목적으로 사용

- 암호화 : 데이터를 송수신하는 당사자 외의 제3자에게 유출되거나 왜곡되는 현상을 방지

 

데이터를 압축해 줄이는 과정에서 어떤 알고리즘을 적용하느냐에 따라 압축률이 달라진다.

어떤 알고리즘을 정하기보다는 데이터의 특성에 맞는 알고리즘을 사용하는것이 중요하다

연속 문자 압축

원본 데이터 : T를 이미지화

  1. 원본 데이터를 압축없이 전송하면 문자열 갯수만으로봐도 18 X 10 = 180의 데이터를 전송해야한다. 
  2. 문자열이 연속으로 반복되는 갯수를 카운트해서 데이터를 압축하면 원본보다 데이터 크기가 줄어든다

위의 방식처럼 압축데이터를 이용해 원본데이터를 받는 방식을 압축 해제라고 함 

연속 문자 압축은 중복되는 데이터가 많으면 유용하지만 패턴이 없을경우 오히려 비효율 적일 수 있음

 

손실,비손실 압축

  • 비손실 압축(Lossless Compression) : 압축 과정에서 원래 데이터의 내용을 분실 하지 않는다 -> 압축 해제시 압축 이전의 데이터와 완전히 동일하다 
  • 손실 압축(Lossy Compression) : 압축 과정에서 원래 데이터 일부가 손실된다 -> 압축 해제한 데이터가 원래 데이터와 동일하지 않음(데이터 손실정도는 응용 환경에 따라 허용범위가 다르다)
    손실압축 사용시 비손실 압축에 비해 압축 데이터 크기가 작아 데이터 전송 효율을 높일수 있다

4. 응용 계층

응용 계층 하부의 계층들은 신뢰성 있는 데이터 전송을 보장하는 것이였다. 응용 계층은 하부계층을 이용해 사용자에게 편리한 응용 환경을 제공하는 역할을 한다.

응용 계층의 구현은 사용자 프로그램 환경에서 이루어진다.

응용 계층은 다양한 종류가 있으며 아래 내용은 TCP/IP 기반의 인터넷 환경과유닉스 운영체제기반으로 언급되는 서비스관련 내용이다

1) 클라이언트, 서버 모델

인터넷 응용 환경에서 보편화된 연결 설정방식으로 서버가 반드시 처음에 통신 대기 상태에 있어야 한다.

클라이언트는 서버에게 연결 요청을 시도하며 클라이언트와 서버의 네트워크 연결은 TCP/UDP의 포트 연결로 구성된다.

 

2)  클라이언트, 서버 모델 고려사항

  • 연결형/비연결형 서비스
  • 상태(State)정보 : 특정 상황에 대하여 통신 양단이 바라보는 관점을 상태라고 말하며 상태(State)/비상태(Stateless)서비스가 있다. 

  • 동시성 제어 : 동시성 제어는 여러 동작의 선후 진행속도에 상관 없이 동시에 실행 되어도 각 실행 결과가 항상 같은 결과를 제공하도록 해준다
    클라이언트,서버 환경에서 동시성은 서버 하나가 여러 클라이언트에 동시에 서비스하는 경우를 의미하기도 함(a클라이언트가 서비스를 받는 동안 클라이언트b의 요청을 서버가 지원한다면 동시성을 지원한다고 볼 수 있다)

'CS > 네트워크' 카테고리의 다른 글

14. 웹(WWW)  (0) 2022.10.24
13. 네트워크 프로그래밍  (0) 2022.10.10
11. UDP 프로토콜 & RTP 프로토콜 & OSI TP  (0) 2022.09.26
10. TCP정의 및 TCP동작 원리  (1) 2022.09.21
9. 전송 계층의 기능  (0) 2022.09.20