IT 기획의 길

네트워크 정복하기 5. 프로토콜과 네트워크 아키텍처 - OSI 모델과 TCP/IP 본문

IT 인프라/네트워크

네트워크 정복하기 5. 프로토콜과 네트워크 아키텍처 - OSI 모델과 TCP/IP

완벽하기 쉽지 않지만 완벽해지려고 노력해야 한다 2021. 9. 30. 14:27

컴퓨터와 컴퓨터가 네트워크에서 데이터를 주고받는 통신을 하기 위해서는 스위치, 라우터 등 다양한 네트워크 장비들이 필요합니다.

 

참조: 네트워크의 구성

 

<그림 1> 데이터 통신과 네트워크

 

전 세계의 수많은 네트워크가 연결된 인터넷에서는 서로 다른 벤더(Vendor, 제품이나 서비스를 제공하는 기업)가 공급하는 다양한 컴퓨터와 네트워크 장비들이 연결됩니다. 어떻게 서로 다른 제조업체가 만든 컴퓨터와 네트워크 장비들이 호환성을 갖고 서로 연결되어 인터넷이라는 거대한 네트워크를 형성하고 데이터를 전송하는 것일까요?

 

프로토콜이란?

2명 이상의 사람들이 모인 사회에서는 서로 대화하고 질서를 유지하기 위해 합의된 규칙이 필요합니다. 서로 대화하기 위해 언어라는 규칙이 있고, 사회 질서를 유지하기 위해 법과 같은 규칙이 있습니다.

 

 

<그림 2> 사회의 규칙

 

어느 지역에 사느냐에 따라 다른 언어를 사용하고, 어떤 생활영역에 적용되는지에 따라 헌법, 민법, 형법, 상법 등 다양한 법이 존재합니다. 따라서 같은 언어를 사용해야 대화가 가능하며, 민법이 적용될 영역에 형법이 적용될 수는 없습니다. 

 

<그림 3> 대화 - 같은 언어 사용

 

2대 이상의 컴퓨터와 다양한 네트워크 장비가 모인 네트워크에서도 마찬가지로 서로 데이터를 주고받기 위해 합의된 규칙이 필요합니다. 사회에서 언어나 법과 같은 역할을 하는 규칙을 네트워크에서는 프로토콜이라 부릅니다. 즉, 프로토콜(Protocol) 네트워크에서 데이터를 주고받기 위해 네트워크를 구성하는 컴퓨터와 네트워크 장비들이 지켜야 할 규칙입니다. 프로토콜은 데이터를 누구에게, 무엇을, 언제, 어떻게 전송할 것인지, 즉 데이터 전송 상대방, 데이터의 형식, 데이터의 전송 순서와 절차, 데이터 전송 방법 등을 규정합니다. 프로토콜이 규정한 구체적인 내용을 사양이라고 합니다. 

 

 

<그림 4> 네트워크의 통신 규칙 - 프로토콜

 

'네트워크의 구성'에서 등장한 이더넷 프로토콜, '네트워크의 형태'에서 등장한 IP 프로토콜, '인터넷의 발전과 월드와이드 웹'에서 등장한 팀 버너스리가 만든 HTTP 프로토콜 등 다양한 프로토콜이 있습니다. 지역마다 다른 언어가 존재하고, 생활영역마다 다른 법이 적용되는 것처럼, 네트워크 내에서도 어떤 기능을 하느냐에 따라 다른 프로토콜이 존재하기 때문입니다.

 

컴퓨터 간에 데이터를 전송할 때는 다양한 프로토콜 중에서 데이터 전송 목적, 즉 서비스의 종류에 따라 프로토콜을 조합하여 사용합니다. 예를 들어 인터넷에서 웹페이지를 주고받는 웹 서비스에서는 TCP 프로토콜, IP 프로토콜, HTTP 프로토콜을 조합해서 사용합니다.

 

따라서 다양한 언어 중에서 같은 언어를 사용해야 대화가 가능한 것처럼 네트워크에서도 데이터를 성공적으로 전송하기 위해서는 컴퓨터와 네트워크 장비들이 같은 프로토콜 조합을 사용해야 합니다.

 

<그림 5> 데이터 통신 - 같은 프로토콜

 

네트워크 아키텍처

추상화

네트워크는 수많은 컴퓨터와 네트워크 장비들이 전송 매체로 연결되어 데이터를 전송하는 복잡한 시스템입니다. 복잡한 네트워크 시스템을 프로토콜의 조합으로 단순화한 것을 네트워크 아키텍처*(Network Architecture)라고 합니다. 이렇게 복잡한 시스템을 쉽게 이해할 수 있도록 핵심적인 개념(기능)들을 뽑아 단순화시키는 방법을 추상화**(abstraction)라고 합니다.

 

*. 구조라는 뜻을 가진 아키텍처(architecture)는 건축물의 뼈대인 기본 구조를 의미합니다. 건물을 지을 때 전체 구조를 관리하기 위한 설계에서 유래한 아키텍처는 복잡한 IT 시스템의 전체 구조를 관리하기 위한 개념으로 많이 활용됩니다. 컴퓨터 아키텍처, 소프트웨어 아키텍처, 인프라 아키텍처, 데이터 아키텍처 등 다양하게 사용되고 있습니다.

**. 추상화는 사람이 복잡한 것을 다룰 때 사용하는 기본적인 방법으로, 본질적인 것에 집중할 수 있도록 부차적이고 세부적인 것들을 제거하고 핵심적인 정보만을 추출하여 강조하는 작업입니다. IT 에서 각종 아키텍처를 구축할 때, 소프트웨어를 개발할 때 개발자들이 사용하는 가장 기본적인 원리가 추상화입니다.

 

 

복잡한 네트워크 시스템이 데이터를 전송하는 과정을 논리*적인 단계로 분할하여 각 단계마다 핵심적인 기능을 모듈화(Modularity)하고, 분할된 모듈을 계층적 구조로 배열하는 계층화(Layering)를 통해 네트워크를 추상화시킨 것이 네트워크 아키텍처입니다.

 

*. 물리 주소와 논리 주소, 물리 설계와 논리 설계 등 IT에서는 '물리'와 이에 대비되는 개념으로 '논리'라는 용어가 자주 사용됩니다. 일반적으로 눈에 보이는 실체가 있는 것을 물리, 눈에 보이지는 않지만 상상과 생각에 의해 가상의 실체가 있는 것처럼 취급하는 것을 논리라고 합니다. 여기서도 데이터가 실제 이동하는 과정은 눈에 보이지 않지만 상상과 생각을 통해 데이터의 이동 과정을 단계별로 가상화한 것입니다.

 

 

<그림 6> 네트워크 아키텍처

 

모듈화와 계층화 : 모듈화된 계층 구조

복잡한 시스템을 기능에 따라 모듈이라는 작은 단위로 분할하여 설계하는 것을 모듈화라고 합니다. 모듈은 다른 모듈과 상관없이 독립적으로 고유한 기능을 수행합니다. 독립적으로 기능하는 모듈들이 인터페이스를 통해 유기적으로 연결되어 하나의 시스템으로서 동작하게 됩니다. 모듈화의 핵심은 분할보다는 연결에 있습니다. 레고 블록이 서로 연결되어야 의미 있는 무언가를 만들어내는 것처럼 모듈도 연결되어야 의미 있는 시스템이 되기 때문입니다. 따라서 레고 블록이 서로 조립 가능한 것처럼 모듈들을 연결할 수 있는 표준화된 인터페이스가 있어야 합니다.

 

모듈을 연결할 때 모듈 간에 시간적 개념을 부여하여 모듈들을 일정한 순서로 배열한 것이 계층화입니다. 순서가 추가된 모듈인 계층(layer)을 사용함으로써 각 계층 간에 일정한 정보의 흐름이 있는 시스템을 설계할 수 있습니다.

 

네트워크 시스템이 컴퓨터에서 컴퓨터로 데이터가 이동하는 흐름이 있는 복잡한 시스템이기에 모듈화와 계층화, 즉 모듈화된 계층 구조로 추상화한 것입니다.

 

 

프로토콜과 네트워크 아키텍처

네트워크 아키텍처에서 각 계층의 고유한 기능을 정의해 놓은 것이 프로토콜입니다. 앞서 프로토콜은 네트워크에서 데이터를 주고받기 위해 지켜야 할 규칙으로 무엇을, 언제, 어떻게 전송할 것인지 미리 정해 놓은 약속이라고 했습니다. 무엇을, 언제, 어떻게 전송할 것인지를 다른 말로 표현하면 각 계층의 고유한 기능입니다. 따라서 각 계층은 기능마다 고유한 프로토콜이 존재하고, 프로토콜에 정의된 기능을 수행하면서 제 역할을 하게 되는 것입니다. 따라서 네트워크 아키텍처는 결국 프로토콜들의 집합입니다.

 

요약하면, 눈에 보이지 않는 데이터의 이동 과정을 세부적인 단계로 모듈화하여 단계마다 필요한 기능을 프로토콜로 정의하고, 각 단계를 데이터의 이동 순서에 따라 계층화시킨 것이 네트워크 아키텍처입니다. 한마디로 네트워크 시스템에서 컴퓨터들이 데이터를 주고받는 과정을 프로토콜의 집합으로 표현한 설계도라 할 수 있습니다.

 

구체적으로 현실에서는 이 설계도에 따라 제작된 컴퓨터와 네트워크 장비의 하드웨어나 소프트웨어가 각 계층의 기능을 구현(implementation)합니다.

 

 

<그림 7> 네트워크 아키텍처의 계층구조

 

모듈화 된 계층 구조의 장점

모듈화된 계층 구조가 사용된 네트워크 아키텍처에서는 데이터 통신을 계층이라는 단계로 나누어 각 단계의 기능마다 프로토콜을 정의하고, 데이터가 각 계층을 이동하는 순서에 따라 계층을 상위계층부터 하위계층으로 구조화시킨 후 인터페이스로 계층을 순차적으로 연결하여 데이터의 이동을 설명합니다. 

 

모듈화된 계층 구조의 가장 큰 특징은 각 계층마다 고유한 역할이 존재하고, 다른 계층과는 상관없이 독립된 형태로 각자 맡은 역할을 수행하는 것입니다. 각 계층이 독립적이기 때문에 한 계층의 오류나 변경은 다른 계층에 영향을 주지 않습니다. 따라서 어느 계층의 기능 오류를 수정하거나 향상시켜야 하는 경우 해당 계층만 변경하면 됩니다. 이러한 독립성은 기술 발전 속도에 맞춰 각 계층을 자유롭고 편리하게 설계하고 변경할 수 있는 유연성과 개방성으로 이어집니다. 기술 발전에 따라 어떤 기기의 사양이 변경되거나 신기술 개발에 따른 새로운 기기가 등장하면 그 기기가 하는 역할이 속한 계층의 프로토콜의 사양만 변경하면 되기 때문입니다.

 

또한 계층을 연결하는 인터페이스 덕분에 다양한 네트워크 장비를 만드는 기술들 간의 상호 연결성이 확보됩니다. 예를 들면, 스마트폰으로 웹사이트에 접속할 때 LTE나 5G 같은 이동 통신사의 휴대전화망을 사용하든, 무선 랜을 사용하여 Wi-Fi로 연결하든 상관없이 웹 사이트에 접속하는 웹 브라우저가 똑같이 원하는 웹 사이트에 접속할 수 있는 것은 이러한 계층 구조 덕분입니다. 계층 구조 덕분에 물리적으로 어떤 기술을 사용해서 네트워크에 접속하든 문제없이 데이터를 주고받을 수 있는 호환성을 갖게 되는 것입니다.

 

 

이렇게 복잡한 네트워크를 이해하기 쉽게 논리적인 단계로 계층화하고, 계층 간에 표준화된 인터페이스를 제공하도록 구성하여 하나의 계층에서의 변경이 다른 계층에 영향을 미치지 않게 함으로써 유연성과 호환성을 제공하는 모듈화 된 계층 구조는 네트워크 기술 표준화의 기반이 되었습니다.

 

OSI 모델과 TCP/IP 모델

컴퓨터와 네트워크 장비를 만드는 제조업체들이 저마다 독자적인 네트워크 아키텍처를 사용하여 서로 다른 제조업체의 제품 간에는 통신을 할 수 없었습니다. 그래서 다양한 제조업체의 제품 간에도 상호 연결성을 확보하기 위한 표준화 작업이 진행되었습니다.

 

모듈화된 계층 구조를 사용하여 네트워크 기술의 표준화를 시도한 대표적인 네트워크 아키텍처가 OSI(Open System Interconncection) 모델과 TCP/IP 모델입니다.

 

OSI 모델은 국제표준화기구(IOS, International Organization for Standardization)가 1977년에 만든 모델로 데이터 전송 과정을 7개의 계층으로 분류했습니다. OSI 모델은 구조가 복잡해 널리 보급되지 못했고, 실무에서 사용되지 않습니다. 다만 네트워크 통신과정을 개념적으로 설명하는 용도로 활용되고 있고, 다른 모델에 영향을 주어 OSI 참조 모델(Open System Interconncection Reference Model)이라고도 불립니다. 예를 들어, 네트워크의 구성에서 등장한 스위치를 L2 스위치라고도 부르는데 L2의 의미가 Layer 2, 즉 OSI 참조 모델의 두 번째 계층인 데이터링크 계층의 역할을 수행하는 장비라는 뜻입니다. 

 

현재는 네트워크상 데이터 전송 과정을 4개의 계층으로 단순화한 TCP/IP 모델이 일반적으로 사용됩니다. 다양한 네트워크 기술이 TCP/IP를 중심으로 통합되어 사실상 인터넷 표준(De Facto Standard, 사실상 표준*)이 되었습니다.

 

*. IOS 같은 표준화 단체에서 정한 규칙을 공식 표준(De Jure Standard)라고 하는 반면, 표준화 단체가 정한 것은 아니지만, 많은 사람들이 사용하여 사실상 표준으로 인정받고 있는 규칙을 사실상 표준이라고 합니다.

 

TCP/IP 모델이 사실상의 표준이 된 이유

TCP/IP 모델이 IOS가 정한 공식 표준인 OSI 모델보다 많이 사용되어 사실상의 표준이 된 것은 TCP/IP가 급속히 발전하는 기술에 신속히 대응하여 현실에서 작동하는 프로토콜을 빠르게 만들고 개선했기 때문입니다.

 

OSI 모델은 프로토콜의 내용을 정하는 것을 중시하여 프로토콜에 필요한 기능이 무엇인지를 중심으로 모델을 고안함으로써 현실에서 실제 작동하는 프로토콜을 제때 만들어내지 못했습니다.

 

반면 TCP/IP 모델은 프로토콜을 정하는 것 자체보다 실제 네트워크에서 동작하는 프로토콜을 빠르게 구현하는 것을 중시한 모델입니다. 프로토콜이 적용되는 컴퓨터의 소프트웨어를 만들기 위해 어떻게 프로그래밍해야 좋을지를 중심으로 프로토콜을 정의하여 개발 중심의 실용성이 높은 프로토콜을 완성해 왔기에 사실상의 표준으로 자리 잡은 것입니다. 

 

<그림 8> OSI 모델과 TCP/IP 모델의 비교

 

 

결국 인터넷을 구성하는 전 세계의 다양한 컴퓨터와 네트워크 장비들이 TCP/IP 모델을 기반으로 설계되어 제조업체에 상관없이 상호 연결성이 확보되고 인터넷을 통한 데이터 통신이 가능한 것입니다.

 

TCP/IP 모델에 따라 컴퓨터 간에 데이터를 주고받는 과정은 <그림 9>와 같습니다. 데이터를 송신하는 컴퓨터는 제4계층부터 순서대로 각 계층의 역할을 수행하고, 데이터를 수신하는 컴퓨터는 제1계층부터 순서대로 각 계층의 역할을 수행합니다. 데이터를 송신하는 컴퓨터와 수신하는 컴퓨터 모두 각 계층이 역할을 수행할 때마다 각 계층이 요구하는 동일한 프로토콜을 따르기 때문에 인터넷을 통한 데이터 통신이 이루어집니다.

 

<그림 9> TCP/IP 모델의 데이터 통신

출처: https://better-together.tistory.com/65?category=887984 [변계사 Sam의 테크 스타트업!]