카테고리 없음

[Chapter 2] 네트워크 모델(프로토콜 설계 시 고려 사항)

devrabbit22 2025. 2. 7. 11:57

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

주소 표현은 호스트를 유일하게 구분하는 용도로 사용한다. 오류 제어는 전송 과정에서 데이터 분실, 데이터 변형 등의 오류가 발생했을 때 데이터를 복구하는데 사용한다. 흐름 제어는 송신자가 데이터를 너무 빨리 보내어 수신자가 미처 처리하지 못하는 문제를 해결하기 위한 목적으로 사용된다.

 

주소 표현

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

 

ex) 전화시스템의 주소 표기방법을 보면 전화번호 체계는 국가 코드- 지역 코드- 번호 형식으로 부여된다. 번호 체계가 국가라는 최상위 광역 코드에서 시작해 영역을 점점 축소하는 방식으로 계층 구조에 따라 관리된다. 따라서 국가 코드와 지역 코드로 해당 전화기의 지리적 위치를 판단할 수 있다.

ex)  주민등록번호의 예시

yymmdd-abcdefg 형태에서 앞쪽의 yymmdd는 태어난 해의 연도, 월 일을 의미하며 뒤쪽의 a는 성별을 구분하는 용도로 사용된다. 1이면 남자 2면 여자를 의미한다. 즉 1901년과 2001년에 태어난 사람은 yy로 구분하지 못하므로 a값으로 구분해야한다. 주소 체계를 결정할 때는 이와 같은 확장성을 반드시 고려해야 한다.

 

보통 호스트에도 주소를 하나씩 부여하지만, 다수의 호스트를 묶어 하나의 그룹 주소로 표기하기도 한다. 이는 전통적인 통신 환경이면서 현재도 가장 많이 사용하는 일대일(1:1) 통신과 더불어 화상 회의 등을 지원하기 위한 일대다(1:n) 통신 환경도 필요하기 때문이다. 일대다 통신의 대표적인 유형으로는 네트워크에 연결된 모든 호스트에 데이터를 전송할 수 있는 브로드캐스팅(Broadcasting) 표기 방법과 특정 사용자를 그룹으로 묶어서 지칭하는 멀티 캐스팅(multicasting) 표기 방법이 있다.

 

오류제어

네트워크에서는 데이터 송수신 과정에서 오류가 발생할 수 있다. 전송 오류에는 데이터가 깨져서 도착하는 데이터 변형 오류와 데이터가 도착하지 못하는 데이터 분실 오류가 있다. 전송 오류 문제를 해결하는 오류제어(Error Control)기능은 통신 프로토콜의 가장 기본적인 기능에 속한다. 오류가 발생하는 1차 원인은 물리 계층의 전송 매체에 의한 물리적인 오류이다. 이를 해결하기 위해서 데이터링크 계층이 물리적인 전송 오류를 해결한다. 그리고 상위 계층의 프로토콜이 수행될 때는 논리적인 전송 오류가 발생할 수 있으므로 상위 계층에서도 전송 오류 문제를 다룬다.

송신 호스트에서 보낸 데이터가 수신 호스트에서 발생할 수 있는 현상 3가지

(a) 데이터가 오류 없이 도착하는 정상적인 경우

(b) 데이터가 수신 호스트에 도착하지 못하는 데이터 분실 오류

  • 데이터가 분실되는 원인은 매우 다양하다. 전송 경로가 잘못되어서 데이터가 잘못된 방향으로 전달되거나, 상위 계층의 논리적 처리 과정에서 데이터를 분실할 수도 있다.
  • 데이터가 변형되거나 분실되는 오류가 발생되어 이를 해결하려면 먼저 오류가 발생한 사실을 인지해야 한다. 하지만 (b)의 경우 수신 호스트가 자신에게 데이터가 보내졌다는 사실을 인지하는 것이 쉽지 않다. 그래서 보통은 송신 호스트에서 오류를 감지하는 방법을 사용한다.

(c) 데이터의 내용이 변경되어 도착하는 데이터 변형 오류

  • (c)는 수신 호스트가 여러 방식의 오류 검출 기법을 이용해 오류를 검출할 수 있다. 네트워크에서 전송 오류를 해결하는 일반적인 방법은 송신 호스트가 원래 데이터를 재전송하는 것이다.

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

ex) 송신 호스트가 순차적으로 전송한 데이터의 순서가 뒤바뀌어 도착하는 경우, 수신 호스트에서 도착 순서를 바로잡으려면 데이터의 논리적인 순서를 의미하는 순서 번호 기능이 필요하다.

 

흐름제어

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

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

송신 호스트가 데이터를 전송하려면 반드시 수신 호스트로부터 명시적인 전송 허가를 받아야 한다. 송신 호스트가 i번째 데이터를 보내고 수신 호스트가 이를 제대로 받는다. 이후에 송신 호스트가 i+1번째 데이터를 보내려면 수신 호스트의 전송 허가가 필요하다. 수신 호스트는 데이터를 수신할 여력이 있을 경우에만 전송허가를 보낸다. 위 이미지에서는 전송 허가와 수신한 후에 송신 호스트가 다음 데이터인 i+1을 전송하고 있다. 이와 같이 흐름 제어 기능은 보통 수신 호스트의 제어에 의해 이루어진다.

 

데이터 전달 방식

프로토콜 설계 시 고려할 마지막 사항은 데이터 전달 방식이다. 일대일 통신 환경에서 데이터를 한쪽 방향으로만 전달하는 것을 단방향 방식이라 하고, 양쪽에서 데이터를 동시에 전송하는 것을 전이중 방식이라고 한다.

일반적인 통신 프로토콜은 모두 전이중 방식을 지원한다. 이외에도 데이터가 양방향으로 전송되지만 특정 시점에서는 한쪽 방향으로만 전송할 수 있는 반이중 방식이 있다. 반이중 방식에서는 양쪽에서 데이터를 동시에 전송할 수 없으므로 데이터 전송 시점을 제어할 수 있어야 한다.

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