네트워크

서로 다른 장비 간 데이터를 교환할 때 기본적으로는 네트워크를 경유해서 데이터를 송수신할 필요가 있다. 시스템이 한 대만으로 구성되는 경우는 드물기 때문에 ‘반드시’라고 할 수 있을 만큼 데이터는 네트워크를 경유해서 전달된다.이와 같이 네트워크는 시스템 내에서도 중요한 요소 중 하나다.

여기서 독자들에게 한 가지 질문을 하고 싶다. ‘어떤 웹 페이지에 브라우저를 사용해서 접속하는 경우의 통신 흐름을 가능한 한 상세히 설명해 주세요’라고 한다면, 구조를 어느 정도 상세하게 그릴 수 있는가? 네트워크를 사용해서 데이터를 교환할 수 있다는 것은 알고 있어도 실제 네트워크 구조를 구체적으로 도식화하는 것은 어려울 것이다.

도식화가 왜 어려운 것일까? 그 이유 중 하나로, 현재 네트워크 자체가 그 구조를 알지 못해도 사용할 수 있도록 돼 있기 때문이다. 브라우저에 URL을 입력하면 웹 페이지가 보이는 것처럼, 통신하고 싶은 상대 주소만 지정하면 간단히 통신할 수 있는 것이 현재의 네트워크다. 하지만 간단하기 때문에 오히려 외부에서 볼 수 없는 블랙박스 부분이 많으면, 네트워크에서 문제가 발생하면 인프라 엔지니어가 고생을 하게 된다.

네트워크에서 발생하는 데이터 처리나 교환에는 다양한 구조가 존재한다. 하지만 인터넷 통신 구조를 포함해 이 책에서 소개하고 있는 3계층형 시스템 등을 구성하는 경우는 대부분 TCP/IP라는 구조를 사용한다. 이 TCP/IP는 다양한 통신 환경에서 데이터를 잘 전달해주는 우수한 구조다. 그리고 OS(주로 커널)가 이 TCP/IP를 사용해서 간단히 통신할 수 있는 구조를 제공한다.

계층 구조

회사를 계층 구조에 비유

계층 구조의 예로 회사를 떠올려 보자. 대부분의 회사는 업무에 따라 부서가 나누어져 있다. 이 때문에 영업부는 영업에 전념할 수 있고, 인사부는 인재 채용 등에 전념할 수 있다.

예를 들어, 회사 외부로 편지를 보낼 때는 어떤 흐름이 될까? 아래 그림에서는 영업부는 A사에 보낼 영업 자료를, 인사부는 채용 모집 안내서를 보내려고 한다. 각 부서는 문서를 만든 후에 ‘ㅇㅇ에게 보내주세요’라며 총무부에 의뢰한다. 총무부는 편지에 주소를 기입한 후 우편실에 의뢰한다. 우편실은 편지를 우체통에 넣고 편지 전달을 완료한다.

image.png

계층 구조는 역할 분담

계층 구조에서는 데이터나 기능 호출 흐름에 따라 계층 간 역할이 나누어진다는 특징이 있다. 역할이 나누어져 있기 때문에 각 층은 자신이 담당하는 일만 책임을 지며, 다른 일은 다른 계층이 책임을 진다. 상호 연결돼 있는 계층들에서는 교환 방법, 즉 인터페이스만 정해 두면 된다.

아래 그림을 보자. 여기서는 세 개의 계층으로 나누어져 있다. 기능 C는 자신의 일이 끝나면 그 결과를 기능 B에 전달하고 있다. 각 층은 상호 간에 어떤 일을 하는지(어떤 기능을 가지고 있는지) 알고 있지만, 구체적으로 어떤 방식으로 처리하고 있는지는 알지 못한다. 즉, 은폐되어 있다.

image.png