네트워킹 용어, 인터페이스 및 프로토콜 소개

소개

서버를 관리하는 사람에게는 네트워킹에 대한 이해가 중요합니다. 서비스를 온라인으로 제공하고 원활하게 운영하는 데 필수적일 뿐만 아니라 문제를 진단하는 통찰력을 제공합니다.

본 문서는 일반적인 네트워킹 개념에 대한 개요를 제공합니다. 용어, 일반적인 프로토콜, 그리고 네트워킹의 다른 계층의 책임과 특성에 대해 논의할 것입니다.

본 안내서는 운영 체제에 구애받지 않으며, 서버에서 네트워킹을 활용하는 기능과 서비스를 구현할 때 매우 유용할 것입니다.

네트워킹 용어집

먼저, 이 안내서와 네트워킹에 관한 다른 안내서와 문서에서 자주 볼 수 있는 일반적인 용어를 정의하겠습니다.

이 용어들은 이후에 해당 섹션에서 자세히 다루도록 확장될 것입니다:

  • 연결: 네트워킹에서 연결은 네트워크를 통해 전송되는 관련 정보의 조각을 의미합니다. 일반적으로 연결은 데이터 전송 전에 (프로토콜에서 정의한 절차를 따라) 설정되며, 데이터 전송이 끝난 후에 해체될 수 있습니다.

  • 패킷: 패킷은 의도적으로 네트워크를 통해 전송되는 가장 작은 단위입니다. 네트워크를 통해 통신할 때, 패킷은 데이터를 한 지점에서 다른 지점으로 (조각들로) 운반하는 봉투 역할을 합니다.

패킷은 소스와 대상을 포함한 패킷에 대한 정보, 타임스탬프, 네트워크 홉 등을 담고 있는 헤더 부분과 전송되는 실제 데이터를 담고 있는 본문 또는 페이로드라고도 불리는 부분으로 구성됩니다.

  • 네트워크 인터페이스: 네트워크 인터페이스는 네트워킹 하드웨어에 대한 모든 종류의 소프트웨어 인터페이스를 가리킬 수 있습니다. 예를 들어, 컴퓨터에 두 개의 네트워크 카드가 있다면, 각각에 연결된 네트워크 인터페이스를 개별적으로 제어하고 구성할 수 있습니다.

A network interface may be associated with a physical device, or it may be a representation of a virtual interface. The “loopback” device, which is a virtual interface available in most Linux environments to connect back to the same machine, is an example of this.

  • LAN: LAN은 “로컬 에어리어 네트워크”의 약자로, 인터넷에 대중적으로 액세스할 수 없는 네트워크 또는 네트워크의 일부를 가리킵니다. 가정이나 사무실의 네트워크가 LAN의 예시입니다.

  • WAN: WAN은 “광역 네트워크”를 의미합니다. LAN보다 훨씬 광범위한 네트워크를 말합니다. WAN은 일반적으로 대규모로 분산된 네트워크를 설명하기 위해 사용되는 용어입니다. 그러나 일반적으로 전체 인터넷을 의미합니다.

인터페이스가 WAN에 연결되어 있다고 한다면, 일반적으로 해당 인터페이스가 인터넷을 통해 접근 가능하다고 가정됩니다.

  • 프로토콜: 프로토콜은 장치간에 통신하기 위해 사용하는 언어를 정의하는 규칙과 표준의 집합입니다. 네트워킹에서는 많은 수의 프로토콜이 널리 사용되며, 종종 다른 계층에서 구현됩니다.

일부 하위 프로토콜에는 TCP, UDP, IP, ICMP가 있습니다. 이러한 낮은 수준의 프로토콜을 기반으로 구축된 응용 계층 프로토콜의 몇 가지 익숙한 예로는 웹 콘텐츠에 접근하기 위한 HTTP, SSH 및 TLS/SSL이 있습니다.

  • 포트: 포트는 특정 소프트웨어에 연결될 수 있는 단일 기계상의 주소입니다. 물리적 인터페이스나 위치가 아니지만, 서버가 여러 애플리케이션을 사용하여 통신할 수 있도록합니다.

  • 방화벽: 방화벽은 서버로 들어오거나 나가는 트래픽을 허용할지 결정하는 프로그램입니다. 방화벽은 일반적으로 어떤 종류의 트래픽이 어떤 포트에서 허용되는지에 대한 규칙을 생성하여 작동합니다. 일반적으로 방화벽은 서버의 특정 애플리케이션이 사용하지 않는 포트를 차단합니다.

  • NAT: NAT는 네트워크 주소 변환을 의미합니다. 이는 들어오는 요청을 라우팅 서버로 다시 패키징하여 LAN의 해당 장치 또는 서버로 보내는 방법입니다. 이는 일반적으로 물리적인 LAN에서 하나의 IP 주소를 통해 요청을 필요한 백엔드 서버로 라우팅하기 위해 구현됩니다.

  • VPN: VPN은 가상 사설망(Virtual Private Network)의 약자입니다. 이는 인터넷을 통해 별개의 LAN을 연결하면서 개인 정보를 보호하는 수단입니다. 이는 종종 보안상의 이유로 원격 시스템을 로컬 네트워크에 연결하는 데 사용됩니다.

여기에는 많은 다른 용어들이 있으며, 이 목록은 전체적으로 설명하는 것이 아닙니다. 필요에 따라 다른 용어를 설명해 드리겠습니다. 이 시점에서 우리는 앞으로 다룰 주제에 대해 더 나은 토론을 할 수 있도록 몇 가지 고수준 개념을 이해해야 합니다.

네트워크 계층(Network Layers)

네트워킹은 종종 호스트 간의 수평적인 토폴로지로 논의되지만, 구현은 주어진 컴퓨터나 네트워크 내에서 수직적으로 계층화됩니다.

이는 통신이 작동하기 위해 서로 쌓아 올린 여러 기술과 프로토콜이 있음을 의미합니다. 각각의 높은 계층은 원시 데이터를 약간 더 추상화합니다.

또한 더 낮은 계층을 새로운 방식으로 활용할 수 있게 해주며, 해당 유형의 트래픽을 처리하는 프로토콜과 응용프로그램을 개발하기 위해 시간과 노력을 투자하지 않아도 됩니다.

각 레이어링 체계에 대해 사용하는 언어는 사용하는 모델에 따라 크게 다릅니다. 레이어를 논의하는 데 사용되는 모델에 관계없이 데이터의 경로는 동일합니다.

데이터가 한 기계에서 전송되면, 스택의 맨 위에서 시작하여 아래로 필터링됩니다. 가장 낮은 수준에서는 실제로 다른 기계로의 전송이 이루어집니다. 이 시점에서 데이터는 다른 컴퓨터의 레이어를 통해 다시 올라갑니다.

각 레이어는 인접한 레이어로부터 받은 데이터에 자체 “래퍼”를 추가할 수 있으며, 이는 데이터가 전달될 때 이후 레이어가 데이터를 처리하는 데 도움이 됩니다.

TCP/IP 모델

TCP/IP 모델, 더 일반적으로 알려진 인터넷 프로토콜 스위트는 널리 채택된 레이어링 모델입니다. 이 모델은 네 개의 별도 레이어를 정의합니다:

  • 응용: 이 모델에서 응용 레이어는 응용 프로그램 간에 사용자 데이터를 생성하고 전송하는 것을 담당합니다. 응용 프로그램은 원격 시스템에 있을 수 있으며, 최종 사용자에게는 로컬에 있는 것처럼 작동해야 합니다. 이 통신은 피어간에 이루어진다고 말합니다.

  • 전송: 전송 계층은 프로세스 간의 통신을 담당합니다. 이 네트워킹 수준은 다른 서비스를 지정하기 위해 포트를 사용합니다.

  • 인터넷: 인터넷 계층은 네트워크에서 노드 간에 데이터를 전송하는 데 사용됩니다. 이 계층은 연결의 끝점을 알고 있지만 한 곳에서 다른 곳으로 이동하는 데 필요한 실제 연결에는 관여하지 않습니다. IP 주소는 원격 시스템에 대한 주소 지정 방법으로 이 계층에서 정의됩니다.

  • 링크: 링크 계층은 인터넷 계층이 주소 지정 가능한 인터페이스를 제공할 수 있도록 로컬 네트워크의 실제 토폴로지를 구현합니다. 이 계층은 데이터를 전송하기 위해 이웃 노드 간에 연결을 설정합니다.

보시다시피 TCP/IP 모델은 추상적이고 유연합니다. 이로 인해 구현하기가 인기 있었으며, 네트워킹 계층을 분류하는 주요 방법이 되었습니다.

인터페이스

인터페이스는 컴퓨터의 네트워킹 통신 지점입니다. 각 인터페이스는 물리적 또는 가상 네트워킹 장치와 관련되어 있습니다.

일반적으로, 서버에는 이더넷이나 무선 인터넷 카드마다 하나의 구성 가능한 네트워크 인터페이스가 있을 것입니다.

또한, “루프백” 또는 localhost 인터페이스라고 하는 가상 네트워크 인터페이스를 정의합니다. 이는 한 컴퓨터의 응용 프로그램과 프로세스를 다른 응용 프로그램과 프로세스에 연결하는 인터페이스로 사용됩니다. 이는 많은 도구에서 “lo” 인터페이스로 참조됩니다.

많은 경우, 관리자는 한 인터페이스를 인터넷 트래픽을 처리하기 위해 구성하고 다른 인터페이스를 LAN이나 사설 네트워크에 사용합니다.

프라이빗 네트워킹이 활성화된 데이터 센터(디지털오션 도플릿을 포함)에서는 VPS에 두 개의 네트워킹 인터페이스가 있을 것입니다. “eth0” 인터페이스는 인터넷에서의 트래픽을 처리하도록 구성되고, “eth1” 인터페이스는 사설 네트워크와 통신하기 위해 작동합니다.

프로토콜

네트워킹은 다양한 프로토콜을 상호적으로 적용하여 작동합니다. 이렇게 함으로써, 하나의 데이터 조각을 여러 개의 프로토콜로 캡슐화하여 전송할 수 있습니다.

우리는 하위 네트워킹 계층에서 구현된 프로토콜부터 높은 추상화를 가진 프로토콜까지 차례로 살펴볼 것입니다.

매체 접근 제어

매체 접근 제어는 특정 장치를 구별하기 위해 사용되는 통신 프로토콜입니다. 각 장치는 제조 과정에서 고유한 하드코딩된 매체 접근 제어 주소 (MAC 주소)를 받으며, 이는 인터넷 상의 다른 장치들과 구별됩니다.

MAC 주소를 사용하여 하드웨어에 접근하면, 소프트웨어가 해당 장치의 이름을 운영 중에 변경하더라도 고유한 값으로 장치를 참조할 수 있습니다.

MAC 주소 지정은 일반적으로 상호작용할 수 있는 저수준 링크 계층 프로토콜 중 하나입니다.

IP

IP 프로토콜은 인터넷이 작동하는 데 필수적인 프로토콜 중 하나입니다. IP 주소는 각 네트워크마다 고유하며, 기기들이 네트워크 상에서 서로 통신할 수 있도록 합니다. 이는 TCP/IP 모델의 인터넷 계층에서 구현됩니다.

네트워크들은 연결될 수 있지만, 네트워크 경계를 넘어갈 때는 트래픽이 경로 지정되어야 합니다. 이 프로토콜은 신뢰할 수 없는 네트워크와 여러 경로를 전환할 수 있는 동일한 목적지를 가정합니다.

프로토콜의 다양한 구현 방식이 있습니다. 오늘날 가장 일반적으로 사용되는 구현은 IPv4 주소로, 패턴은 123.123.123.123와 같습니다. 그러나 IPv4 주소의 수가 제한되어 있는 점으로 인해, 패턴이 2001:0db8:0000:0000:0000:ff00:0042:8329인 IPv6 주소가 인기를 얻고 있습니다.

ICMP

ICMP는 인터넷 제어 메시지 프로토콜을 의미합니다. 이는 기기들 간의 가용성이나 오류 상태를 나타내기 위해 메시지를 보내는 데 사용됩니다. 이러한 패킷은 ping이나 traceroute와 같은 다양한 네트워크 진단 도구에서 사용됩니다.

일반적으로 ICMP 패킷은 다른 종류의 패킷이 문제를 만났을 때 전송됩니다. 이는 네트워크 통신의 피드백 메커니즘으로 사용됩니다.

TCP

TCP는 전송 제어 프로토콜(Transmission Control Protocol)의 약자입니다. 이는 TCP/IP 모델의 전송 계층에 구현되며 신뢰성 있는 연결을 설정하는 데 사용됩니다.

TCP는 데이터를 패킷으로 캡슐화하는 프로토콜 중 하나입니다. 그런 다음 이를 하위 계층에서 사용 가능한 방법을 사용하여 연결의 원격 끝으로 전송합니다. 다른 쪽에서는 오류를 확인하고, 특정 부분을 재전송 요청하며, 정보를 하나의 논리적인 조각으로 재조립하여 응용 계층으로 보내는 것이 가능합니다.

이 프로토콜은 데이터 전송 전에 세 방향 핸드셰이크라는 시스템을 사용하여 연결을 구축합니다. 이것은 통신의 두 끝이 요청을 인식하고 데이터 신뢰성을 보장하기 위한 방법에 동의하는 방법입니다.

데이터가 전송된 후에는 비슷한 네 방향 핸드셰이크를 사용하여 연결이 해제됩니다.

TCP는 인터넷에서 가장 인기 있는 용도인 WWW, SSH 및 이메일을 포함한 많은 용도에 대한 프로토콜로 선택됩니다.

UDP

UDP는 사용자 데이터그램 프로토콜(User Datagram Protocol)의 약자입니다. 이는 TCP와 함께 가장 인기 있는 동반 프로토콜로서 전송 계층에 구현됩니다.

UDP와 TCP의 기본적인 차이점은 UDP가 신뢰성 없는 데이터 전송을 제공한다는 것입니다. 이는 연결의 다른 쪽에서 데이터가 수신되었는지 확인하지 않습니다. 이는 몇 가지 용도에는 좋지 않은 것처럼 들릴 수 있지만, 일부 기능에 극히 중요합니다.

데이터가 수신되었는지 확인을 기다릴 필요가 없고 데이터를 다시 보내지 않아도 되기 때문에 UDP는 TCP보다 훨씬 빠릅니다. 원격 호스트와의 연결을 설정하지 않고 확인 없이 데이터를 전송하기 때문입니다.

단순한 트랜잭션이기 때문에 네트워크 자원에 대한 조회와 같은 통신에 유용합니다. 또한 상태를 유지하지 않기 때문에 한 기기에서 여러 실시간 클라이언트로 데이터를 전송하는 데 적합합니다. 이는 VOIP, 게임 및 지연을 허용할 수 없는 기타 응용 프로그램에 이상적입니다.

HTTP

HTTP는 하이퍼텍스트 전송 프로토콜의 약자입니다. 웹 상에서의 통신을 위한 응용 계층에서 정의된 프로토콜입니다.

HTTP는 원격 시스템에게 요청하는 내용을 알려주는 여러 동사를 정의합니다. 예를 들어, GET, POST 및 DELETE는 요청된 데이터와 다른 방식으로 상호 작용합니다. 다양한 HTTP 요청의 예제를 보려면 Express에서 라우트 및 HTTP 요청 메서드 정의하는 방법을 참조하십시오.

DNS

DNS는 도메인 이름 시스템을 의미합니다. 이는 인터넷 자원에 대한 인간 친화적인 명명 메커니즘을 제공하기 위해 사용되는 응용 계층 프로토콜입니다. 이는 도메인 이름을 IP 주소에 연결하고 브라우저에서 이름으로 사이트에 접근할 수 있게 해줍니다.

SSH

SSH는 보안 셸을 의미합니다. 이는 응용 계층에서 구현된 암호화 프로토콜로, 안전한 방식으로 원격 서버와 통신할 수 있습니다. 이 프로토콜을 기반으로 다양한 추가 기술이 구축되었으며, 그 종단 간 암호화와 보급성 때문에 많은 기술들이 이를 활용합니다.

우리가 다루지 않은 많은 다른 프로토콜들도 동등한 중요성을 가지고 있습니다. 그러나 이를 통해 인터넷과 네트워킹이 가능해지는 몇 가지 기본 기술들에 대한 개요를 얻을 수 있을 것입니다.

결론

지금까지 네트워킹 용어에 대해 알아보고 다양한 구성 요소가 어떻게 서로 통신하는지 이해할 수 있을 것입니다. 이는 다른 기사와 시스템 문서를 이해하는 데 도움이 될 것입니다.

다음으로, 고수준의 실제 예제로, Go에서 HTTP 요청하는 방법을 읽어보시기 바랍니다.

Source:
https://www.digitalocean.com/community/tutorials/an-introduction-to-networking-terminology-interfaces-and-protocols