OSI 모델 - 세션 계층

아트·2024년 9월 26일

Computer Science

목록 보기
8/14

OSI 7 계층 모델 요약

OSI(Open Systems Interconnection) 7 계층 모델은 네트워크 통신을 7단계로 나누어 설명하는 모델입니다. 이 모델은 서로 다른 시스템이나 네트워크 장치들이 데이터를 주고받을 때 발생하는 복잡한 과정을 단계별로 나누어 이해하기 쉽게 만들었습니다. 각 계층은 고유한 역할을 하며, 상호 독립적으로 작동합니다.

OSI 7 계층의 구성

  1. 물리 계층(Physical Layer): 전기 신호, 빛, 무선 신호 등 물리적 매체를 통해 데이터가 전송되는 방식과 관련된 계층입니다.
  2. 데이터 링크 계층(Data Link Layer): 물리적 매체에서 데이터를 어떻게 오류 없이 전달할지를 결정합니다. 이 계층에서는 MAC 주소를 사용하여 데이터를 전송합니다.
  3. 네트워크 계층(Network Layer): 데이터를 목적지까지 전달하는 경로를 찾고, IP 주소와 같은 논리적 주소를 이용해 데이터를 관리합니다.
  4. 전송 계층(Transport Layer): 데이터 전송의 신뢰성을 보장하고, 패킷의 오류 수정, 흐름 제어 등의 기능을 제공합니다. TCP와 UDP가 전송 계층에서 사용하는 대표적인 프로토콜입니다.
  5. 세션 계층(Session Layer): 통신 세션을 설정하고 관리하며, 데이터 전송을 동기화하는 역할을 합니다.
  6. 표현 계층(Presentation Layer): 데이터를 사용자나 애플리케이션이 이해할 수 있는 형태로 변환합니다. 데이터 압축, 인코딩, 암호화 등의 역할을 담당합니다.
  7. 응용 계층(Application Layer): 네트워크 서비스와 애플리케이션 간의 상호작용을 지원하는 계층입니다. 이메일, 웹 브라우징 등 사용자가 직접 접하는 서비스가 이 계층에서 동작합니다.

세션 계층(Session Layer)

정의

세션 계층(Session Layer)은 통신 세션을 설정하고, 유지 및 관리하며, 통신을 종료하는 과정을 담당하는 계층입니다. 이 계층은 두 응용 프로그램 간의 대화를 관리하여 데이터를 주고받는 세션을 동기화하고, 오류가 발생했을 때 세션을 복구하는 역할을 합니다.

담당하는 기능

  1. 세션 설정: 통신하려는 장치 간의 세션을 설정하고 인증 과정을 처리합니다.
  2. 세션 유지: 세션이 끊기지 않고 지속적으로 유지되도록 관리하며, 데이터 흐름의 동기화를 담당합니다.
  3. 세션 복구: 오류가 발생하거나 네트워크 장애로 인해 세션이 중단된 경우, 복구하여 데이터를 다시 전송할 수 있도록 합니다.
  4. 통신 종료: 통신이 완료된 후 세션을 정상적으로 종료합니다.

원리

세션 계층은 상위 계층과 하위 계층의 중간에서, 응용 계층에서 요청된 데이터를 전송 계층을 통해 전달하는 동안 세션의 상태를 관리합니다. 세션 계층은 응용 프로그램 간의 연결을 유지하고, 데이터 전송이 올바르게 동기화되도록 보장합니다. 이를 위해 세션 계층은 세션 식별자(Session Identifier)를 이용하여 각 통신의 고유 세션을 구분하고 관리합니다.

활용 사례

  • 원격 데스크톱: 원격 데스크톱 연결 시 세션을 유지하고 관리하여, 사용자가 원격으로 작업하는 동안 끊김 없이 연결을 유지합니다.
  • 파일 전송: 대용량 파일을 전송하는 경우, 세션 계층은 전송 도중 연결이 끊어지지 않도록 관리하며, 전송이 완료될 때까지 세션을 유지합니다.
  • 비디오 스트리밍: 스트리밍 세션을 관리하여, 영상이 중단되지 않고 원활하게 재생될 수 있도록 보장합니다.

관련 장비

세션 계층은 소프트웨어적으로 동작하는 계층이기 때문에, 네트워크 장비보다는 운영체제나 응용 프로그램에서 주로 관리됩니다. 다만, 세션을 관리하기 위한 방화벽이나 VPN 장비 등이 세션 계층과 관련이 있을 수 있습니다.

세션 계층 관련 프로토콜

RPC (Remote Procedure Call)

RPC(Remote Procedure Call)는 한 시스템에서 실행 중인 프로그램이 네트워크를 통해 다른 시스템의 프로그램을 호출할 수 있게 해주는 프로토콜입니다. 네트워크 상에서 원격 프로시저를 호출하는 것처럼 보이지만, 실제로는 호출자가 네트워크를 통해 원격 서버에서 함수를 실행하는 방식으로 작동합니다.

개발에서의 활용

  • RPC는 분산 시스템을 구축할 때 많이 사용됩니다. 대표적으로 마이크로서비스 아키텍처에서 서비스 간의 통신에 사용되며, 개발자가 네트워크를 직접 처리할 필요 없이 함수 호출만으로 작업을 수행할 수 있습니다.
  • RPC 호출 시 클라이언트는 마치 로컬 함수를 호출하는 것처럼 간단하게 사용할 수 있으며, 실제 네트워크 레이어에서 일어나는 통신은 RPC 프레임워크가 자동으로 처리합니다.

관련 기술

  • gRPC: Google에서 개발한 고성능 RPC 프레임워크로, HTTP/2를 기반으로 하며, Protobuf를 사용하여 데이터를 직렬화합니다. gRPC는 언어 간의 상호 운용성을 지원하며, 대규모 시스템에서 높은 성능과 낮은 대기 시간을 제공합니다.
  • XML-RPC, JSON-RPC: 경량의 RPC 프로토콜로 각각 XML과 JSON을 데이터 직렬화 형식으로 사용합니다. REST API와 유사하지만, 원격 함수 호출에 집중되어 있습니다.

예시

const grpc = require('@grpc/grpc-js');
const protoLoader = require('@grpc/proto-loader');

const packageDefinition = protoLoader.loadSync('example.proto', {});
const exampleProto = grpc.loadPackageDefinition(packageDefinition).example;

const client = new exampleProto.ExampleService('localhost:50051', grpc.credentials.createInsecure());

client.someRemoteFunction({ message: 'Hello' }, (error, response) => {
  if (!error) {
    console.log('Response:', response);
  }
});

NetBIOS (Network Basic Input/Output System)

NetBIOS는 로컬 네트워크 상에서 컴퓨터 간의 통신 세션을 설정하고 관리하는 프로토콜입니다. 초기에는 IBM의 PC 네트워크에서 사용되었으며, 현재는 주로 LAN(Local Area Network)에서 사용됩니다. NetBIOS는 세션 계층에서 데이터를 주고받는 과정에서 세션의 설정, 유지 및 종료를 담당합니다.

개발에서의 활용

Windows 환경에서 파일 공유나 프린터 공유 시 주로 사용되며, 로컬 네트워크 내에서 컴퓨터 간에 세션을 설정하고 데이터를 주고받는 데 널리 쓰입니다.
SMB(Server Message Block) 프로토콜과 함께 사용되어 파일 시스템에서의 데이터 공유 및 접근을 제공합니다.

관련 기술

SMB(Server Message Block): NetBIOS와 함께 사용되며, 파일이나 장치의 공유 및 원격 리소스 접근을 위해 사용되는 프로토콜입니다. NetBIOS는 세션 계층에서의 통신을 설정하는 역할을, SMB는 응용 계층에서 데이터 전송을 처리합니다.

# NetBIOS 세션을 확인하는 명령어
nbtstat -a <remote-host>

SIP (Session Initiation Protocol)

SIP(Session Initiation Protocol)는 음성 통화, 화상 통화 등 멀티미디어 통신을 위한 세션을 설정하고 관리하는 프로토콜입니다. 전화 통화와 같은 세션을 설정하고 종료하는 역할을 하며, IP 기반 네트워크에서 VoIP(Voice over IP) 및 화상 회의를 지원합니다.

개발에서의 활용

SIP는 음성 및 영상 데이터를 전달하기 위한 세션을 설정하는 데 사용되며, 주로 VoIP 서비스에서 통화 세션을 제어하는 데 사용됩니다.
SIP는 HTTP와 비슷한 구조를 가지고 있어, 요청과 응답을 통해 세션을 제어할 수 있으며, 이 과정에서 세션 설정, 수정, 종료 등의 작업을 처리합니다.
SIP는 신호 처리와 멀티미디어 스트리밍 간의 분리를 허용하기 때문에, 개발자는 미디어 스트리밍(예: RTP)과는 별도로 SIP를 사용하여 세션 관리를 수행할 수 있습니다.

관련 기술

RTP(Real-time Transport Protocol): 실시간 데이터를 전송하는 프로토콜로, SIP에서 설정한 세션을 통해 오디오 및 비디오 스트림을 전달하는 역할을 합니다.
SDP(Session Description Protocol): 세션에서 어떤 미디어 형식이 사용될지 설명하는 프로토콜로, SIP 메시지에 포함되어 세션 설정 시 사용됩니다.

const JsSIP = require('jssip');

// SIP UA 설정
const socket = new JsSIP.WebSocketInterface('wss://sip-server-address');
const configuration = {
  sockets: [socket],
  uri: 'sip:user@sip-server.com',
  password: 'password'
};

const ua = new JsSIP.UA(configuration);

// SIP 통화 시작
ua.start();
ua.call('sip:destination@sip-server.com', {
  mediaConstraints: { audio: true, video: false }
});

레이어의 주요 이슈 및 해결 방법

  • 세션 타임아웃: 네트워크 연결이 오래 지속되지 않으면 세션이 자동으로 종료될 수 있습니다. 이를 해결하기 위해 일정 시간마다 Keep-Alive 신호를 보내 세션을 유지하는 방식이 사용됩니다.
  • 세션 복구 실패: 통신 도중 네트워크 장애가 발생하여 세션 복구에 실패할 경우, 데이터를 손실할 수 있습니다. 이를 방지하기 위해 세션 복구 메커니즘을 개선하거나 전송 계층에서 재전송 요청을 처리하도록 설계해야 합니다.

0개의 댓글