해당 포스트는 영진닷컴,『그림으로 배우는 네트워크 NetWork 원리』, Gene 저·김성훈 역을 참고하여 작성하였습니다.
네트워크라고 한마디로 말하지만, 넓은 의미에서 네트워크는 물류, 고통, 인맥 등도 포함됩니다. 그물처럼 구성된 시스템을 나타내는 말이 네트워크입니다.
컴퓨터 네트워크는 PC나 스마트폰과 같은 정보 단말 기기를 서로 연결해서 만들어집니다. 컴퓨터 네트워크 덕분에 다른 사람과 데이터를 주고받을 수 있습니다.
이전에는 많은 PC를 도입한 일부 대기업에서만 컴퓨터 네트워크를 이용했지만, 현재는 대부분의 기업이나 일반인도 이용하고 있습니다. 이제부터 컴퓨터 네트워크를 '네트워크'라고 표기합니다.
데이터를 주고받는 행위 자체는 네트워크를 이용하는 목적이 아니라 수단에 지나지 않습니다. 우리는 주로 다음과 같은 이익을 얻고자 네트워크를 이용합니다.
그밖에도 일상 생활이나 업무 등에서 다양한 목적으로 매일 네트워크가 이용됩니다.
이젠 네트워크를 사용하는 게 너무나 당연해서, 그다지 의식하지 않고 있을지도 모릅니다. 하지만, 네트워크를 이용하는 목적을 분명히 하면, 네트워크의 중요성도 명확해질 것입니다.
네트워크는 이용하는 기술 등을 바탕으로 다양한 관점에서 분류할 수 있습니다. 그중에서도 '누가 이용할 수 있는 네트워크인가?'라는 관점에서 볼 때, 크게 다음 2가지로 분류하면 이해하기 쉽습니다.
사내 네트워크나 가정 네트워크처럼 접속할 수 있는 사용자를 직원이나 가족으로 한정하는 사설 네트워크가 있습니다. 사내 네트워크는 원칙적으로 그 기업의 직원만 이용할 수 있고, 가정 네트워크는 가족만 이용할 수 있습니다.
반면에 인터넷은 접속할 사용자를 제한하지 않고, 누구든 이용할 수 있는 네트워크입니다. 인터넷에 접속하면, 다른 사용자와 자유롭게 데이터를 주고받을 수 있습니다.
사용자가 제한된 사설 네트워크인만큼 장점도 그다지 많지 않습니다. 예를 들어, 사내 네트워크는 같은 회사 직원끼리만 파일을 공유하고 메일을 주고받을 수 잇습니다. 가정 네트워크라면 그 사용자의 가족끼리만 통신할 수 있습니다.
일반적으로 접속할 수 있는 사용자가 많아질수록 네트워크의 가치가 높아집니다. 그래서 네트워크의 이용 가치를 높이고, 사용자가 더 많은 장점을 누릴 수 있도록 사설 네트워크를 인터넷에 연결하는 경우가 대부분입니다.
네트워크에 관한 용어로 LAN(Local Area Network의 줄임말)과 WAN(wide Area Network의 줄임말)이라는 말이 자주 등장합니다. LAN과 WAN으로 구성된 기업의 사내 네트워크(인트라넷)로 생각하면, 이 둘의 차이를 쉽게 알 수 있습니다.
예를 들어, 규모가 큰 기업은 복수의 거점을 구축합니다. 이때 각 거점의 네트워크가 LAN입니다. LAN을 구축함으로써 거점 내의 PC나 서버의 통신이 가능해집니다.
또한, 개인 사용자의 가정 내 네트워크도 LAN입니다.
복수의 거점에서 파일을 공유하거나, 메일을 주고받으려면 거점 간의 통신도 필요합니다. 거점의 LAN 끼리 서로 연결하는 것이 WAN입니다.
다시 말해, 거점 내 네트워크가 LAN이고, LAN끼리 연결하기 위한 것이 WAN입니다.
LAN은 직접 구축하고 관리합니다. LAN을 구축하기 위해서는 각 기기 배치나 배선 그리고 필요한 설정을 해야 합니다. 주로 유선(인터넷)이나 무선 LAN을 지원하는 기기를 이용하는데, 기기 비용이나 설정을 위한 인건비 등의 관리 비용은 필요합니다.
WAN은 NTT와 같은 통신사업자가 구축하고 관리합니다. 통신사업자가 제공하는 WAN 서비스에는 여러 종류가 있으므로, 적절한 WAN 서비스를 선택하세요.
구축 비용은 서비스 초기 계약 비용과 통신 요금을 통신사업자에게 지불합니다. 통신 요금은 통신량을 기준으로 하는 종량제 방식과 고정 요금 방식 등 서비스에 따라서 요금 체계가 달라집니다.
LAN은 직접 구축하여 관리하고, 그 LAN을 연결하기 위해서는 적절한 WAN 서버스를 계약하는 것이 중요합니다.
누구나 이용할 수 있는 인터넷은 전 세계의 다양한 조직이 관리하는 네트워크가 연결된 것입니다. 그 조직의 네트워크를 AS(Autonomous System)라고 부릅니다.
AS의 구체적인 예는 인터넷 접속 서비스를 제공하는 NTT 커뮤니케이션즈와 같은 인터넷 서비스 프로바이더(ISP)입니다. Google이나 Amazon 등 인터넷 상에서 서비스를 제공하는 기업 네트워크도 AS입니다.
ISP의 상위 그룹을 Tier1이라고 부릅니다. 일본에서는 NTT 커뮤니케이션즈가 Tier1입니다. Tier1 이외의 ISP는 최종적으로는 Tier1에 연결되어 자신이 관리하지 않는 네트워크의 정보도 입수합니다. 결국, 인터넷 상의 모든 ISP는 Tier1을 경우해서 연결되는 것입니다.
사용자는 인터넷을 이용할 때, 어딘가의 ISP와 인터넷 접속 서비스를 계약합니다.
인터넷에 연결되면, 자신이 계약한 ISP의 사용자뿐만 아니라 다른 ISP의 사용자와도 통신할 수 있습니다.
ISP와 계약하고 가정이나 사내 네트워크의 라우터를 ISP의 라우터와 연결하면, 인터넷을 이용할 수 있게 돕니다. 라우터를 통하지 않고 노트북이나 스마트폰 등을 ISP의 라우터와 접속하는 방법도 있습니다.
데이터를 주고받는 주체는 주로 애플리케이션입니다. 애플리케이션을 동작시키는 컴퓨터는 클라이언트와 서버로 분류할 수 있습니다. 클라이언트는 일반 PC나 스마트폰입니다. 서버는 수많은 PC 등에서 보내는 요청을 처리하는 비교적 고성능 컴퓨터입니다.
예를 들어, 웹사이트를 볼 때 PC나 스마트폰 등에서는 웹브라우저가 동작하고, 서버에서는 서버 애플리케이션이 동작합니다. 웹브라우저와 웹서버 애플리케이션 사이에서 데이터 통신이 일어납니다. 애플리케이션끼리 데이터를 주고받을 수 있게 준비하는 전단계의 통신 등도 발생하지만, 데이터를 주고받는 주체는 애플리케이션이라는 사실만 우선 기억해두세요.
데이터 통신은 양방향으로 이루어진다는 사실도 중요합니다. 대체로 애플리케이션은 서버 애플리케이션에 파일 전송 요청(리퀘스트)을 보내고, 서버 애플리케이션은 그 요청의 처리 결과를 응답(리플라이)으로서 반환합니다. 요청과 응답 데이터를 바르게 주고받을 수 있어야만 비로소 애플리케이션의 기능이 작동하는 것입니다.
이처럼 서버와 통신하는 애플리케이션을 클라이언트 서버 애플리케이션이라고 부릅니다.
서버를 거치지 않고 클라이언트끼리 직접 데이터를 주고받는 애플리케이션을 피어투피어 애플리케이션이라고 합니다. 피어투피어 애플리케이션의 예는 SNS의 메신저나 온라인 게임 등이 있습니다. 단, 통신 상대를 특정하고자 서버를 이용하는 경우는 있습니다.
우리가 한국어나 영어와 같은 언어로 대화를 하는 것처럼, 컴퓨터 통신에서는 네트워크 아키텍처를 이용합니다. 즉, 대화에 사용하는 언어에 해당하는 것은 네트워크 아키텍처입니다.
언어에는 문자 표기법, 발음, 문법 등 다양한 규칙이 있습니다. 네트워크 아키텍처도 마찬가지입니다. 통신 상대를 지정하는 법, 다시 말해 주소나 데이터 형식, 통신 절차 등의 규칙이 필요합니다. 통신에 필요한 규칙을 프로토콜이라고 합니다. 프로토콜의 집합이 바로 네트워크 아키텍처(네트워크 아키텍처는 '프로토콜 스택' '프로토콜 스위트로도 불립니다)입니다.
서로 같은 언어로 대화하는 것처럼, 컴퓨터끼리의 통신에서도 같은 네트워크 아키텍처를 이용할 필요가 있습니다.
네트워크 아키텍처에는 몇 가지 종류가 있지만, 현재는 대부분 TCP/IP를 이용합니다. TCP/IP는 이른바 네트워크의 공통 언어입니다.
TCP/IP에서는 네트워크를 통해 애플리케이션의 데이터를 주고받기 위해, 역할별로 네 가지로 계층화된 복수의 프로토콜을 조합합니다.
프로토콜을 계층화하면, 나중에 변경하거나 확장하기 쉬워지는 장점이 있습니다. 예를 들어, 프로토콜을 변경하거나 기능을 추가할 때는 기본적으로 그 프로토콜만 생각하면 됩니다.
TCP/IP에 관한 자세한 내용은 3장에서 다시 설명합니다.
애플리케이션이 제대로 동작하려면, 서버가 항상 가동되고 있어야 합니다. 또한, 새로운 서버를 도입하려면 적절한 하드웨어를 선정해 OS와 서버 애플리케이션을 설치하고 테스트해야 합니다. 중요한 데이터를 다루는 서버에서는 서버의 상태를 항상 감시하고 있으며, 뭔가 문제가 발생하면 바로 대처합니다. 데이터 백업도 항상 해두어야 합니다. 또 필요에 따라서는 처리 능력을 확장할 필요가 있습니다. 보안 대책도 중요합니다. 이처럼 서버 운용 관리에서 시간과 비용이 들어갑니다.
서버를 직접 관리 운용하지 않고, 인터넷을 통해( 인터넷을 경유하지 않고, 사설 네트워크를 경유하는 클라우드 서비스도 있습니다) 서버의 기능만 이용할 수 있게 한 것이 클라우드 서비스입니다. 인터넷은 구름 저편에 잇는 서버를 이용하는 이미지로, 구름(클라우드) 아이콘으로 자주 표현됩니다. 이런 서비스 방식은 인터넷을 경유하므로 클라우드 서비스라고 합니다.
덧붙여, 직접 서버를 운용 관리하는 기존 서버 운용 방법은 온프레미스라고 합니다.
클라우드 서비스 사업자가 서버를 도입하고 운용 관리합니다. 예를 들어, 파일 서버의 저장 용량이 부족해졌다면, 사용자는 서비스 계약을 변경하기만 하면 됩니다.
클라우드 서비스는 매우 편리하지만, 보안이나 가용성에 주의가 필요합니다. 자신의 관리가 미치지 않는 범위에서 데이터가 유지되는 점과 서비스를 이용할 수 없게 될 가능성도 있다는 점을 인식해 둡시다.
클라우드 서비스는 네트워크를 경유해 서버의 어느 부분을 사용자가 이용하 수 있게 하느냐에 따라서 다음 세 가지로 분류할 수 있습니다.
IaaS는 네트워크를 경유해 서버의 CPU와 메모리, 저장장치와 같은 하드웨어 부분을 이용할 수 있게 합니다. 사용자는 IaaS의 서버 상에서 다시 OS와 미들웨어, 애플리케이션을 추가합니다. IaaS를 이용해 클라우드 서비스 사업자의 서버에서 자유롭게 시스템을 만들어 이용할 수 있습니다.
PaaS는 네트워크를 경유해 서버의 플랫폼을 이용할 수 있게 합니다. 플랫폼이란 OS와 OS 상에서 동작하는 데이터베이스 드으이 미들웨어를 포함한 부분을 가리킵니다.
클라우드 서비스 사업자의 플랫폼에서 사용자는 사내 업무 시스템과 같은 독자적인 애플리케이션을 추가하여 자유롭게 이용할 수 있습니다.
SaaS는 네트워크를 경유해 서버의 특정 소프트웨어 기능을 이용할 수 있게 합니다.
일반 개인 사용자가 이용하는 클라우드 서비스는 대부분 SaaS이므로 가장 상상하기 쉬울 것입니다.
구체적인 SaaS의 예는 온라인 스토리지 서비스입니다. 온라인 스토리지 서비스에서는 사용자에게 네트워크를 경유해 파일 서버 기능을 제공합니다. 사용자는 자유롭게 파일을 저장하고 공유할 수 있습니다.