소개
현대 기술 세계에서 어떻게 네트워킹이 작동하는지에 대한 심도 있는 지식을 갖추는 것은 필수 요건이 되었습니다. 서버 관리에 관여하고 있다면 이것이 어떻게 작동하는지 반드시 알아야 합니다. 서비스의 내부 작동 방식에 대한 상세한 지식을 갖추면 서비스를 올바르게 유지하는 데 도움이 됩니다. 또한 최선의 솔루션을 채택하고 연결을 원활하게 유지하는 데 도움이 됩니다.
이 가이드의 목표는 네트워킹의 세계를 탐색하는 데 필요한 필수 지식을 갖추도록 돕는 것입니다. 여기에는 네트워킹에서 사용되는 기본 개념뿐만 아니라 가장 일반적으로 사용되는 용어도 포함됩니다. 다양한 구성 요소에 대해 알면 문제를 최대한 빨리 예방하고 식별하는 데 도움이 됩니다. 그렇게 하면 문제를 신속하게 처리하고 다운타임을 최소화할 수 있습니다.
현재 서버를 관리하고 있든 향후에 관리할 예정이든, 이 튜토리얼을 지침으로 삼으십시오. 서버의 기능을 자세히 알아보기 전에 구성 요소와 특징을 파악하세요. 여기에서 네트워킹 및 서버 관리의 핵심 세부 사항을 확인할 수 있습니다. 시작해 봅시다!
가장 일반적인 네트워킹 용어
계층과 구성 요소를 자세히 알아보기 전에 이 환경에서 사용할 용어를 파악해야 합니다. 이 목록에는 친숙하게 들리는 용어가 많이 있습니다. 이 용어들은 우리 중 누구라도 일상적으로 사용하는 것들이지만, 대부분은 실제로 그 의미가 무엇인지 모릅니다. 서버 및 네트워킹의 맥락에서 이러한 기본 용어를 이해하도록 도와드리겠습니다. 이를 통해 많은 프로세스를 더 쉽게 따라하고 이해할 수 있을 것입니다. 가이드를 진행하면서 이러한 용어를 계속 사용하고 추가로 설명하겠습니다.
- 연결
네트워크는 다양한 연결로 링크된 구성 요소들의 망입니다. 하지만 네트워킹의 맥락에서 이것은 무엇을 의미할까요?
네트워킹에서 연결은 네트워크를 통해 이동하는 데이터 또는 정보를 구성합니다. 실제로 네트워크의 두 지점 간에 데이터를 전송하기 전에 연결을 설정해야 합니다. 환경의 프로토콜에 따라 이 연결을 설정하는 방법이 결정됩니다. 데이터 전송이 완료되면 연결을 닫을 수 있습니다.
- 패킷
네트워크의 기본 단위인 패킷에 오신 것을 환영합니다. 데이터가 유형의 물질이라고 상상해 보십시오. 다른 위치로 안전하게 배송하려면 다양한 패킷으로 정리해야 할 것입니다. 마찬가지로 디지털 네트워크에서도 전송 전에 데이터를 패킷에 담아야 합니다. 이는 데이터를 개별적인 조각으로 나누어 네트워크 내에서 통신을 더 쉽게 만듭니다.
데이터 패킷은 일반적으로 두 개의 주요 부분으로 구성됩니다. 헤더 부분과 메인 부분이 있습니다. 헤더 부분은 패킷의 본문보다 앞에 위치합니다. 여기에는 패킷과 그 세부 사항에 대한 정보가 포함되어 있습니다. 예를 들어, 패킷의 출발지, 목적지, 타임스탬프, 네트워크 홉 및 기타 여러 세부 사항이 포함될 수 있습니다.
패킷의 메인 부분은 예상대로 실제 데이터를 구성합니다. 바디(body) 또는 페이로드(payload)라고도 하며, 이는 네트워크의 다른 지점으로 전송하고자 하는 정보입니다.
- 인터페이스
인터페이스를 생각할 때 대시보드와 유사한 것을 떠올릴 수 있습니다. 이는 나머지 작업을 제어하기 위해 상호 작용할 수 있는 플랫폼입니다. 이러한 환경에서 인터페이스는 가상일 수도 있고 물리적일 수도 있습니다. 가상 또는 디지털 인터페이스는 소프트웨어를 통해 액세스합니다. 물리적 인터페이스는 물리적 장치 또는 일부 하드웨어와 연결됩니다. 연결된 특정 인터페이스를 사용하여 네트워크를 수정, 변경 및 제어할 수 있습니다.
- LAN
우리 중 대부분은 아마도 LAN 및 WAN 라는 말은 꽤 자주 사용됩니다. 하지만 LAN이 Local Area Network(근거리 통신망)의 약자라는 사실을 알고 계셨나요? 그 이름만으로도 작동 방식을 이해할 수 있습니다. Local Area Network는 데이터를 로컬 영역으로만 제한합니다. 즉, LAN에 있는 데이터는 나머지 인터넷에서 액세스할 수 없습니다. 집이나 사무실 네트워크와 같이 사용자가 설정한 경계 내에 머물게 됩니다.
- WAN
반면, WAN은 Wide Area Network(광역 통신망)의 약자입니다. 이미 짐작하셨겠지만, 이 네트워크는 더 넓은 범위를 커버합니다. 이러한 네트워크는 일반적으로 규모가 크고 먼 거리에 걸쳐 있으며, 종종 인터넷 전체를 가리키기도 합니다. 따라서 인터페이스가 WAN에 연결되어 있으면 인터넷을 사용하여 액세스할 수 있습니다.
- 프로토콜
프로토콜을 규칙서의 사용 설명서라고 생각하면 됩니다. 프로토콜은 해당 네트워크의 모든 구성 요소가 준수해야 하는 모든 규칙과 표준을 정의합니다. 여기에는 시스템이 내부적으로 통신하는 데 사용하는 언어가 포함되어 있습니다. 네트워킹에는 UDP, IP, HTTP 등 다양한 유형의 프로토콜이 사용됩니다. 일부는 하위 수준(low level)이고 다른 일부는 애플리케이션 계층(application layers)입니다. 이 가이드의 뒷부분에서 네트워킹 프로토콜의 세계를 자세히 살펴보겠습니다.
- 포트
머신의 포트는 주소입니다. 이 포트는 일반적으로 소프트웨어의 일부에 연결됩니다. 포트의 목적은 서버와 여러 종류의 애플리케이션 간의 통신을 가능하게 하는 것입니다.
- 방화벽
컴퓨터를 사용해 본 적이 있다면 방화벽에 대한 팝업을 보았거나 들어본 적이 있을 것입니다. 방화벽은 시스템에 보안을 제공하는 프로그램입니다. 시스템으로 들어오고 나가는 트래픽을 제한하고 모니터링함으로써 이를 수행합니다. 서버용 방화벽에 대해 이야기할 때, 이는 어떤 트래픽이 서버에 들어오고 나갈 수 있어야 하는지를 결정하는 프로그램입니다. 이를 위해 특정 규칙을 구성할 수 있습니다. 이러한 규칙을 사용하여 어떤 포트가 서버와 트래픽을 송수신할 수 있는지 결정할 수 있습니다. 또한 특정 포트를 차단하여 해당 포트와 서버 간의 통신을 방지할 수도 있습니다.
방화벽 구성 및 사용을 시작하려면 다음 튜토리얼을 살펴보세요.
- NAT
NAT는 Network Address Translation(네트워크 주소 변환)의 약자입니다. NAT는 특정 IP 주소의 요청을 관련 서버로 전달하는 데 사용되는 물리적 LAN에서 볼 수 있습니다. LAN의 백엔드 서버를 모니터링하고 들어오는 요청을 변환하여 정확한 라우팅을 수행합니다.
- VPN
VPN은 Virtual Private Network(가상 사설망)의 약자입니다. VPN은 보안 및 개인 정보 보호를 위해 사용할 수 있는 디지털 도구입니다. IP 주소를 마스킹하고 해커와 엿보는 눈으로부터 데이터 패킷을 보호합니다. 이를 통해 인터넷을 통해 서로 다른 LAN과 원격 시스템을 안전하게 연결할 수 있습니다.
다음 튜토리얼을 통해 VPN 연결 설정을 시작해 보세요:
- 방법 가이드: VPN 네트워크를 CloudSigma 인프라에 연결하기
- OpenVPN Access Server를 사용하여 Docker에서 자체 VPN 서버 실행하기
- Ubuntu 18.04에서 OpenVPN 설정하기
지금까지 네트워킹 세계에서 가장 기본적이고 흔히 사용되는 몇 가지 용어들을 살펴보았습니다. 물론 이 목록에서 모든 것을 다룰 수는 없습니다. 하지만 네트워크 계층과 프로토콜을 깊이 파고들면서 계속해서 배우게 될 것입니다. 이 용어들을 네트워킹 시스템에 대한 후속 지식을 쌓기 위한 기초로 삼으시기 바랍니다.
다양한 네트워크 계층
몇 가지 용어의 의미를 알았으니 이제 네트워크의 구성으로 넘어가 보겠습니다. 주어진 네트워크의 연결은 수평적 계층 구조로 볼 수 있습니다. 각 계층은 사용자 및 애플리케이션의 통신을 더 간단하게 만들기 위해 원시 데이터를 추상화하는 기술과 프로토콜로 구성됩니다. 목표는 다양한 유형의 트래픽을 처리하기 위해 새로운 프로토콜을 개발하는 데 필요한 시간과 노력을 줄이는 것입니다.
아래에서 볼 수 있듯이 네트워킹 계층에는 다양한 모델이 있습니다. 하지만 모델에 관계없이 데이터 경로는 동일합니다. 데이터는 사용자의 컴퓨터에서 전송될 때 경로의 맨 위에서 시작됩니다. 그리고 다양한 계층을 통과합니다. 전송의 끝에서 다른 컴퓨터로 전달됩니다. 다른 컴퓨터에서는 모든 계층을 거쳐 위로 올라갑니다. 각 계층은 이전 계층으로부터 받은 데이터를 감싸서 다음 계층이 데이터를 처리하는 데 도움을 줍니다.
여기서는 네트워킹 계층의 두 가지 모델인 OSI 모델과 TCP/IP 모델에 대해 설명합니다.

OSI 모델 및 TCP/IP 모델
OSI 모델
OSI 모델은 Open Systems Interconnect(개방형 시스템 간 상호 접속)의 약자입니다. 이 모델은 7개의 서로 다른 계층으로 구성되어 있습니다.
- 애플리케이션
이는 사용자 또는 귀하가 가장 많이 상호작용하는 가장 바깥쪽 계층입니다. 애플리케이션 계층을 통해 모니터링뿐만 아니라 구성도 할 수 있습니다. 네트워크 통신, 리소스 가용성 및 데이터 동기화에 대한 정보를 제공합니다.
- 프레젠테이션
이 계층은 리소스 매핑, 데이터 변환, 컨텍스트 생성을 포함한 여러 가지 작업을 처리합니다. 프레젠테이션 계층은 하위 수준의 데이터를 가져와 애플리케이션 계층이 이해할 수 있는 형태로 변환합니다.
- 세션
세션 계층은 네트워크의 연결을 담당합니다. 이 계층을 사용하여 새로운 연결을 생성하거나, 필요하지 않은 연결을 끊거나, 단순히 현재 연결을 유지할 수 있습니다.
- 전송
전송 계층의 역할은 이후 계층에 신뢰할 수 있는 연결을 제공하는 것입니다. 송수신하는 데이터의 무결성을 검증하여 연결의 신뢰성을 보장합니다. 즉, 후속 계층으로 보낸 데이터가 손실이나 손상 없이 온전하게 도착했는지 여부를 확인할 수 있습니다. 전송 중간에 일부 데이터가 누락된 경우, 이 계층은 이를 재전송하는 기능을 가지고 있습니다.
- 네트워크
네트워크 계층은 데이터에 라우팅을 제공하는 역할을 합니다. 네트워크를 구성하는 다양한 노드 간에 통신하며 컴퓨터 주소를 사용하여 데이터가 갈 곳을 알려줍니다. 그뿐만 아니라, 네트워크 계층은 노드 간의 용이한 전송을 위해 데이터를 더 작은 메시지로 나눕니다. 메시지는 목적지에 도착하면 취합되어 정확하게 조립됩니다.
- 데이터 링크
데이터 링크 계층은 네트워크 노드 간의 지속적이고 신뢰할 수 있는 링크를 유지하는 역할을 합니다. 물리적 연결과 연동하여 장치 간의 링크를 설정하고 유지합니다.
- 물리
마지막으로, 물리 계층은 연결이 존재하는 물리적이고 유형적인 장치들과 연동합니다. 이 계층에는 하드웨어뿐만 아니라 하드웨어가 사용하는 소프트웨어도 포함됩니다.
TCP/IP 모델
두 번째 모델은 TCP/IP 모델입니다. IP 또는 인터넷 프로토콜 스위트(Internet Protocol suite)로도 알려진 이 모델은 매우 대중적인 네트워킹 모델입니다. 비교적 더 추상적이고 유연한 계층화 모델이기 때문입니다. 이러한 유동성 덕분에 구현하기가 더 쉽습니다.
OSI 모델의 7개 계층과 달리 4개 계층으로만 구성되어 있습니다. 아래에서 볼 수 있듯이, 이러한 계층 중 상당수는 OSI 계층화 방식에서 볼 수 있는 일부 계층과 유사합니다.
- 애플리케이션
여기서 애플리케이션 계층의 역할은 데이터를 생성하고 전송하는 것입니다. 개별 애플리케이션은 원격 서버에 존재합니다. 각 애플리케이션은 사용자에게 로컬에서 작동하는 것처럼 보입니다. 애플리케이션 계층은 사용자 데이터를 생성한 다음 다양한 애플리케이션 간에 전송합니다.
- 전송
전송 계층은 시스템 내의 통신을 중재하는 역할을 합니다. 여기서 다시 포트가 중요해집니다. 전송 계층은 포트를 사용하여 네트워크의 서로 다른 서비스 간에 신뢰할 수 없는 연결 및 신뢰할 수 있는 연결을 설정합니다. 설정하는 연결 유형은 사용하는 프로토콜 유형에 따라 다릅니다.
- 인터넷
이 부분에서 IP 모델은 OSI 계층 모델과 달라집니다. 이 방식에서 인터넷 계층은 노드 간의 데이터 전송을 담당합니다. 연결 자체에는 관여하지 않습니다. 대신, 단순히 연결 엔드포인트에 대한 정보를 사용하여 데이터를 전송합니다. IP 주소를 통해 출발지와 목적지를 식별합니다.
- 링크
마지막으로, 링크 계층은 원격 시스템에 식별성을 부여하는 역할을 합니다. 로컬 네트워크와 이를 구성하는 노드들의 주소 지정 가능성을 확립합니다. 결과적으로 인터넷 계층이 데이터를 전송할 수 있게 해주는 것이 바로 이 계층입니다.
네트워크 인터페이스
네트워킹 계층의 용어와 기본 사항을 학습한 후에는 인터페이스로 넘어갈 수 있습니다. 우리 모두가 알고 있듯이, 인터페이스는 기본적으로 통신 지점입니다. 대부분의 서버는 각 이더넷 또는 무선 인터넷 카드당 하나의 인터페이스를 가집니다. 사용자의 선호도와 요구 사항에 따라 인터페이스를 구성할 수 있습니다. 네트워크의 각 인터페이스에는 그에 해당하는 네트워크 장치가 존재합니다. 이 장치는 가상일 수도 있고 물리적일 수도 있습니다.
서버가 설정하는 가상 네트워크 인터페이스 중 하나는 루프백(loopback) 또는 로컬호스트(localhost) 인터페이스입니다. 대부분의 도구에서는 이를 ‘lo’ 인터페이스라고 부릅니다. 이 인터페이스의 역할은 다양한 컴퓨터의 애플리케이션과 프로세스를 연결하는 것입니다.
시스템에 존재하게 될 또 다른 인터페이스는 인터넷으로 향하는 트래픽을 처리하기 위한 것입니다. 이는 보통 관리자가 설정합니다. LAN 또는 사설 네트워크를 위한 인터페이스가 필요할 수도 있습니다.
데이터 전송 프로토콜
네트워킹에 대한 기초 교육을 완성하기 위해 마지막으로 필요한 것은 프로토콜입니다. 프로토콜은 시스템 내의 동작을 정의하고 네트워크가 작동하도록 만드는 것입니다. 프로토콜은 서로 위에 겹쳐서 쌓이며, 데이터는 이 모든 프로토콜을 거쳐 전송됩니다.
다음으로, 여러분이 사용하거나 들어보았을 가장 일반적인 프로토콜 몇 가지에 대해 논의하겠습니다. 목표는 이들을 구분 짓는 요소가 무엇인지, 그리고 왜 특정 프로세스에서 이들이 중요한지 이해하는 것입니다.
- 미디어 접근 제어
우선, 링크 계층에서 작동하는 통신 프로토콜부터 시작하겠습니다. 미디어 접근 제어 프로토콜은 주소를 통해 다양한 장치를 구분할 수 있도록 도와줍니다. 미디어 접근 제어 또는 MAC 주소는 특정 장치의 식별 정보를 지정합니다.
각 장치는 제조될 때 MAC 주소를 부여받으며, 이는 완전히 고유합니다. 결과적으로 네트워크는 MAC 주소를 사용하여 인터넷상의 모든 장치를 식별할 수 있습니다. 즉, 소프트웨어가 장치의 이름을 변경하더라도 네트워크는 여전히 해당 하드웨어를 식별할 수 있음을 의미합니다.
- IP
IP 프로토콜은 네트워킹에서 가장 대중적인 프로토콜 중 하나입니다. 인터넷을 구동하는 프로토콜 중 하나이기 때문입니다. 우리 모두는 디지털 장치가 고유한 “IP 주소”를 가지고 있다는 것을 알고 있습니다. IP/TCP 모델의 인터넷 계층에 속하는 IP 프로토콜은 여러 가지 구현 방식을 가지고 있습니다. 가장 흔하게는 IPv4와 IPv6를 볼 수 있습니다. 후자는 IPv4의 개선된 버전입니다.
IP 프로토콜이 작동하는 방식은 단일 목적지와의 연결을 설정하기 위해 여러 경로를 생성하는 것입니다. 이는 트래픽이 네트워크를 교차할 때 신뢰할 수 없는 네트워크를 가정하기 때문입니다. 프로토콜은 경로 간을 동적으로 전환할 수 있습니다.
- ICMP
ICMP는 인터넷 제어 메시지 프로토콜(internet control message protocol)의 약자입니다. 이는 특히 ping 및 traceroute와 같은 네트워크 진단 도구에 유용한 프로토콜입니다. ICMP는 장치 간에 메시지를 전송하여 오류 및 가용성을 나타낼 수 있습니다. 이 프로토콜은 네트워크의 다른 데이터 패킷이 경로에서 문제를 겪을 때 패킷을 전송합니다. ICMP는 전송 중인 오류를 감지합니다.
- TCP
TCP는 전송 제어 프로토콜(transmission control protocol)의 약자입니다. IP/TCP 계층 모델의 전송 계층에 속하는 TCP는 데이터 패키징 및 전송에 관여합니다. 이는 우리의 인터넷을 지배하는 가장 중요한 프로토콜 중 하나입니다.
데이터 전송을 처리하기 전에 프로토콜은 연결을 설정해야 합니다. 이를 위해 TCP는 3방향 핸드셰이크(three-way handshake)를 사용합니다. 여기서 통신 회선의 두 엔드포인트는 요청을 수락하고 데이터 전송을 위한 신뢰할 수 있는 연결을 보장해야 합니다.
네트워크에서 다양한 기능을 수행합니다. 우선, 데이터를 패킷으로 감싸고 관련 연결을 통해 전송합니다. 둘째, TCP는 시스템의 오류를 검사합니다. 그뿐만 아니라 애플리케이션 계층을 위해 데이터 패킷을 조립할 수도 있습니다. 데이터가 목적지에 도달하면 TCP는 4방향 핸드셰이크를 사용하여 이를 소멸시킵니다.
- UDP
UDP는 사용자 데이터그램 프로토콜(user datagram protocol)의 약자입니다. 전송 계층에서도 사용되기 때문에 많은 사람들이 흔히 TCP와 결합하여 사용합니다. TCP와 다른 점은 신뢰할 수 없는 연결을 설정한다는 것입니다. 신뢰할 수 없는 데이터 전송이란 프로토콜이 연결의 반대편 끝에서 데이터가 안전하게 수신되었는지 여부를 확인하지 않는다는 것을 의미합니다.
어쨌든 왜 신뢰할 수 있는 연결 대신 신뢰할 수 없는 연결을 사용하는지 의아해할 수 있습니다. 하지만 UDP가 제공하는 것과 같이 신뢰할 수 없는 데이터 전송이 유용하게 적용되는 분야가 많습니다. 예를 들어, 사람들은 시간이 가장 중요한 애플리케이션에 UDP를 구현합니다. 데이터가 수신되었다는 확인을 기다리는 대신, 시스템은 단순히 자신의 종단에서 데이터를 전송합니다. 그렇기 때문에 게임이나 VOIP 같은 곳에서 UDP가 사용되는 것을 볼 수 있습니다.
- HTTP
HTTP는 하이퍼텍스트 전송 프로토콜(hypertext transfer protocol)의 약자입니다. 모든 웹사이트가 이 네 글자로 시작한다는 점을 고려하면 이 프로토콜이 익숙할 것입니다. 애플리케이션 계층에서 구현되는 HTTP는 시스템이 사용자가 요청하는 사항을 인식하도록 돕는 기능을 정의합니다.
예를 들어, 일부 기능에는 GET, POST, DELETE가 포함됩니다. 이들은 각각 데이터와 다르게 상호작용하며, 이름이 암시하는 동작을 수행합니다. 이와 같이 HTTP는 인터넷과의 또는 인터넷 상에서의 시스템 통신을 담당합니다.
- FTP
FTP는 파일 전송 프로토콜(file transfer protocol)의 약자입니다. 역시 애플리케이션 계층에서 구현되는 이 프로토콜은 호스트 간에 파일을 전송하는 역할을 합니다. 하지만 이 프로토콜은 안전한 프로토콜이 아니라는 점을 기억하는 것이 중요합니다. 그렇기 때문에 주로 공개적인 환경에서 사용됩니다.
- DNS
DNS는 도메인 네임 시스템(domain name system)의 약자입니다. 인터넷 리소스의 이름을 쉽게 지정할 수 있게 해주는 또 다른 애플리케이션 계층 프로토콜입니다. 이름은 사람이 이해하기 쉬우며 도메인을 IP 주소에 연결하여 쉽게 액세스할 수 있도록 합니다.
- SSH
SSH는 시큐어 셸(secure shell)의 약자인 애플리케이션 계층 프로토콜입니다. 이름에서 알 수 있듯이 종단 간 암호화 프로토콜입니다. 이를 사용하여 원격 서버와의 연결을 더 안전하게 만들 수 있습니다. 어디서나 사용되는 프로토콜이므로 이를 기반으로 많은 추가 기술이 구축되어 있습니다.
또한, 다음은 SSH 프로토콜 구현에 대한 심층 튜토리얼입니다:
- SSH 키 기반 인증을 사용하도록 Linux 서버 구성하기
- Ubuntu에서 SSH를 사용하여 원격 서버에 연결하는 방법
- 이 간단한 Bash 스크립트를 사용하여 클라우드 서버에 SSH 키를 자동으로 주입하기
결론
마침내 여러분은 이제 네트워킹의 기본 사항에 익숙해졌습니다. 용어를 미리 검토해 두면 경험이 더 수월해질 것입니다. 말할 것도 없이, 서버의 잠재력을 극대화할 수 있는 기회를 제공할 것입니다. 시스템 내에서 통신을 가능하게 하는 구성 요소와 연결을 알고 있기 때문입니다. 이 지식을 토대로 삼아 네트워킹 운영의 세계로 뛰어들어 보세요.
즐거운 컴퓨팅 되세요!
댓글
아직 댓글이 없습니다. 첫 번째로 작성해 보세요.