11장. 상위 계층
(1) 세션 계층
강의 목표
- 세션 계층의 필요성과 세션 연결의 개념을 이해한다.
세션 계층 기능
-
세션 관리 기능 (상위 계층에 제공하는 서비스)
- 세션 연결의 설정과 해제
- 세션 메시지 전송
-
동기 기능
- 통신 양단끼리 서로 동의하는 논리적인 공통 시점(동기점) 지정
-
동기점을 지정하는 이유?
- 오류 복구가 쉬워짐
- 동기점 이전 과정은 복구가 필요 없고, 동기점 이후 처리과정에 대한 복구 절차만 진행
-
대화
- 데이터 전송 과정을 의미
- 시간 경과에 따라 순차적으로 동기점을 부여하여 신뢰성 보장 기능을 단계적으로 구현 가능
- 의도적으로 일시정지하여 나중에 구현 가능
- 만나기로 약속하고 시간과 장소를 정하기 전에 통신이 끊겼다면, 만나기로 협의하는 과정부터 다시 시작하는 게 아니라 이어서 시간, 장소를 바로 정하면 됨
토큰
-
토큰의 필요성
- 통신 양단 대화를 관리하기 위한 특수 메시지
- 토큰의 보유는 해당 토큰에 부여된 특정 권리를 배타적으로 소유한다는 의미
-
토큰 종류
- 데이터 토큰: 데이터를 전송할 수 있는 권한
- 해제 토큰: 통신 양단 사이의 연결 해제를 제어하는 목적으로 사용
- 동기 토큰: 동기 처리가 필요한 시점에 사용
-
동기점
-
동기점의 부여
- 큰 파일을 작은 파일로 구분하는 과정
- 큰 파일을 전송하는 과정의 중간 중간에 동기점을 부여
- 동기점이 부여되었다는 의미는 해당 내용까지는 전송을 완료했다는 의미
- 따라서 전송 과정에 오류가 발생해도 동기점 이후 과정만 복구하면 됨
- 주동기 토큰(Major token/Activity token): 특정 대화 단위를 구분
- 부동기 토큰(Minor token): 대화 단위를 세분화해 구분
-
동기 (Synchronization)
-
재동기 (Resynchronization)
- 전송 오류가 발생했을 때 동기점을 이용한 일련의 복구 과정
- 동기점은 임의의 시점에 특정 지점에서 복구할 수 있도록 통신 양단 합의로 지정
- 세션 계층 상위에서 적절한 구간으로 나누어 동기점을 지정하는 기능과, 오류 발생 시 해당 지점으로 돌아가 복구하는 기능이 구현되어야 함
-
주/부동기점 차이
-
주동기점
- 주동기점이 설정된 곳 이전까지는 완벽히 처리했다는 의미
- 따라서 주동기점 이전 복구는 필요하지 않음
-
부동기점
- 복구에 필요한 백업 정보가 상대적으로 적음
- 오류 복구가 완벽히 이루어지지 않을 수 있음
- 이전 부동기점에서 복구가 불가능하면 직전 부동기점으로 이동하는 과정을 반복
-
-
액티비티
- 논리적으로 설정하는 단위 (내용이 상호독립적)
- 독립적인 여러 파일을 구분하는 목적으로 사용
- 액티비티 설정은 주동기점 설정과 동일한 효과
세션 연결
-
다중 세션을 지원하는 서버
- 서버 프로세스 하나가 다수 클라이언트를 동시에 지원
- 각 클라이언트가 서버에 요청하면 짧은 시간 내 응답이 이루어지는 서비스에서 유리
- 서비스 시간이 길어지면 각 클라이언트가 대기해야하는 시간이 무한정 증가할 수 있음
-
단일 세션을 지원하는 서버
- 서버 프로세스 하나가 클라이언트 하나만 지원
- 각 클라이언트는 다른 클라이언트와 독립적으로 서비스를 받을 수 있음
-
대표 서버 역할
- 클라이언트가 보내는 연결 요청 처리
- 요청이 들어왔을 때 하위 서버 프로세스 생성
- 대표 서버는 전용 프로세스와 묶어주기만 하고, 실제 서비스는 프로세스에서 이루어짐
- 대표 서버는 반드시 Well-known 포트 상에서 준비하고 있어야 함
-
단점
- 클라이언트 개별 요구마다 프로세스를 생성하므로 초기 서비스 구축에 따른 오버헤드 증가
- 프로세스를 새로 생성하고 실행 상태로 만들어주는 데에 시간 소요