CS/Network

[Chapter 2] 네트워크 모델(계층 구조의 개념)

devrabbit22 2025. 2. 7. 10:27

네트워크에 연결된 시스템이 통신하려면 정해준 규칙에 따라 데이터를 주고받아야 하는데, 이러한 일련의 규칙을 프로토콜(protocol)이라 한다. 프로토콜의 동작 과정은 전송 오류율, 데이터 전달 경로, 전송 속도 등 다양한 외부 요인의 영향을 받는다. 따라서 적절한 대응 방안을 마련해 효율적으로 관리하며, 프로토콜의 설계 과정은 모듈화를 통해 이루어진다.

이렇게 함으로써 사용자에게 더 편리하고 간편한 통신을 제공한다.

 

계층적 모듈 구조

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

 

모듈화

  • 컴퓨터 하드웨어는 CPU, 메모리, 하드디스크, LAN 카드 등과 같은 작은 부품들이 모여 하나의 시스템을 구성한다.
  • 복잡한 시스템을 기능별로 모듈화하면 시스템 구조가 단순해져서 전체 시스템을 이해하기 쉽다.
  • 각 단위 모듈이 독립적인 기능을 수행하기 때문에 고장이나 업그레이드 등의 상황에 손쉽게 대처 가능하다.
  • 소프트웨어 측면에서 보면, 일반 프로그래밍 언어는 함수 개념을 사용해 전체 프로그램을 모듈화 할 수 있다.
  • 함수별로 특정 기능을 독립적으로 수행하도록 함으로써, 각 함수가 개별적으로 설계되고 구현된다는 장점이 있다.
  • 함수 사이의 인터페이스는 함수의 매개변수에 의해서만 이루어지므로 전체 시스템을 이해하기 훨씬 쉽다.

모듈화의 장점을 설명할 이미지

(a) 전체 시스템을 기능에 따라 세 부분으로 나누어 설계했으며, 이때 각 모듈은 유기적으로 연결되어야한다.

B 모듈은 A 모듈과 곡선 모양의 인터페이스로 연결되고, C모듈과 톱니 모양의 인터페이스로 연결된다. 

A와 C모듈은 직접 연결되는 인터페이스가 없으며, B 모듈을 통해 간접적인 관계를 유지한다.

 

모듈화 하지 않았다면 한 부분만 고장나도 전체 시스템을 교체해야 한다.

모듈화를 통해 (b)처럼 오류가 발생한 B 모듈만 교체해서 버전 2로 대체할 수 있다.

(c)처럼 성능이나 기능을 개선 해 버전 3으로 교체할 수 있다. 

이때 모듈 내부의 처리 과정은 임의로 개선할 수 있으나, A와 C모듈과의 인터페이스는 동일하게 유지해야 전체 시스템 동작에 영향을 주지 않는다.

 

계층 구조

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

계층 구조에서는 상위 계층이 하위 계층에 특정 서비스를 요청하는 방식으로 동작하며, 요청을 받은 하위 계층은 해당 서비스를 실행하여 그 결과를 상위 계층에 돌려준다. 하위 계층의 실행 결과는 상위 계층에 결과 값을 직접 전달하는 방식이 될 수 있고, 주변 환경 값을 변경하는 부수효과 방식일 수있다. 

 

ex)자동차의 경우 운전자가 속도를 줄이려면 브레이크를 밟아야하고, 브레이크를 누르는 정도에 따라 속도가 줄어든다. 이 구조에서 운전자는 상위 계층에 해당되며, 자동차 내부에서 속도를 줄이는 기능은 하위 계층의 모듈이 된다. 운전자와 감속 모듈 사이에는 브레이크라는 인터페이스가 존재한다.

 

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

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

Reference

쉽게 배우는 데이터 통신과 컴퓨터 네트워크