서비스 프리미티브란 무엇인가?
서비스(Service)란 사용자가 해당 서비스에 접근하기 위해 호출할 수 있는 프리미티브(primitive), 즉 연산(operation)들의 집합을 의미합니다. 선택된 프리미티브는 피어 노드(peer node)가 수행한 동작을 서비스에 알려주는 역할을 합니다.
연결 설정 과정의 예
- 발신 노드가 연결 설정을 원할 경우 CONNECT.request를 전송합니다.
- Request – 노드가 어떤 작업을 수행하거나 패킷을 전송하고자 할 때 사용됩니다.
- 수신 측이 요청을 받으면 CONNECT.indication으로 통보받습니다.
- Indication – 상대 노드가 자신과의 연결 설정을 원한다는 사실을 알려주는 것입니다.
- CONNECT.response는 제안된 연결을 수락할지 거부할지를 알려주는 프리미티브입니다.
- 최초 CONNECT.request를 보낸 노드는 CONNECT.confirm 프리미티브를 통해 처리 결과를 확인합니다.
서비스 프리미티브의 유형
일반적으로 서비스 프리미티브는 다음과 같이 네 가지 클래스로 나뉩니다.
- Request(요청) – 서비스 노드가 인접 계층에 특정 서비스를 요청하며, 요청 내용을 명시하는 매개변수를 함께 전달합니다.
- Indication(통보) – 다른 서비스 노드 또는 수신 노드가 인접 서비스 노드에 의해 어떤 절차가 호출되었음을 통보받습니다.
- Response(응답) – 수신 서비스 노드가 해당 절차를 확인하거나 완료합니다.
- Confirm(확인) – 서비스 노드들이 연결 허용 여부에 대한 승인을 주고받습니다.
프리미티브별 상세 설명
| 프리미티브 | 설명 |
|---|---|
| Indication | 노드에서 발생한 이벤트에 대한 정보를 전달 예시 – 수신자가 방금 연결 요청을 받았을 경우 |
| Request | 노드가 서비스를 요청 예시 – 원격 컴퓨터와의 연결을 요청할 경우 |
| Response | 노드가 이벤트에 대해 응답 예시 – 수신자가 연결 허가를 보낼 경우 |
| Confirm | 노드가 자신의 요청에 대한 응답을 확인 예시 – 송신자로부터 데이터를 받은 후 수신자가 확인 응답을 보내는 경우 |
서비스 프리미티브의 매개변수
프리미티브의 매개변수에는 CONNECT, DATA, DISCONNECT가 있으며, 각각 연결 설정, 데이터 전송, 연결 해제에 사용됩니다.
일반적으로 서비스는 확인형(confirmed)과 비확인형(unconfirmed)으로 구분됩니다.
- 확인형 서비스(Confirmed service) – 연결 지향 서비스를 의미합니다.
- 비확인형 서비스(Unconfirmed service) – 비연결형 서비스를 의미합니다.
연결 지향 서비스(Connection-Oriented Service)
연결 지향 서비스에서 사용되는 서비스 프리미티브는 다음과 같습니다.
- CONNECT.request: 연결 설정을 요청합니다.
- CONNECT.indication: 착신자에게 신호를 전달합니다(전화 벨소리에 해당).
- CONNECT.response: 호출을 수락하거나 거절합니다.
- CONNECT.confirm: 발신자에게 호출 수락 여부를 알려줍니다.
- DATA.request: 데이터 전송을 요청합니다.
- DATA.indication: 데이터 도착을 알립니다.
- DISCONNECT.request: 연결 해제를 요청합니다.
- DISCONNECT.indication: 피어에게 해제 요청을 통보합니다.
- 예시: 현대의 전화 서비스 및 인터넷 서비스
비연결형 서비스(Connectionless Service)
비연결형 서비스에서 사용되는 서비스 프리미티브는 다음과 같습니다.
- SENDING.data – 송신자가 단순히 데이터를 전송합니다(일반 우편 서비스에 해당).
- REPORT.confirm – 데이터가 목적지에 도착했음을 보고합니다(등기 우편에 해당).