K 개발자

상위 계층의 이해 본문

OS/네트워크

상위 계층의 이해

ddingz 2021. 8. 5. 20:42

세션 계층

응용 환경에서 전송 계층이 제공하는 서비스를 손쉽게 이용하게 하려면 사용자의 논리적 관점을 고려하여 단순한 사용자 인터페이스를 제공해야 한다.
세션 계층Session Layer은 이러한 필요에 따라 도입되었다.

토큰 종류

세션 계층은 두 응용 프로세스의 대화를 관리하려고 토큰Token이라는 특수 메시지를 사용한다.
토큰을 보유한다는 것은 해당 토큰에 부여된 특정한 권리를 배타적으로 소유한다는 의미이다.

  • 데이터 토큰
    데이터 토큰Data Token은 데이터를 전송할 수 있는 권리를 제공한다.
  • 해제 토큰
    해제 토큰Release Token은 통신 양단 간의 연결 해제 과정을 제어하기 위해 사용한다.
  • 동기 토큰
    동기 토큰Synchronization Token은 세션 연결을 사용하는 과정에서 동기 처리가 필요한 지점에 사용한다.

토큰과 동기점

동기점을 부여하기 위한 동기 토큰은 크게 두 가지이다.
하나는 특정 대화 단위를 구분하는 주동기 토큰Major Token 혹은 Activity Token이고, 다른 하나는 대화 단위 내에서 다시 작은 부분으로 나누어 처리하는 부동기 토큰Minor Token이다.

재동기 기능

동기점의 역할

세션 계층에서 제공하는 주요 기능인 동기Synchronization는 세션 연결을 사용해 데이터를 주고받다가 오류가 발생했을 때, 이를 효과적으로 복구할 수 있게 해준다.
동기점은 데이터를 전송할 때 특정 지점에서 복구할 수 있도록 통신 양단 간의 합으로 지정된다.
이때 동기점을 이용한 일련의 복구 과정을 재동기Resynchronization라 한다.
동기점은 주동기점과 부동기점으로 나뉘고, 주동기점 간의 전송 단위는 대화로 정의된다.
부동기점은 대화 단위 내의 작은 부분에서 설정된다.
재동기 처리는 직전의 부동기점으로 이동하는 과정을 반복하면서 진행되는데, 어떠한 경우에도 주동기점의 경계를 넘어 되돌아가지 않는다.
왜냐하면 세션 계층에서 주동기점이 부여된다는 것은 해당 지점까지 데이터 전송이 완벽하게 이루어졌다는 뜻이므로, 주동기점 이전의 복구 과정은 불필요하기 때문이다.

액티비티 기능

동기의 또 다른 기능으로 액티비티Activity가 있다.
액티비티는 세션 프로세스 사이에 논리적으로 설정되는 단위이며, 내용이 상호 독립적이다.
액티비티 단위의 시작과 끝의 표시는 주동기점의 설정과 동일한 효과를 나타낸다.

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

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

임의의 네트워크 서비스를 제공하는 서버 프로세스가 다수의 클라이언트 프로세스에 동시에 여러 세션 연결을 설정할 수 있다.
클라이언트 프로세스와 설정된 세션은 논리적으로 연관이 없는 서로 독립적인 연결이다.
다중 세션을 지원하는 클라이언트-서버 환경은 서버가 제공하는 서비스 시간이 짧은 응용 환경에서 유용하다.
만일 클라이언트와 서버 사이의 서비스 이용 시간이 길어지면 특정 클라이언트와 세션 연결이 길게 유지되므로 다른 클라이언트의 대기 시간이 무한정 증가된다는 단점이 있다.

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

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

다중 세션 연결 방식의 문제를 해결하려면 서버 프로세스 하나가 클라이언트 프로세스 하나와 세션 연결을 설정해 통신해야 한다.
이런 경우에 여러 클라이언트를 동시에 지원하려면 복사된 하위 서버 프로세스를 여러 개 만들어야 한다.
이 방식의 단점은 클라이언트의 개별 요구마다 하위 프로세스를 생성하기 때문에 초기 서비스 환경 구축에 따른 오버헤드가 증가한다는 점이다.
즉, 프로세스를 새로 생성하고 실행 상태로 만들어주는 데 걸리는 시간이 길어 서비스 시간이 짧은 응용 환경에서는 사용하지 않는다.


표현 계층

표현 계층Presentation Layer은 응용 프로세스 사이에 전송되는 메시지의 표현 방법을 다룬다.
즉, 표현 계층 프로토콜의 전송 메시지에 표현된 문법Syntax 내용을 통신 양단의 프로세스가 해석하는 기능을 제공함으로써, 송신 프로세스가 전달하는 의미Semantic를 수신 프로세스에서 정확히 이해할 수 있게 한다.

추상 문법

추상 문법과 전송 문법

컴퓨터에서 사용하는 데이터 표현 규칙인 추상 문법Abstract Syntax으로 표현된 의미를 올바르게 송수신하려면 메시지를 전송하기 전에 변환해야 한다.
즉, 특정 컴퓨터에 독립적이면서 네트워크 전체에서 일관성 있는 새로운 표현 규칙인 전송 문법Transfer Syntax으로 변환하여 전송한다.
이렇게 함으로써 전송 선로를 통해 교환되는 데이터는 공통의 표현 규칙인 전송 문법으로 표현된다.
반대로 네트워크에서 데이터를 수신할 때는 전송 문법의 데이터를 자신이 이해하는 추상 문법으로 변환한다.

ASN.1

ISO는 분산 환경에서 표현되는 데이터를 정의하기 위한 일반적인 추상 문법으로 ASN.1Abstract Syntax Notation Number 1을 정의하였다.

손실·비손실 데이터 압축

손실·비손실 압축

대용량 데이터는 압축Compression하여 크기를 줄인 후 전송하는 것이 전송 속도 면에서 유리하다.
일반적으로 가장 좋은 압축 알고리즘이란 없으며, 데이터의 특성에 맞는 알고리즘을 사용하는 것이 중요하다.
데이터를 압축하는 유형에는 비손실 압축과 손실 압축이 있다.

비손실 압축Lossless Compression은 압축 과정에서 원래 데이터의 내용을 분실하지 않는다.
즉, 압축 해제를 통해 얻은 데이터가 압축 이전의 데이터와 완전히 동일하다.

손실 압축Lossy Compression은 압축 해제한 데이터가 원래 데이터와 동일하지 않다.
원래 데이터의 손실을 허용하면서 압축하는 이유는 압축 효율을 높이기 위함이다.


응용 계층

응용 계층Application Layer의 역할은 하부 계층을 이용해 사용자에게 편리한 응용 환경을 제공하는 것이다.

클라이언트-서버 모델

클라이언트와 서버의 연결

하나의 서버 프로그램이 다수의 클라이언트에 응용 서비스를 제공하는 클라이언트-서버 모델은 인터넷 응용 환경에서 보편화된 연결 설정 방식이다.
둘 사이의 연결 설정 과정에서 서버가 먼저 통신 대기 상태에 있는데, 이러한 비대칭 구조는 클라이언트와 서버의 연동을 단순화시키는 장점이 있다.

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

RTP 프로토콜  (0) 2021.08.05
UDP 프로토콜  (0) 2021.08.04
TCP 프로토콜을 이용한 데이터 전송  (0) 2021.08.04
TCP 프로토콜  (0) 2021.08.03
전송 계층의 기능  (0) 2021.08.02
Comments