인터넷에서 OSI 7계층 모델은 TCP/IP를 기반으로 구현되고, 운영체제의 일부로 구현되는 계층 4 프로토콜은 TCP와 UDP를 사용한다. 네트워크 응용 프로그램에서는 시스템 콜을 사용해 TCP와 UDP의 기능을 활용한다.
상위 세 계층인 세션 계층, 표현 계층, 응용 계층은 사용자 프로그램으로 구현되는데, 일반적으로 세 계층의 기능을 하나의 프로그램으로 묶어 구현한다.
ex) 텔넷, FTP, 전자메일 등의 네트워크 응용 프로그램은 상위 세 계층의 기능을 함께하는 단일 프로그램이다. 특히, 세션 계층과 표현 계층의 기능은 프로그램에 구현되지 않거나, 아주 단순화 되는 경우가 많다.
세션 계층
응용 환경에서 전송 계층이 제공하는 서비스를 손쉽게 이용하게 하려면 사용자의 논리적 관점을 고려하여 단순한 사용자 인터페이스를 제공해야 한다. 세션 계층은 이러한 필요에 따라 도입되었으나, 기능이 제한적이라 다른 계층보다 상대적으로 간단한 계층에 속한다.
세션 계층의 기능
- 세션 계층 프로토콜이 상위 계층에 제공하는 기능은 세션 연결의 설정과 해제, 세션 메시지 전송 등이다. 세션 연결은 응용 환경에서 두 응용 프로세스 간의 세션을 연결하기 위해 만든다.
- 하나의 응용 프로세스는 동시에 여러 세션 프로세스와 세션 연결을 생성할 수 있으며, 세션 연결이 설정되면 양쪽 프로세스가 세션 메시지를 송수신한다. 세션 사용을 종료하려면 세션 연결 해제 과정을 거쳐야 한다.
- 세션 계층에서 제공하는 가장 중요한 기능은 동기(Synchronization)문제를 처리하는 것이다. 동기 기능은 통신 양단에서 서로 동의하는 논리적인 공통 처리 지점, 즉 동기점을 지정하기 위해 사용한다.
- 동기점을 설정하는 이유는 메시지 전송 과정에서 발생하는 오류를 복구하기 위해서 이다. 즉, 동기점이 설정된 시점 이전까지는 통신 양단이 서로 완벽하게 처리했음을 합의했다는 의미이다. 따라서 오류가 발생했을 때 동기점 이전 과정은 복구할 필요가 없다.
- 메시지 전송 과정을 의미하는 대화 단계에서 오류가 발생하면, 이전에 설정한 동기점 까지는 복구할 수 있다.
- 시간 경과에 따라 순차적으로 동기점을 부여해 신뢰성 보장 기능을 단계적으로 구현할 수 있다.
- 현재 진행중인 대화를 의도적으로 정지시키고 동기점을 설정하여, 나중에 해당 지점에서 작업을 이어서 진행할 수 있다.
토큰
세션 계층은 두 응용 프로세스의 대화를 관리하려고 토큰이라는 특수 메시지를 사용한다. 토큰을 보유한다는 것은 해당 토큰에 부여된 특정한 권리를 배타적으로 소유한다는 의미이다.
토큰 종류
세션 계층에서 제공하는 토큰은 크게 네 가지로 데이터 토큰, 해제 토큰, 동기 토큰, 액티비티 토큰이 있다.
- 데이터 토큰
- 데이터 토큰은 데이터를 전송할 수 있는 권리를 제공한다. 따라서 세션 사용자가 데이터를 전송하려면 반드시 데이터 토큰을 먼저 획득해야 한다. 데이터 토큰을 하나만 사용하면 통신 양단 중 한쪽에서만 데이터를 전송할 수 있따. 그러므로 데이터 토큰을 하나만 사용하면 통신 양단 중 한쪽에서만 데이터를 전송할 수 있다. 그러므로 데이터 토큰을 응용 프로그램 간의 반이중 전송을 지원하는 목적으로도 이용할 수 있다.
- 해제 토큰
- 해제 토큰은 통신 양단 간의 연결 해제 과정을 제어하기 위해 사용한다. 임의의 사용자가 연결을 해제하려면 해제 토큰을 획득해야 한다.
- 동기 토큰
- 동기 토큰은 세션 연결을 사용하는 과정에서 동기 처리가 필요한 지점에 사용한다.
토큰과 동기점
- 큰 파일을 통째로 전송하는 것보다 작은 단위로 나누어 전송하는 것이 전송 오류에 쉽게 대처할 수 있다.
- 큰 파일 전체를 하나의 단위로 전송하면 오류가 발생하였을 때 전체 파일을 처음부터 다시 전송해야 한다. 그러나 논리적으로 작은 단위로 나누어 전송하면 전송 오류가 발생할 부분만 재전송 하면 된다.
- 큰 파일을 작은 단위로 나누는 과정은 동기점(Synchronization Point)을 부여하는 과정이다.
- 파일을 전송하는 중간 중간에 동기점을 부여함으로서, 송수신 프로세스가 해당 위치까지는 데이터 전송이 완료되었다는 것에 합의할 수 있다. 따라서 전송 과정에서 오류가 발생해도 전체 파일을 재전송하지 않고, 가장 가까운 지점에 설정한 동기점 이후의 데이터만 복구하면 된다.
- 동기점을 부여하기 위한 동기 토큰은 크게 두가지이다.
- 특정 대화 단위를 구분하는 주동기 토큰(Major Token or Activity Token)이다.
- 대화 단위 내에서 다시 작은 부분으로 나누어 처리하는 부동기 토큰(Minor Token)이다.
동기
세션 계층에서 제공하는 주요 기능인 동기(Synchronization)는 세션 연결을 사용해 데이터를 주고 받다가 오류가 발생했을 때, 이를 효과적으로 복구할 수 있게 해준다.
재동기 기능
- 동기점은 데이터를 전송할 때 특정 지점에서 복구할 수 있도록 통신 양단 간의 합의로 지정된다.
- 세션 계층의 상위 계층에는 적절한 구간으로 나뉜 지점에 동기점을 부여하고, 오류가 발생하면 해당 지점으로 돌아가 복구하는 기능이 구현되어야 한다. 이때 동기점을 이용한 일련의 복구 과정을 재동기(Resynchronization)이라 한다.
동기점을 주동기점과 부동기점으로 구분하는 이유
- 부동기점에서는 복구에 필요한 백업 정보의 처리량을 주동기점보다 상대적으로 적게 하여, 복구에 소요되는 부담을 최소화한다. 그러나 부동기점에 저장된 백업 정보로는 오류 복구가 완벽하게 이루어지지 않을 가능성이 있다. 이전 부동기점에서 복구가 불가능하면 바로 앞의 부동기점으로 이동하는 과정을 반복하면서 복구 과정이 진행된다. 이런 부동기점의 복구 절차가 진행되어도 복구 절차는 완전하게 이루어지지 않을 수 있다.
- 재동기 처리는 앞서 설명한 것처럼 직전의 부동기점으로 이동하는 과정을 반복하면서 진행되는데, 어떠한 경우도 주동기점의 경계를 넘어 되돌아가지 않는다. 왜냐하면 세션 계층에서 주동기점이 부여된다는 것은 해당 지점까지 데이터 전송이 완벽하게 이루어졌다는 뜻이므로, 주동기점 이전의 복구 과정은 불필요하기 떄문이다.
- 재동기를 할 때 부동기점에서 복구가 이루어지지 않으면 여러 부동기점을 순차적으로 후퇴하면서 복구 기능을 수행한다. 이는 부동기점에 보관되는 정보가 논리적으로 상호 배타적인 내용을 포함하고 있음을 의미한다.
액티비티 기능
동기의 또 다른 기능으로 액티비티가 있다. 액티비티는 세션 프로세스 사이에 논리적으로 설정되는 단위이며, 내용이 상호 독립적이다.
ex) 파일 여러 개를 전송할 때 각 파일은 하나의 액티비티로 처리되며, 처리 과정에서 주동기점과 부동기점이 부여된다. 액티비티 단위의 시작과 끝의 표시는 주동기점의 설정과 동일한 효과를 나타낸다.
세션 연결
세션 계층에서 제공하는 연결은 상위 계층의 응용 프로세스가 다른 응용 프로세스에 세션을 설정하기 위해 사용한다. 즉, 초기 연결 과정에서 CONNECT 요구가 발생하면 세션 계층은 이를 전송 계층 프리미티브인 CONNECT 요구로 변환하여 전송 계층을 통해 상대편 세션을 사용자에게 전달한다.
다중 세션 연결을 지원하는 서버
- 임의의 네트워크 서비스를 제공하는 서버 프로세스가 다수의 클라이언트 프로세스에 동시에 여러 세션 연결을 설정할 수 있다. 클라이언트 프로세스와 설정된 세션은 논리적으로 연관이 없는 서로 독립적인 연결이다.
- 다중 세션을 지원하는 클라이언트-서버 환경은 서버가 제공하는 서비스 시간이 짧은 응용 환경에서 유용하다.
- 만일 클라이언트와 서버 사이의 서비스 이용 시간이 길어지면 특정 클라이언트와 세션 연결이 길게 유지되므로 다른 클라이언트의 대기 시간이 무한정 증가된다는 단점이 있다.
단일 세션 연결을 지원하는 서버
- 다중 세션 연결 방의 문제를 해결하려면 서버 프로세스 하나가 클라이언트 프로세스 하나와 세션 연결을 설정해 통신해야 한다. 이런 경우에 여러 클라이언트를 동시에 지원하려면 복사된 하위 서버 프로세스를 여러 개 만들어야 한다.
- 작은 원으로 그려진 하위 서버 프로세스는 하나의 세션 연결을 사용해 클라이언트와 통신한다. 클라이언트 프로세스는 하위 서버 프로세스와 연결하기 위해 최초의 연결 설정은 대표 서버에 시도한다. 이는 기술적으로 대표 서버의 포트 주소가 Well-Known 포트로 할당되므로, 클라이언트가 연결 주소를 알기 때문이다. 하위 서버는 처리 과정에서 만들어지므로 포트 번호를 Well-Known 포트로 지정하기 어렵다. 대표 서버는 하위 서버 프로세스를 새로 실행시키고, 연결을 요청한 클라이언트와 세션을 연결해준다.
- 이 방식의 단점은 클라이언트의 개별 요구마다 하위 프로세스를 생성하기 때문에 초기 서비스 환경 구축에 따른 오버헤드가 증가한다는 점이다. 즉, 프로세스를 새로 생성하고 실행 상태로 만들어주는 데 걸리는 시간이 길어 서비스 시간이 짧은 응용 환경에서는 사용하지 않는다. 대신 클라이언트가 서비스를 받으려고 무한정 기다리는 현상은 발생하지 않는다.
- 일반적으로 텔넷, FTP등과 같이 대부분 TCP.IP 서비스는 단일 세션 연결 방식을 사용하며, 대표 서버의 주소는 Well-Known 포트로 설정된다.
Reference
쉽게 배우는 데이터 통신과 컴퓨터 네트워크
https://soso-hyeon.tistory.com/109
[쉽게 배우는 데이터 통신과 네트워크] CH11. 상위 계층의 이해
01 상위 계층 소개 02 세션 계층응용 환경에서 전송 계층이 제공하는 서비스를 손쉽게 이용하려면 사용자의 논리적 관점을 고려하여 단순한 사용자 인터페이스를 제공해야 한다. 1 세션 계층의
soso-hyeon.tistory.com
'CS > Network' 카테고리의 다른 글
[Chapter 11] 상위 계층의 이해(응용 계층) (0) | 2025.02.17 |
---|---|
[Chapter 11] 상위 계층의 이해(표현 계층) (0) | 2025.02.17 |
[Chapter 10] UDP 프로토콜(OSI TP 프로토콜) (0) | 2025.02.17 |
[Chapter 10] UDP 프로토콜(RTP 프로토콜) (0) | 2025.02.17 |
[Chapter 10] UDP 프로토콜(UDP 헤더 구조) (0) | 2025.02.17 |