All Articles

컴퓨터 네트워크 강의 - 11장. 상위 계층 (1) 세션 계층

11장. 상위 계층

(1) 세션 계층

강의 목표

  • 세션 계층의 필요성과 세션 연결의 개념을 이해한다.

세션 계층 기능

  • 세션 관리 기능 (상위 계층에 제공하는 서비스)

    • 세션 연결의 설정과 해제
    • 세션 메시지 전송
  • 동기 기능

    • 통신 양단끼리 서로 동의하는 논리적인 공통 시점(동기점) 지정
    • 동기점을 지정하는 이유?

      • 오류 복구가 쉬워짐
      • 동기점 이전 과정은 복구가 필요 없고, 동기점 이후 처리과정에 대한 복구 절차만 진행
      • 동기점 이후 오류 복구 과정
  • 대화

    • 데이터 전송 과정을 의미
    • 시간 경과에 따라 순차적으로 동기점을 부여하여 신뢰성 보장 기능을 단계적으로 구현 가능
    • 의도적으로 일시정지하여 나중에 구현 가능
    • 만나기로 약속하고 시간과 장소를 정하기 전에 통신이 끊겼다면, 만나기로 협의하는 과정부터 다시 시작하는 게 아니라 이어서 시간, 장소를 바로 정하면 됨

토큰

  • 토큰의 필요성

    • 통신 양단 대화를 관리하기 위한 특수 메시지
    • 토큰의 보유는 해당 토큰에 부여된 특정 권리를 배타적으로 소유한다는 의미
  • 토큰 종류

    • 데이터 토큰: 데이터를 전송할 수 있는 권한
    • 해제 토큰: 통신 양단 사이의 연결 해제를 제어하는 목적으로 사용
    • 동기 토큰: 동기 처리가 필요한 시점에 사용
  • 동기점

    • 동기점의 부여

      • 큰 파일을 작은 파일로 구분하는 과정
      • 큰 파일을 전송하는 과정의 중간 중간에 동기점을 부여
      • 동기점이 부여되었다는 의미는 해당 내용까지는 전송을 완료했다는 의미
      • 따라서 전송 과정에 오류가 발생해도 동기점 이후 과정만 복구하면 됨
    • 주동기 토큰(Major token/Activity token): 특정 대화 단위를 구분
    • 부동기 토큰(Minor token): 대화 단위를 세분화해 구분

동기 (Synchronization)

  • 재동기 (Resynchronization)

    • 전송 오류가 발생했을 때 동기점을 이용한 일련의 복구 과정
    • 동기점은 임의의 시점에 특정 지점에서 복구할 수 있도록 통신 양단 합의로 지정
    • 세션 계층 상위에서 적절한 구간으로 나누어 동기점을 지정하는 기능과, 오류 발생 시 해당 지점으로 돌아가 복구하는 기능이 구현되어야 함
    • 동기점 역할
  • 주/부동기점 차이

    • 주동기점

      • 주동기점이 설정된 곳 이전까지는 완벽히 처리했다는 의미
      • 따라서 주동기점 이전 복구는 필요하지 않음
    • 부동기점

      • 복구에 필요한 백업 정보가 상대적으로 적음
      • 오류 복구가 완벽히 이루어지지 않을 수 있음
      • 이전 부동기점에서 복구가 불가능하면 직전 부동기점으로 이동하는 과정을 반복
  • 액티비티

    • 논리적으로 설정하는 단위 (내용이 상호독립적)
    • 독립적인 여러 파일을 구분하는 목적으로 사용
    • 액티비티 설정은 주동기점 설정과 동일한 효과

세션 연결

  • 다중 세션을 지원하는 서버 다중 세션을 지원하는 서버

    • 서버 프로세스 하나가 다수 클라이언트를 동시에 지원
    • 각 클라이언트가 서버에 요청하면 짧은 시간 내 응답이 이루어지는 서비스에서 유리
    • 서비스 시간이 길어지면 각 클라이언트가 대기해야하는 시간이 무한정 증가할 수 있음
  • 단일 세션을 지원하는 서버 단일 세션을 지원하는 서버

    • 서버 프로세스 하나가 클라이언트 하나만 지원
    • 각 클라이언트는 다른 클라이언트와 독립적으로 서비스를 받을 수 있음
    • 대표 서버 역할

      • 클라이언트가 보내는 연결 요청 처리
      • 요청이 들어왔을 때 하위 서버 프로세스 생성
      • 대표 서버는 전용 프로세스와 묶어주기만 하고, 실제 서비스는 프로세스에서 이루어짐
      • 대표 서버는 반드시 Well-known 포트 상에서 준비하고 있어야 함
    • 단점

      • 클라이언트 개별 요구마다 프로세스를 생성하므로 초기 서비스 구축에 따른 오버헤드 증가
      • 프로세스를 새로 생성하고 실행 상태로 만들어주는 데에 시간 소요