본문 바로가기

Computer Science/네트워크

[쉽게 배우는 데이터 통신과 네트워크] CH11. 상위 계층의 이해

반응형
SMALL

01 상위 계층 소개

TCP/IP 계층 구조

 


02 세션 계층

응용 환경에서 전송 계층이 제공하는 서비스를 손쉽게 이용하려면 사용자의 논리적 관점을 고려하여 단순한 사용자 인터페이스를 제공해야 한다.

 

1 세션 계층의 기능

  • 세션 연결은 응용 환경에서 두 응용 프로세서 간의 세션을 설정하기 위해 만든다.
  • 동기 문제를 처리한다. (통신 양단에서 서로 동의하는 논리적인 공통 처리 지점)
  • 메시지 전송 과정을 의미하는 대화 단계에서 오류가 발생하면, 이전에 설정한 동기점까지는 복구할 수 있다.

 


2 토큰

세션 계층은 두 응용 프로세스의 대화를 관리하려고 토큰이라는 특수 메시지를 사용한다.

 

2.1 토큰 종류

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

 

2.2 토큰과 동기점

  • 큰 파일을 작은 단위로 나누는 과정은 동기점을 부여하는 과정이다.
  • 전송 과정에서 오류가 발생해도 가장 가까운 지점에 설정한 동기점 이후의 데이터만 복구하면 된다.
  • 동기점을 부여하기 위한 동기 토큰은 크게 2가지가 있다.
    • 주동기 토큰: 특정 대화 단위를 구분한다.
    • 부동기 토큰: 대화 단위 내에서 다시 작은 부분으로 나누어 처리한다.

 


3 동기

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

 

3.1 재동기 기능

세션 계층의 상위 계층에는 적절한 구간으로 나뉜 지점에 동기점을 부여하고, 오류가 발생하면 해당 지점으로 돌아가 복구하는 기능이 구현되어야 한다. 이때 동기점을 이용한 일련의 복구 과정을 재동기라 한다.

 

동기점의 역할

  • 동기점은 주동기점과 부동기점으로 나뉘고, 주동기점 간의 전송 단위는 대화로 정의된다.
    • 주동기점은 두 세션 프로세스 사이에 교환되는 대화의 한 단위가 완료되는 지점에서 설정된다.
    • 부동기점은 대화 단위 내의 작은 부분에서 설정된다.
  • 재동기를 할 때 부동기점에서 복구가 이루어지지 않으면 여러 부동기점을 순차적으로 후퇴하면서 복구 기능을 수행한다. 이는 부동기점에 보관되는 정보가 논리적으로 상호 배타적인 내용을 포함하고 있음을 의미한다. (주동기점은 데이터 전송이 완벽하게 이루어졌음을 의미함)

 

3.2 액티비티 기능

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

 


4 세션 연결

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

 

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

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

  • 임의의 네트워크 서비스를 제공하는 서버 프로세스가 다수의 클라이언트 프로세스에 동시에 여러 세션 연결을 설정할 수 있다.
  • 클라이언트 프로세스와 설정된 세션은 논리적으로 연관이 없는 서로 독립적인 연결이다.
  • 서버가 제공하는 서비스 시간이 짧은 응용 환경에서 유용하다.

 

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

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

  • 여러 클라이언트를 동시에 지원하려면 하위 서버 프로세스를 여러 개 만들어야 한다.
  • 하위 서버는 처리 과정에서 만들어지므로 포트 번호를 Well-known 포트로 지정하기 어렵다. 대표 서버는 하위 서버 프로세스를 새로 실행시키고, 연결을 요청한 클라이언트와 세션을 연결해준다.
  • 👎 클라이언트의 개별 요구마다 하위 프로세스를 생성하기 때문에 초기 서비스 환경 구축에 따른 오버헤드가 증가한다. (서비스 시간이 짧은 응용 환경에서 사용 X)

 


03 표현 계층

표현 계층은 응용 프로세스 사이에 전송되는 메시지의 표현 방법을 다룬다.

 

1 데이터 표현

1.1 추상 문법

추상 문법과 전송 문법

  • 컴퓨터에서 사용하는 데이터 표현 규칙인 추상 문법으로 표현된 의미를 올바르게 송수신하려면 메시지를 전송하기 전에 변환해야 한다.
  • 특정 컴퓨터에 독립적이면서 네트워크 전체에서 일관성 있는 새로운 표현 규칙인 전송 문법으로 변환하여 전송한다.
  • 네트워크에서 데이터를 수신할 때는 전송 문법의 데이터를 추상 문법으로 변환한다.

 

1.2 ASN.1

ASN.1 컴파일러

  • ISO는 분산 환경에서 표현되는 데이터를 정의하기 위한 일반적인 추상 문법으로 ASN.1을 정의했다.
  • ASN.1 규격은 응용 계층의 문법 규칙을 포함하여, PDU의 구조를 정의하도록 만들어졌다.
  • 일반 프로그래밍 언어에서 사용하는 방식과 비슷한 문법 형식을 지원한다.

 

유형 설명
UNIVERSAL 일반 데이터형
CONTEXT-SPECIFIC 특정 컨텍스트와 관련된 유형
APPLICATION 응용 개체의 공통 유형
PRIVATE 사용자 정의 유형

🔼 ASN.1 규약에서 지원하는 클래스 유형

 

1.3 ASN.1의 UNIVERSAL 클래스

UNIVERSAL 클래스는 일반 데이터형을 정의한다. (기본형과 구조형으로 나뉨)

 

변수형 의미
BOOLEAN 참, 거짓
INTEGER 정수형 숫자
BITSTRING 비트들의 연속
OCTSTRING 옥텟들의 연속
IA5String/GraphString -
NULL 변수형 미정의
ANY 변수형을 다른 곳에서 정의

🔼 UNIVERSAL 클래스의 일반 데이터형: 기본형

 

변수형 의미
SEQUENCE 순서대로 나열한 임의 유형의 집합 (고정 크기)
SEQUENCEOF 순서대로 나열한 동일 유형의 집합 (고정/가변 크기)
SET 순서 없이 나열한 임의 유형의 집합 (고정 크기)
SETOF 순서 없이 나열한 동일 유형의 집합 (고정/가변 크기)
CHOICE 미리 정의된 유형 집합에서 선택한 순서가 없는 유형 집합 (고정 크기)

🔼 UNIVERSAL 클래스의 일반 데이터형: 구조형

 

1.4 ASN.1의 태그

  • 구조형에 선언된 변수를 개별적으로 사용하려고 태깅 기능을 지원한다. (인덱스와 유사함)
  • 태그는 3가지 방법으로 선언한다.
    • CONTEXT-SPECIFIC: 태그의 범위가 현재 구조형에 한정되어 적용됨
    • APPLICATION: 태그의 범위가 전체 응용 컨텍스트에 적용됨
    • PRIVATE: 태그의 범위가 해당 사용자에게 적용됨

 

1.5 데이터 압축과 보안

  • 전송 데이터 양이 많으면 원래 의미를 유지하는 범위 내에서 크기를 줄이는 것이 효율적이다. 표현 계층은 이를 위해 압축 기능을 수행한다.
  • 암호화는 데이터를 송수신하는 당사자 외의 제3자에게 부당하게 정보가 유출되거나 왜곡되는 현상을 방지한다.

 


2 데이터 압축

  • 대용량 데이터는 압축하여 크기를 줄인 후 전송하는 것이 전송 속도 면에서 유리하다.
  • 데이터의 특성에 맞는 알고리즘을 사용하는 것이 중요하다.

 

2.1 연속 문자 압축의 예

데이터 압축 예

  • (a) T라는 문자를 모자이크 형태로 형상화한 정지 영상 데이터 (가로 18바이트, 세로 10바이트)
    • 18 * 10 = 180바이트의 데이터를 전송해야 한다.
  • (b) (a) 데이터를 압축한 데이터 패턴 (3바이트의 정보가 19행으로 표시)
    • 3 * 19 = 57바이트의 데이터만 전송하면 된다.
    • {O, 2, X, 16}의 내용이 여러 번 반복되므로, 적절한 알고리즘으로 추가 압축할 수 있다.
  • (b)와 같은 압축 데이터를 이용해 (a)와 같은 원본 데이터를 얻는 과정을 압축 해제라 한다.
  • 👎 동일 패턴이 없으면 압축 데이터가 오히려 커질 수 있다.

 

struct send_data { // 그림 크기를 18*10로 가정, 크기는 3바이트
	char pattern; // 원래 데이터에 포함된 임의의 패턴
	short count; // pattern에 보관된 데이터의 반복 횟수
}
  • pattern: 원래 데이터(a)에 포함된 문자의 코드 값
  • count: 해당 문자 패턴이 연속해서 반복한 횟수

 


2.2 손실, 비손실 데이터 압축

손실, 비손실 압축

  • 비손실 압축은 압축 과정에서 원래 데이터의 내용을 분실하지 않는다.
  • 손실 압축은 압축 해제한 데이터가 원래 데이터와 동일하지 않다. (데이터의 손실을 허용하면서 압축 효율을 높임)

 


04 응용 계층

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

 

1 클라이언트-서버 모델

클라이언트와 서버의 연결

  • 둘 사이의 연결 설정 과정에서 서버가 먼저 통신 대기 상태에 있는데, 이러한 비대칭 구조는 클라이언트와 서버의 연동을 단순화시키는 장점이 있다.
  • 서버 프로세스는 일단 시작하면 영원히 종료되지 않고 실행되며, 다수의 클라이언트 요청을 반복적으로 수행한다.
  • 클라이언트와 서버 사이의 네트워크 연결은 전송 계층의 포트 연결로 구현된다.

 

1.1 연결형, 비연결형 서비스

  • 비연결형 서비스
    • UDP에서 제공한다.
    • 👍 빠른 통신을 보장한다.
    • 👎 데이터 분실이나 비순서 도착이라는 단점 때문에 응용 프로그래머의 부담이 커진다.
  • 연결형 서비스
    • TCP에서 제공한다.
    • 👍 신뢰성이 높다.
    • 👎 UDP보다 속도가 떨어진다.

 

1.2 상태 정보

  • 연결형 서비스는 클라이언트와 서버 사이의 연결로 인해 둘 사이의 현재 상태라는 개념이 존재한다.
    • 상태 정보는 한쪽 시스템이 다운되는 등의 현상에 의해 상태 정보를 잃어버렸을 때는 다운되기 직전 상태로 복구해야 하는 문제가 남는다.
    • 첫 번째 요청에만 파일 이름을 보내고 이후 요청에는 보내지 않으면 서버가 첫 번째 요청을 받았을 때 파일 이름이라는 상태 정보를 보관해야 한다. 이 경우 상태 서비스가 된다.
  • 비상태는 클라이언트가 서버에 요청하면 서버가 결과를 응답하는 절차가 하나의 단위로 완결된다.
    • 클라이언트가 매 요청마다 전송 파일 이름을 보내면 서버는 이를 일부러 보관할 필요가 없으므로 비상태 서비스가 된다.

 

1.3 동시성 제어

  • 동시성은 임의의 동작이 외형상 동시에 진행되는 것처럼 보이는 것이다.
  • 독립적으로 실행되는 프로세스의 실행 순서가 결과에 영향을 주지 않는다.
  • 임의의 클라이언트가 서버와 연결하여 서비스를 받는 동안 다른 클라이언트의 요청을 서버가 지원하면 동시성을 지원하는 것이다.
    • 동시성을 지원하지 않으면 현재 서비스 중인 클라이언트 외의 클라이언트는 대기 상태에 놓인다.
    • 동시성을 지원하면 여러 클라이언트의 서비스 요청을 동시에 지원할 수 있다.

 


Reference

쉽게 배우는 데이터 통신과 컴퓨터 네트워크

반응형
LIST