본문 바로가기
컴퓨터 네트워크

컴퓨터 네트워크 30장 - 세션 계층 -

by ChocoPeanut 2017. 5. 5.

컴퓨터 네트워크 30

- 세션 계층 -

 

앞선 장들에서 하위 계층들의 기능에 대해서 살펴보았다. 일반적으로 하위 계층들은 운영체제 내부에서 구현되어 사용된다. 이에 비해 상위 세 계층은 사용자 프로그램을 구현하는데 사용이 된다. 이에 대해 살펴볼 것이다.


세션 계층상위 계층에 제공하는 서비스로 세션 연결 설정과 해제, 세션 메시지 전송을 통해 동작한다. 세션 계층은 크게 동기 기능대화의 기능을 수행한다. 통신 양단끼리 서로 동의하는 논리적인 공통 시점인 동기점을 만들어 메시지가 제대로 처리가 되고 있는지를 파악하게 된다. 동기점은 오류 복구를 위하여 필수적으로 사용되는데 동기점 설정 이전까지는 서로 처리가 완료되었음을 합의하는 것을 의미한다. 동기점 이전 과정은 복구가 필요 없고 동기점 이후 처리 과정에 대한 복구 절차가 진행된다. 대화는 데이터 전송 과정을 의미한다. 시간 경과에 따른 순차적으로 동기점을 부여하여 신뢰성 보장 기능을 단계적으로 구현할 수 있게 된다. 의도적으로 일시 정지하여 나중에 이어서 작업을 하는 것이 가능하다.


세션 계층은 두 응용 프로세스의 대화를 관리하려고 하는 토큰이라는 특수 메시지를 사용한다. 토큰의 보유는 해당 토큰에 부여된 특정 권리를 배타적으로 소유한다는 의미를 가진다. 토큰의 종류는 데이터 토큰, 해제 토큰, 동기 토큰이 있는데 데이터 토큰은 데이터를 전송할 수 있는 권한을 의미하고 해제 토큰은 통신 양단 사이의 연결 해제를 제어하는 목적으로 사용한다. 동기 토큰은 동기 처리가 필요한 시점에 사용한다.


큰 파일 전체를 하나의 단위로 전송하는 것보다 논리적으로 작은 단위로 나누어서 전송하는 것이 오류 발생 시 유리하다. 만약 오류가 발생하면 큰 파일 전체를 한 단위로 보낼 경우 다시 큰 단위를 보내야하지만 작은 단위로 나눌 경우 오류가 난 부분부터 다시 보내게 되면 되기 때문이다. 따라서 세션 계층은 동기점을 사용한다. 큰 파일을 작은 파일로 구분하여 중간 중간에 동기점을 부여한다. 동기점이 부여되었다는 의미는 해당 내용까지는 전송이 완료되었다는 것을 의미한다. 따라서 전송 과정에 오류가 발생해도 동기점 이후의 과정만 복구를 하면 된다. 토큰은 특정 대화 단위를 구분하는 주동기 토큰과 대화 내에서 세분화시켜 구분하는 부동기 토큰으로 나뉜다.



전송 오류가 발생했을 때 동기점을 이용하여 복구하는 과정을 재동기라고 한다. 동기점은 임의의 시점에 특정 지점에서 복구할 수 있도록 통신 양단간의 합의로 지정된다. 세션 계층 상위에서 적절한 구간으로 나누어 동기점을 지정하는 기능과 오류 발생 시 해당 지점으로 돌아가 복구하는 기능이 구현되어야 한다.

주동기점과 부동기점을 구분하는 이유가 있다. 주동기점은 설정된 곳이 완벽히 처리되었다는 것을 의미한다. 따라서 주동기점 이전의 복구 과정은 필요하지 않다. 하지만 부동기점은 복구에 필요한 백업 정보가 상대적으로 적어 복구에 필요한 부담은 최소화가 되지만 오류 복구가 완벽히 이루어지지 않을 수 있다. 이전 부동기점에서 복구가 불가능하면 직전 부동기점으로 이동하는 과정을 반복한다.


앞에서 토큰의 종류를 이야기할 때 액티비티 토큰에 대해서는 이야기하지 않았다. 왜냐하면 액티비티 토큰은 동기의 기능을 수행할 때 사용되기 때문에 설명을 뒤로 미루었다. 액티비티는 논리적으로 설정하는 단위로 독립적인 여러 파일을 구분하는 목적으로 사용된다. 액티비티를 설정하는 것은 주동기점의 설정과 동일한 효과를 보일 수 있다.


세션을 연결할 때 서버가 다중 세션 연결을 지원하는 경우와 단일 세션 연결을 지원하는 경우로 나눌 수 있다. 다중 세션 연결을 지원하는 경우는 하나의 서버 프로세스가 다수의 클라이언트를 동시에 지원하여 서비스 시간이 짧을 경우 유리하다. 하지만 서비스 시간이 길어지면 다른 클라이언트의 대기 시간이 무한정 증가하게 되어 처리하기 힘들어진다.



단일 세션을 지원하는 서버는 하나의 서버 프로세스가 하나의 클라이언트만 지원을 하는 형태이다. 하지만 대표 서버를 두어 클라이언트의 연결 요청을 처리한다. 대표 서버는 하위 서버 프로세스를 생성하여 각각의 클라이언트에 연결이 되는 형태인 것이다. 클라이언트 개별 요구마다 하나의 프로세스를 생성해야하므로 초기 서비스 환경 구축에 따른 오버헤드가 증가한다. 하지만 각 클라이언트가 다른 클라이언트와 독립적으로 서비스를 받을 수 있는 장점이 있다.




출처 - 데이터 통신과 컴퓨터 네트워크