K 개발자

계층 구조의 개념 본문

OS/네트워크

계층 구조의 개념

ddingz 2021. 4. 28. 00:16

계층적 모듈 구조

일반적으로 복잡하고 큰 시스템의 기능은 특정 단위의 모듈로 나누어 설계한다.
모듈은 독립적으로 동작하면서도 상호 유기적으로 통합될 수 있어야 한다.
그러므로 모듈 사이에는 적절한 인터페이스가 필요하다.

계층 구조

분할된 모듈들은 협력 관계를 유지하면서 유기적으로 동작한다.
대부분의 모듈 구조에서는 특정 모듈이 다른 모듈에 서비스를 제공하는 형식의 계층 구조를 이룬다.
네트워크에서도 독립적인 고유 기능을 수행하는 모듈들이 상하위의 계층 구조로 연결되어 동작한다.

모듈화된 계층 구조 프로토콜의 장점

  • 복잡하고 큰 시스템을 기능별로 작게 분류해서 간단하고 작은 시스템으로 재구성할 수 있다. 따라서 전체 시스템을 이해하기 쉽고, 시스템을 설계하고 구현하기도 편리하다.
  • 상하 계층에 인접한 모듈 사이의 인터페이스를 포함하여 분할된 모듈이 연동할 수 있는 표준 인터페이스를 제공한다. 모듈 인터페이스는 가능한 단순하게 구현하여 모듈들이 최대한 독립적으로 동작하도록 해야 한다. 모듈의 독립성은 전체 시스템의 구조를 단순하게 만들어준다.
  • 전송 매체 양단에 있는 호스트가 수행하는 프로토콜들은 좌우 대칭 구조이다. 대칭 구조에서는 통신 양단에 위치하는 동일 계층 사이의 프로토콜을 단순화할 수 있다.
  • 각 계층의 기능 오류를 수정하거나 향상시켜야 하는 경우에 전체 시스템을 재작성하지 않고 해당 계층의 모듈만 교체하면 된다. 즉, 상하 혹은 좌우 계층 간의 인터페이스를 유지하면 특정 계층의 내부 변경이 다른 모듈의 동작에 영향을 미치지 않는다.

프로토콜 설계 시 고려 사항

주소 표현

여러 호스트가 연결된 환경에서 특정 호스트끼리 통신하려면 상대방을 구분할 수 있는 방법이 필요하다.
시스템을 구분하여 지칭하기 위해서 이름을 부여하는 것을 주소Address 체계라 한다.

오류 제어

네트워크에서는 데이터 송수신 과정에서 오류가 발생할 수 있다.
전송 오류에는 데이터가 깨져서 도착하는 데이터 변형 오류와 데이터가 도착하지 못하는 데이터 분실 오류가 있다.
전송 오류 문제를 해결하는 오류 제어Error Control 기능은 통신 프로토콜의 가장 기본적인 기능에 속한다.

흐름 제어

일반적으로 수신 호스트의 버퍼 처리 속도보다 송신 호스트가 데이터를 전송하는 속도가 빠르면 논리적인 데이터 분실 오류가 발생할 수 있다.
이 문제를 해결하려면 송신 호스트의 전송 속도를 조절하는 흐름 제어Flow Control 기능이 필요하다.

데이터 전달 방식

일대일 통신 환경에서 데이터를 한쪽 방향으로만 전송하는 것을 단방향Simplex 방식이라 하고, 양쪽에서 데이터를 동시에 전송하는 것을 전이중Full Duplex 방식이라 한다.
일반적인 통신 프로토콜들은 모두 전이중 방식을 지원한다.
이외에도 데이터가 양방향으로 전송되지만 특정 시점에는 한쪽 방향으로만 전송할 수 있는 반이중Half Duplex 방식이 있다.
반이중 방식에서는 양쪽에서 데이터를 동시에 전송할 수 없으므로, 데이터 전송 시점을 제어할 수 있어야 한다.


서비스 프리미티브

프로토콜은 계층 구조로 이루어져 있고, 하위 계층이 상위 계층에 서비스를 제공하는 방식으로 동작한다.
계층 구조 프로토콜에서 하위 계층이 상위 계층에 제공하는 서비스의 종류에는 연결형과 비연결형이 있다.

  • 연결형 서비스
    연결형Connection-oriented 서비스를 이용하는 절차는 크게 3단계이다. 먼저 데이터 전달 경로를 설정하는 연결 설정 단계가 필요하다. 이 단계가 성공적으로 수행되어 연결이 설정되어야 다음 단계인 데이터 전송이 가능하다. 모든 데이터의 전송이 완료되어 데이터 전송 단계를 끝내려면 연결을 끊는 연결 해제 단계가 필요하다. 연결형 서비스의 동작 원리는 전화 시스템을 이용한 통화 절차와 매우 유사하다.
  • 비연결형 서비스
    비연결형Connectionless 서비스는 우편 시스템의 동작 원리와 비슷하다. 연결을 설정하고 해제하는 단계가 필요 없다. 즉, 전송할 데이터가 있으면 각 데이터를 독립적으로 목적지 호스트로 전송하면 된다. 데이터는 독립적인 경로 선택 과정에 의해 전달되므로 도착하는 순서가 보낸 순서와 일치하지 않을 수 있다.

하위 계층이 상위 계층에 제공하는 서비스는 프리미티브Primitive 형태로 구현된다.
따라서 프리미티브는 하위 계층을 사용하는 방법을 정형화한 것이다.
연결형 서비스에서 자주 사용하는 서비스 프리미티브의 종류에는 CONNECT, DATA, DISCONNECT가 있다.

종류 용도
CONNECT 연결 설정
DATA 데이터 전송
DISCONNECT 연결 해제

통신 프로토콜에서 프리미티브를 올바르게 수행하려면 각 프리미티브를 다음의 네 가지 기능을 포함하도록 설계해야 한다.
클라이언트에서 서버로 전달되는 요청은 Request와 Indication으로 구현되고, 서버의 응답은 Response와 Confirm으로 구현된다.

기능 설명
Request 클라이언트가 서버에 서비스를 요청함
Indication 서버에 서비스 요청이 도착했음을 통지함
Response 서버가 클라이언트에 서비스 응답을 회신함
Confirm 클라이언트에 응답이 도착했음을 통지함

서비스 프리미티브의 동작 원리

네 가지 서비스 프리미티브의 기능을 요약하여 설명하면 다음과 같다.

  • Request
    Request는 클라이언트에서 발생하며, 서버가 프리미티브의 기능을 수행하도록 하위 프로토콜에 요청할 때 사용한다. 연결 설정 요청CONNECT.Request, 데이터 전송 요청DATA.Request, 연결 해제 요청DISCONNECT.Request 등이 있다.
  • Indication
    클라이언트로부터 Request 요청을 수신한 서버의 하위 프로토콜은 Indication을 사용해서 프리미티브 요청이 발생했음을 알린다. 연결 설정, 데이터 전송, 연결 해제에 대해 CONNECT.Indication, DATA.Indication, DISCONNECT.Indication 순으로 사용한다.
  • Response
    클라이언트로부터 프리미티브를 받은 서버에서는 Response를 이용해 클라이언트에 응답한다. 연결 설정 요청은 CONNECT.Response를 사용해 연결 허용이나 거부로 응답하고, 데이터는 DATA.Response, 연결 해제는 DISCONNECT.Response로 전달한다.
  • Confirm
    서버에서 보낸 응답은 Confirm 형태로 클라이언트에 회신된다. 연결 설정은 CONNECT.Confirm, 데이터는 DATA.Confirm, 연결 해제는 DISCONNECT.Confirm로 전달된다.

'OS > 네트워크' 카테고리의 다른 글

LAN, MAN, WAN  (0) 2021.07.14
교환 시스템  (0) 2021.07.14
OSI 7계층  (1) 2021.05.11
네트워크의 기능  (0) 2021.04.27
네트워크 용어  (0) 2021.04.27
Comments