웹사이트 검색

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


소개

네트워킹에 대한 이해는 서버를 관리하는 모든 사람에게 중요합니다. 서비스를 온라인으로 전환하고 원활하게 실행하는 데 필수적일 뿐만 아니라 문제를 진단할 수 있는 통찰력도 제공합니다.

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

이 가이드는 운영 체제에 구애받지 않지만 서버에서 네트워킹을 활용하는 기능 및 서비스를 구현할 때 매우 유용합니다.

네트워킹 용어집

먼저 이 가이드 전체와 네트워킹에 관한 다른 가이드 및 문서에서 볼 수 있는 몇 가지 일반적인 용어를 정의합니다.

이러한 용어는 다음의 해당 섹션에서 확장됩니다.

  • 연결: 네트워킹에서 연결은 네트워크를 통해 전송되는 관련 정보 조각을 의미합니다. 일반적으로 말해서 연결은 데이터 전송 전에 설정되고(프로토콜에 제시된 절차에 따라) 데이터 전송이 끝날 때 해체될 수 있습니다.\n
  • 패킷: 패킷은 의도적으로 네트워크를 통해 전송되는 가장 작은 단위입니다. 네트워크를 통해 통신할 때 패킷은 한 끝점에서 다른 끝점으로 데이터를 (조각으로) 운반하는 봉투입니다.\n

패킷에는 소스 및 대상, 타임스탬프, 네트워크 홉 등 패킷에 대한 정보가 포함된 헤더 부분이 있습니다. 패킷의 주요 부분에는 전송되는 실제 데이터가 포함됩니다. 본체 또는 페이로드라고도 합니다.

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

네트워크 인터페이스는 물리적 장치와 연결되거나 가상 인터페이스의 표현일 수 있습니다. 동일한 시스템에 다시 연결하기 위해 대부분의 Linux 환경에서 사용할 수 있는 가상 인터페이스인 "루프백\ 장치가 이에 대한 예입니다.

  • LAN: LAN은 "로컬 영역 네트워크\를 의미합니다. 더 큰 인터넷에 공개적으로 액세스할 수 없는 네트워크 또는 네트워크의 일부를 나타냅니다. 가정 또는 사무실 네트워크는 LAN의 예입니다.\n
  • WAN: WAN은 "광역 네트워크\를 의미합니다. LAN보다 훨씬 더 광범위한 네트워크를 의미합니다. WAN은 일반적으로 대규모 분산 네트워크를 설명하는 데 사용하는 관련 용어이지만 일반적으로 인터넷을 의미합니다. , 전체적으로.

인터페이스가 WAN에 연결되어 있다고 하면 일반적으로 인터넷을 통해 연결할 수 있다고 가정합니다.

  • 프로토콜: 프로토콜은 장치가 통신하는 데 사용할 수 있는 언어를 정의하는 일련의 규칙 및 표준입니다. 네트워킹에서 광범위하게 사용되는 수많은 프로토콜이 있으며 종종 서로 다른 계층에서 구현됩니다.

일부 저수준 프로토콜은 TCP, UDP, IP 및 ICMP입니다. 이러한 하위 프로토콜에 구축된 애플리케이션 계층 프로토콜의 몇 가지 친숙한 예는 HTTP(웹 콘텐츠 액세스용), SSH 및 TLS/SSL입니다.

  • 포트: 포트는 특정 소프트웨어에 연결될 수 있는 단일 시스템의 주소입니다. 물리적 인터페이스나 위치는 아니지만 서버가 둘 이상의 응용 프로그램을 사용하여 통신할 수 있도록 합니다.\n
  • 방화벽: 방화벽은 서버에서 들어오고 나가는 트래픽을 허용할지 여부를 결정하는 프로그램입니다. 방화벽은 일반적으로 어떤 포트에서 허용되는 트래픽 유형에 대한 규칙을 생성하여 작동합니다. 일반적으로 방화벽은 서버의 특정 응용 프로그램에서 사용하지 않는 포트를 차단합니다.\n
  • NAT: NAT는 네트워크 주소 변환을 나타냅니다. 라우팅 서버로 들어오는 요청을 다시 패키지하여 LAN의 관련 장치 또는 서버로 보내는 방법입니다. 이것은 일반적으로 하나의 IP 주소를 통해 필요한 백엔드 서버로 요청을 라우팅하는 방법으로 물리적 LAN에서 구현됩니다.\n
  • VPN: VPN은 가상 사설망을 의미합니다. 개인 정보를 유지하면서 인터넷을 통해 별도의 LAN을 연결하는 수단입니다. 종종 보안상의 이유로 로컬 네트워크에 있는 것처럼 원격 시스템을 연결하는 데 사용됩니다.\n

접하게 될 다른 많은 용어가 있으며 이 목록은 완전하지 않습니다. 필요에 따라 다른 용어를 설명하겠습니다. 이 시점에서 다가올 주제에 대해 더 잘 논의할 수 있게 해주는 몇 가지 높은 수준의 개념을 이해해야 합니다.

네트워크 계층

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

이것이 의미하는 바는 통신이 작동하기 위해 서로 위에 구축된 여러 기술과 프로토콜이 있다는 것입니다. 각각의 연속적인 상위 계층은 원시 데이터를 조금 더 추상화합니다.

또한 이러한 유형의 트래픽을 처리하는 프로토콜 및 애플리케이션을 개발하는 데 시간과 에너지를 투자하지 않고도 새로운 방식으로 하위 계층을 활용할 수 있습니다.

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

데이터가 한 시스템에서 전송되면 스택의 맨 위에서 시작하여 아래로 필터링됩니다. 가장 낮은 수준에서 다른 시스템으로의 실제 전송이 발생합니다. 이 시점에서 데이터는 다른 컴퓨터의 계층을 통해 다시 이동합니다.

각 계층은 인접한 계층에서 수신한 데이터 주위에 고유한 "래퍼\를 추가할 수 있는 기능이 있으며, 이는 데이터가 전달될 때 이후 계층이 데이터로 수행할 작업을 결정하는 데 도움이 됩니다.

TCP/IP 모델

일반적으로 인터넷 프로토콜 제품군으로 알려진 TCP/IP 모델은 널리 채택된 계층화 모델입니다. 네 개의 개별 레이어를 정의합니다.

  • 애플리케이션: 이 모델에서 애플리케이션 계층은 애플리케이션 간 사용자 데이터 생성 및 전송을 담당합니다. 응용 프로그램은 원격 시스템에 있을 수 있으며 최종 사용자에게 로컬로 작동하는 것처럼 보여야 합니다. 이 통신은 피어 간에 발생한다고 합니다.\n
  • 전송: 전송 계층은 프로세스 간의 통신을 담당합니다. 이 수준의 네트워킹은 포트를 활용하여 다양한 서비스를 처리합니다.\n
  • 인터넷: 인터넷 계층은 네트워크의 노드에서 노드로 데이터를 전송하는 데 사용됩니다. 이 계층은 연결의 끝점을 알고 있지만 한 위치에서 다른 위치로 이동하는 데 필요한 실제 연결에는 관심이 없습니다. IP 주소는 주소 지정이 가능한 방식으로 원격 시스템에 도달하는 방법으로 이 계층에서 정의됩니다.\n
  • 링크: 링크 계층은 인터넷 계층이 주소 지정 가능한 인터페이스를 제공할 수 있도록 하는 로컬 네트워크의 실제 토폴로지를 구현합니다. 데이터를 보내기 위해 이웃 노드 사이에 연결을 설정합니다.\n

보시다시피 TCP/IP 모델은 추상적이고 유동적입니다. 이로 인해 구현이 대중화되었고 네트워킹 계층을 분류하는 지배적인 방법이 되었습니다.

인터페이스

인터페이스는 컴퓨터의 네트워킹 통신 지점입니다. 각 인터페이스는 물리적 또는 가상 네트워킹 장치와 연결됩니다.

일반적으로 서버에는 가지고 있는 각 이더넷 또는 무선 인터넷 카드에 대해 하나의 구성 가능한 네트워크 인터페이스가 있습니다.

또한 "loopback\ 또는 localhost 인터페이스라고 하는 가상 네트워크 인터페이스를 정의합니다. 이것은 단일 컴퓨터의 응용 프로그램 및 프로세스를 다른 응용 프로그램 및 프로세스에 연결하는 인터페이스로 사용됩니다. 이것을 " 많은 도구에서 lo 인터페이스.

많은 경우 관리자는 하나의 인터페이스를 인터넷 트래픽 서비스용으로 구성하고 다른 인터페이스는 LAN 또는 사설 네트워크용으로 구성합니다.

사설 네트워킹이 활성화된 데이터 센터(DigitalOcean Droplets 포함)에서 VPS에는 두 개의 네트워킹 인터페이스가 있습니다. "eth0\ 인터페이스는 인터넷 트래픽을 처리하도록 구성되고 "eth1\ 인터페이스는 사설 네트워크와 통신하도록 작동합니다.

프로토콜

네트워킹은 서로 다른 여러 프로토콜을 편승하여 작동합니다. 이러한 방식으로 하나의 데이터 조각은 서로 캡슐화된 여러 프로토콜을 사용하여 전송할 수 있습니다.

우리는 낮은 네트워킹 계층에서 구현된 프로토콜부터 시작하여 더 높은 추상화를 가진 프로토콜까지 작업할 것입니다.

매체 액세스 제어

매체 액세스 제어는 특정 장치를 구별하는 데 사용되는 통신 프로토콜입니다. 각 장치는 제조 시 인터넷의 다른 모든 장치와 구별되는 고유한 하드코딩된 미디어 액세스 제어 주소(MAC 주소)를 갖게 됩니다.

MAC 주소로 하드웨어 주소를 지정하면 상위 소프트웨어가 작동 중에 특정 장치의 이름을 변경할 수 있는 경우에도 고유한 값으로 장치를 참조할 수 있습니다.

MAC 주소 지정은 정기적으로 상호 작용할 가능성이 있는 저수준 링크 계층의 유일한 프로토콜 중 하나입니다.

IP

IP 프로토콜은 인터넷이 작동할 수 있도록 하는 기본 프로토콜 중 하나입니다. IP 주소는 각 네트워크에서 고유하며 이를 통해 시스템이 네트워크에서 서로 주소를 지정할 수 있습니다. TCP/IP 모델의 인터넷 계층에서 구현됩니다.

네트워크는 서로 연결될 수 있지만 트래픽은 네트워크 경계를 넘을 때 라우팅되어야 합니다. 이 프로토콜은 신뢰할 수 없는 네트워크와 동적으로 변경할 수 있는 동일한 대상에 대한 다중 경로를 가정합니다.

프로토콜에는 다양한 구현이 있습니다. 오늘날 가장 일반적인 구현은 123.123.123.123 패턴을 따르는 IPv4 주소이지만 IPv6 주소는 2001:0db8:0000:0000:0000:ff00:0042:8329 패턴을 따릅니다. 는 사용 가능한 IPv4 주소의 수가 제한되어 인기가 높아지고 있습니다.

ICMP

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

일반적으로 ICMP 패킷은 다른 종류의 패킷에 문제가 발생할 때 전송됩니다. 네트워크 통신을 위한 피드백 메커니즘으로 사용됩니다.

TCP

TCP는 전송 제어 프로토콜을 나타냅니다. TCP/IP 모델의 전송 계층에서 구현되며 안정적인 연결을 설정하는 데 사용됩니다.

TCP는 데이터를 패킷으로 캡슐화하는 프로토콜 중 하나입니다. 그런 다음 하위 계층에서 사용할 수 있는 방법을 사용하여 연결의 원격 종단으로 이를 전송합니다. 다른 한편으로는 오류를 확인하고 특정 조각을 재전송하도록 요청하고 정보를 하나의 논리적 조각으로 재조립하여 응용 프로그램 계층으로 보낼 수 있습니다.

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

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

TCP는 WWW, SSH 및 이메일을 포함하여 인터넷에서 가장 널리 사용되는 많은 용도로 선택되는 프로토콜입니다.

UDP

UDP는 사용자 데이터그램 프로토콜을 나타냅니다. TCP의 인기 있는 동반 프로토콜이며 전송 계층에서도 구현됩니다.

UDP와 TCP의 근본적인 차이점은 UDP가 신뢰할 수 없는 데이터 전송을 제공한다는 것입니다. 연결의 다른 쪽 끝에서 데이터가 수신되었는지 확인하지 않습니다. 이것은 나쁜 것처럼 들릴 수 있으며 많은 목적에서 그렇습니다. 그러나 일부 기능에서는 매우 중요합니다.

데이터 수신 확인을 기다릴 필요가 없고 데이터를 강제로 다시 보낼 필요가 없기 때문에 UDP가 TCP보다 훨씬 빠릅니다. 원격 호스트와의 연결을 설정하지 않고 확인 없이 데이터만 보냅니다.

간단한 트랜잭션이기 때문에 네트워크 리소스 쿼리와 같은 통신에 유용합니다. 또한 상태를 유지하지 않으므로 한 컴퓨터에서 여러 실시간 클라이언트로 데이터를 전송하는 데 적합합니다. 따라서 지연을 감당할 수 없는 VOIP, 게임 및 기타 애플리케이션에 이상적입니다.

HTTP

HTTP는 하이퍼텍스트 전송 프로토콜을 나타냅니다. 웹에서 통신의 기반을 형성하는 응용 계층에서 정의된 프로토콜입니다.

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

DNS

DNS는 도메인 이름 시스템을 의미합니다. 인터넷 리소스에 대해 사람에게 친숙한 이름 지정 메커니즘을 제공하는 데 사용되는 애플리케이션 계층 프로토콜입니다. 도메인 이름을 IP 주소에 연결하고 브라우저에서 이름으로 사이트에 액세스할 수 있도록 합니다.

SSH

SSH는 보안 쉘을 나타냅니다. 안전한 방식으로 원격 서버와 통신하는 데 사용할 수 있는 애플리케이션 계층에서 구현된 암호화된 프로토콜입니다. 종단 간 암호화 및 편재성으로 인해 이 프로토콜을 중심으로 많은 추가 기술이 구축됩니다.

우리가 다루지 않았지만 동등하게 중요한 다른 많은 프로토콜이 있습니다. 그러나 이것은 인터넷과 네트워킹을 가능하게 하는 몇 가지 기본 기술에 대한 좋은 개요를 제공해야 합니다.

결론

이 시점에서 일부 네트워킹 용어에 익숙해야 하며 서로 다른 구성 요소가 서로 통신할 수 있는 방법을 이해할 수 있어야 합니다. 이는 시스템의 다른 문서와 설명서를 이해하는 데 도움이 됩니다.

다음으로, 높은 수준의 읽기 환경 예제를 보려면 How To Make HTTP Requests in Go를 읽어보세요.