ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Network] 계층구조의 개념
    Network/Network 2023. 2. 9. 13:00

    계층적 모듈 구조

    일반적으로 복잡하고 큰 시스템의 기능은 특정 단위인 모듈로 나누어 설계한다. 모듈은 독립적으로 동작하면서도 상호 유기적으로 통합될 수 있어야 한다.

    이 때 모듈이 유기적으로 연결되기 위해서는 적절한 인터페이스가 필요하다.

     

    1. 프로토콜 모듈화

    네트워크에 연결된 시스템이 통신하려면 정해진 규칙에 따라 데이터를 주고받아야 하는데, 이 일련의 규칙을 프로토콜이라고 한다.

    프로토콜 동작 과정은 전송 오류율, 데이터 전달 경로, 데이터 전송 속도 등 다양한 외부 요인의 영향을 받게 되는데, 프로토콜을 설계할 때 모듈화를 통하여 적절한 대응 방안을 마련하면 효율적으로 관리할 수 있다.

    컴퓨터 하드웨어는 CPU, 메모리, 하드디스크, LAN 카드 등과 같은 작은 부품들이 모여 하나의 시스템을 구성한다. 복잡한 시스템을 기능별로 모듈화하면 시스템 구조가 단순해져서 전체 시스템을 이해하기 쉽다.

    모듈화 된 각 단위 모듈은 독립적인 기능을 수행하고, 단위 모듈끼리는 서로 유기적으로 연결된다.

    각 단위 모듈이 독립적인 기능을 수행하기 때문에 고장이나 업그레이드 등의 상황이 일어나면 그 모듈만 교체하면 되기 때문에 매우 효율적이다.

     

    2. 모듈화된 계층 구조 프로토콜

    분활된 모듈들은 협력 관계를 유지하면서 유기적으로 동작한다.

    대부분의 모듈 구조에서는 특정 모듈이 다른 모듈에게 서비스를 제공하는 형식의 계층 구조를 이룬다.

    계층 구조

    네트워크에서도 독립적인 고유 기능을 수행하는 모듈들이 상하위의 계층 구조로 연결되어 서비스를 요청, 제공하는 방식으로 동작한다.

    이 때, 하위 계층의 실행 결과는 상위 계층에 결과 값을 직접 전달하는 방식이 될 수 있고, 주변 환경 값을 변경하는 부수효과 방식일 수도 있다.

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

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

     

    프로토콜 설계 시 고려 사항

    계층 구조의 통신 프로토콜을 설계할 때는 네트워크 호스트의 주소 표현 방법, 데이터 전송 과정에서의 오류 제어, 통신 양단 사이의 전송 속도를 제어하는 흐름 제어, 데이터 전달 방식 등을 고려할 요소가 많다.

    1) 주소 표현

    주소는 호스트를 구별할 수 있는 유일성을 가진 도구이다. 프로토콜을 설계하기 위해서는 시스템을 구분하여야 하기 때문에 주소 체계를 잡는 것이 가장 먼저 고려되어야 할 사항이다. 주소의 특징 4가지(유일성, 확장성, 편리성, 정보의 압축)을 고려하여 주소를 설계해야 한다.

    보통 호스트에도 주소를 하나씩 부여하지만, 다수의 호스트를 묶어 하나의 그룹 주소로 표기 하기도 한다.

    일대다(1:n) 통신의 대표적인 유형으로는 브로드 캐스팅, 멀티 캐스팅이 있다.

    • 브로드 캐스팅 : 네트워크에 연결된 모든 호스트에 데이터를 전송하는 방식
    • 멀티캐스팅 : 특정 사용자를 그룹으로 묶어서 지칭하는 방식

    2) 오류 제어

    오류가 발생하는 1차 원인은 물리 계층의 전송 매체에 의한 물리적인 오류이다. 이 오류를 해결하기 위해 데이터 링크 계층이 물리적인 전송 오류를 해결한다.

    또한 상위 계층의 프로토콜이 수행될 때는 논리적인 전송 오류가 발생 할 수 있으므로 상위 계층에서도 전송 오류 문제를 다뤄야 한다.

    전송 결과 유형

    네트워크에서는 데이터 송수신 과정에서 오류가 발생할 수 있다. 이러한 오류를 어떻게 처리할 것인가를 결정하는 것이 바로 오류 제어이다. 전송 오류의 종류에는 데이터가 깨져서 도착하는 데이터 변형 오류와 데이터가 도착하지 못하는 데이터 분실 오류가 있다.

    데이터가 변형되거나 분실되는 오류가 발생되어 이를 해결하려면 먼저 오류가 발생한 사실을 인지해야한다. 하지만 수신 호스트에는 오류 사실 감지가 힘들기 때문에 송신 호스트에서 이를 감지한다. 방법으로는 응답과 타임아웃이 있다.

    응답은 수신 호스트가 데이터를 받았을 경우 응답을 보내 송신 호스트는 데이터가 제대로 갔다는 것을 인지한다.

    타임아웃의 경우는 특정 시간이 지났는데도 응답이 오지 않았을 경우에 오류가 발생했다는 것을 인식한다. 이 때는 재전송을 통해 오류를 해결한다. 이러한 과정은 데이터 링크 계층에서 제어를 한다.

    이러한 물리적인 오류 외에도 통신 프로토콜에서 사용하는 알고리즘의 성격에 의해 오류가 발생하기도 한다.

    바로 순서가 뒤바뀌어 도착하는 경우이다. 이 오류를 해결하기 위해서는 송신호스트는 순서 번호 기능을 사용하여 전송 오류 문제를 해결한다.

     

    3) 흐름 제어

    전송 매체에서 물리적인 오류가 없었는데도 데이터를 분실하는 경우가 있는데, 이는 송수신 호스트 사이의 데이터 전송/처리 속도 차이 때문에 발생한다. 일반적으로 수신 호스트의 버퍼 처리 속도보다 송신 호스트가 데이터를 전송하는 속도가 더 빠르면 논리적인 데이터 분실을 발생할 수 있다. 수신 호스트에 데이터가 도착하면 일단 내부 버퍼에 보관했다가 처리하기 때문이다. 수신 호스트가 내부 버퍼에 보관할 공간을 확보하기도 전에 송신 호스트가 데이터를 보내버리면 데이터를 논리적으로 분실하는 결과가 초래된다.

    이 오류를 해결하려면 송신 호스트의 전송 속도를 조절하는 흐름 제어 기능이 필요하다.

    흐름 제어

    위의 그림처럼 송신 호스트에서 데이터를 전송하면 송신 호스트는 수신 호스트로부터 명시적인 다음 데이터 전송 허가를 받아야 한다.

    이와 같이 흐름 제어 기능은 보통 수신 호스트의 제어에 의해 이루어진다.

     

    4) 데이터 전달 방식

    마지막으로 프로토콜 설계 시 고려할 마지막 사항은 데이터 전달 방식이다.

    단방향 : 일대일(1:1)통신 환경에서 데이터를 한쪽 방향으로만 전송하는 방식이다.

    전이중 : 양쪽에서 데이터를 동시에 전송하는 방식이다.

    반이중 : 데이터가 양방향으로 전송되지만 특정 시점에는 한쪽 방향으로만 전송하는 방식이다. 반이중 방식은 양쪽에서 데이터를 동시에 전송할 수 없으므로, 데이터 전송 시점을 제어할 수 있어야 한다.

    데이터 전달 방식에서는 데이터 사이의 전송 우선순위를 설정하는 방법이나 긴급 데이터를 처리하는 방법 등도 고려해야 한다.

     

    서비스 프리미티브

    프로토콜은 계층 구조로 이루어져 있고, 하위 계층이 상위 계층에 서비스를 제공하는 방식으로 동작한다. 이러한 서비스는 프리미티브 형태로 구현된다.

    서비스의 종류에는 연결형 서비스와 비연결형 서비스가 있다.

    연결형 서비스는 통화와 같은 종류가 있다. 연결형 서비스는 크게 3단계로 이루어진다.

    프리미티브 동작 원리

    연결형 서비스에서 자주 이용하는 서비스 프리미티브의 종류에는 CONNECT, DATA, DISCONNECT가 있으며, 연결설정, 데이터 전송, 연결헤제의 작업을 수행한다. 이런 각각의 프로미티브는 4가지 기능을 가지고 있는데, Request, Indication, Response, Confirm이다.

    동작방법

    1. 클라이언트에서 Request가 발생하며 서버에 서비스를 요청한다.
    2. 서버는 서비스 요청을 수신하여 Indication으로 서비스 요청이 발생했음을 알린다.
    3. 그 후 서버는 Response를 이용해 클라이언트에 서비스 응답을 회신한다.
    4. 클라이언트는 Confirm의 형태로 응답이 도착했음을 통지한다.

    이와 같은 4단계 절차를 통해 하나의 서비스 프리미티브가 처리된다.

     
     

    'Network > Network' 카테고리의 다른 글

    [Network] 네트워크 기초 개념  (0) 2023.02.17
    [Network] OSI 참조 모델과 TCP/IP모델  (0) 2023.02.10
Designed by Tistory.