상위 계층

박정빈·2024년 3월 7일

네트워크와 통신

목록 보기
10/10

서술할 상위 계층 3개는 사용자 프로그램 형태로 구현된다. 일반적으로 3가지 기능을 묶어 하나의 프로그램으로 만드는데, 예를들어 텔넷,FTP,전자메일 등이 있다. 특히 세션 계층과 표현 계층은 프로그램에 구현되지 않거나 아주 단순화 되어 구현되곤 한다.

세션 계층

기능

세션 계층은 기능에는 세션 연결의 설정, 해제, 세션 메시지 전송(대화) 등이 있다. 하나의 프로그램은 동시에 여러 사용자와 세션 연결을 생성할 수 있다. 세션이 연결되면, 각 프로그램이 세션메시지를 송수신할 수 있다. 그리고 세션 연결 해제 과정을 통해 세션 사용을 종료한다.

세션 계층의 가장 중요한 기능은 동기 문제 처리 - 동기점 지정이다. 동기점 지정을 통해 메시지 전송 과정중 발생하는 오류를 복구할 수 있다. 동기점은 그 지점 이전으로는 오류가 없다는 의미이며 오류 발생시 동기점 이후의 과정에 대해서 복구처리를 진행한다. 시간 경과에 따라 동기점을 부여해 각 지점에서의 신뢰성을 보장할 수 있다.

토큰

프로그램 간의 대화 관리를 위해 토큰Token이라는 메시지를 사용한다. 토큰의 종류는 다음의 4가지가 존재한다.

  • 데이터 토큰
    데이터 전송 권리 제공하므로 세션 사용자가 데이터를 전송하려면 토큰을 획득해야한다.
  • 해제 토큰
    세션 해제 과정을 제어하기 위해 사용한다. 연결 해제시 토큰이 필요하다.
  • 동기 토큰
    세션을 사용하는 과정에서 동기 처리가 필요할 때 사용된다.
  • 액티비티 토큰
    주동기토큰이다.

동기

적절한 지점에 동기점을 지정하고, 오류 발생시 동기점 기준으로 복구를 할 수 있다. 이런 과정을 재동기라고 한다. 동기점은 주동기점부동기점으로 나누어진다.
주동기점은 대화가 완료되는 시점에, 부동기점은 대화 도중 지정될 수 있다. 부동기점에는 복구에 필요한 백업 정보의 양을 적게 조절하여, 복구 비용을 줄인다. 그렇기에 복구가 완벽하게 되지 않을 수 있는데, 그럴때는 이전 부동기점으로 이동하며 복구가 진행된다.
이전 부동기점으로 이동할 때, 주동기점을 넘을 수는 없는데, 주동기점은 처리가 완벽하게 이루어졌다는 의미이기에 복구가 필요하지 않기 때문이다.

액티비티

액티비티는 세션 사용자들 간의 논리적 단위이다. 예를 들어, 파일 여러개를 보낼 때 각 파일은 하나의 액티비티이고 액티비티를 처리하는 과정에서 주,부동기점이 부여될 수 있다.

연결

연결 과정에서 CONNECT 요구가 발생하면, 세션 계층에서는 이를 전송 계층 프리미티브인 CONNECT 요구로 변환 하여 전송 계층을 통해 상대편 세션 사용자에게 전달한다.

다중 세션 지원 서버

임의의 서비스를 제공하는 서버 프로세스는 다수의 클라이언트 프로세스와 동시에 독립적인 세션 연결을 할 수 있다.
이런 환경은 서버가 제공하는 서비스 시간이 짧을때 유용하다. 특정 클라이언트와 세션 연결이 길어지면, 다른 클라이언트의 대기 시간이 증가하기 때문이다.

단일 세션 지원 서버

다중 세션 지원 서버의 문제점을 해결하려면 단일 세션만 지원해야한다. 이때, 여러 클라이언트를 지원하려면, 복사된 하위 서버 프로세스를 여러개 만드는 기능이 필요하다.
처음 연결시 각 클라이언트 프로세스는 서버 프로세스와 연결을 시도한다. 클라이언트가 서버 프로세스의 Well-known 포트를 통해 연결 주소를 알 수 있지만, 복사된 하위 서버 프로세스들의 포트 번호를 Well-known 포트로 지정할 수 없기 때문이다. 서버 프로세스는 하위 서버 프로세스를 실행시키고, 연결을 시도한 클라이언트와 세션 연결을 시켜준다.

이 방식의 단점은,
하위 서버 프로세스가 생성됨에 따라, 초기 서비스 환경 구축의 비용이 증가한다.
프로세스를 생성하고 연결시켜주는 시간이 길어, 서비스 시간이 짧은 환경에서는 사용하지 않는다.

텔넷,FTP 와 같은 TCP/IP 서비스는 단일 세션 연결 방식을 사용하며, 대표 서버의 주소는 Well-known 포트로 설정 되어야 한다.

표현 계층

전송 메시지에 표현된 문법내용을 각 프로세스가 해석하는 기능을 제공함으로써, 전달된 의미를 정확히 이해할 수 있도록 한다.

데이터 표현(신뢰성)

추상 문법

추상 문법 Abstract Syntax은 각 컴퓨터에서 사용하는 데이터 표현 규칙이다. 특정 의미를 정확하게 송수신하려면 추상 문법을 전송 문법으로 변환해야한다. 전송문법으로 변환되어 송신된 메시지는 수신 컴퓨터에서 그 컴퓨터에 맞는 추상 문법으로 변환된다.

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

데이터 압축(전송 속도)

대용량 데이터는 압축하여 전송하는 것이 전송 속도 면에서 유리하다. 동일한 데이텅 어떤 압축 알고리즘을 적용하느냐에 따라 압축률이 달라진다. 따라서, 데이터의 특성에 맞는 알고리즘을 사용하는 것이 중요하다.

데이터를 압축하는 유형에는 비손실 압축과 손실 압축이있다.
비손실 압축을 하면 압축,압축 해제시 원래 데이터와 동일한 데이터를 얻을 수 있다. 반면 손실 압축은 압축 해제한 데이터가 원래 데이터와 동일 하지 않다. 예를 들어, 화상,음성 정보처럼 감각적으로 느끼는 정보는 손실 범위를 조절해 압축할 수 있는데, 이는 압축 효율을 높이기 위함이다.

응용 계층

응용계층의 서비스는 매우 다양하기에, TCP/IP 기반의 인터넷 환경과 유닉스 운영체제를 중심으로 다룬다.

클라이언트 -서버 모델

하나의 서버 프로그램이 다수의 클라이언틍 서비스를 제공하는 모델은 가장 보편화된 연결 설정 방식이다. 서버가 먼저 통신 대기 상태에 있어서, 클라이언트의 요청에 응답한다. 네트워크 연결은 전송계층의 포트 연결로 구현된다.

연결 방식

클라이언트-서버 모델을 구현할때 가장 먼저 고려할 사항은 비연결형과 연결형중 어떤 방식을 사용할 것인지이다. UDP-비연결형은 속도가 빠르지만, 신뢰성이 낮다. TCP-연결형은 신뢰성이 높지만 속도가 느리다.

동시성 제어

동시성 Concurrency는 여러 동작이 동시에 진행되는 것처럼 보이는 것이다. 컴퓨터 CPU는 하나이므로 프로그램은 하나만 돌아갈 수있다. 하지만 운영체제의 시분할 방식은 여러 프로그램을 번갈아 실행하기에, 사용자에겐 동시에 진행되는 것처럼 보인다.

클라이언트-서버 환경에서 동시성은 서버 하나가 여러 클라이언트에 동시에 서비스 하는 경우를 의미하기도 한다.
다중 세션 지원 서버에서 서버는 한 클라이언트에게만 서비스를 제공하기에 다른 클라이언트에게 지연이 발생하지만, 단일 세션 지원 서버에서는 하위 서버를 통하여 클라이언트에게 서비스를 제공하기에 여러 클라이언트에게 서비스를 제공하는 동시성을 지원할 수 있다.

0개의 댓글