꼭 알아야 하는 네트워크 동작 구조와 원리
AWS를 쓰는데 네트워크에 대한 이해가 왜 필요할까요? 그 이유는 클라우드 컴퓨팅 기술을 기반으로 AWS가 제공하는 서비스가 클라우드 네트워킹이기 때문입니다. AWS의 네트워크 환경을 이해하기에 앞서 기본적으로 네트워크에서 자주 사용되는 용어를 알아보겠습니다.
1. 네트워크란 무엇인가?
네트워크Network는 쉽게 생각하면 두 대 이상의 컴퓨터가 연결되어 통신할 수 있는 형태를 의미합니다. 즉 여러 대의 컴퓨터가 통신 기술을 이용하여 그물망처럼 상호 연결되어 있는 구조를 가리키며, 여러 대의 컴퓨터는 각각 다른 컴퓨터와 직접적으로 연결되어 통신합니다. 네트워크 상에 있는 컴퓨터들은 서로 데이터를 전송하거나 파일을 공유할 수 있으며, 디지털 미디어를 네트워크를 통해 재생할 수 있으며 광대역 인터넷 연결을 공유를 통해 인터넷에 접속하여 정보를 검색하고 전송할 수 있습니다. 이런 데이터 통신을 가능하게 하기 위해 네트워크에서는 다양한 프로토콜과 기술을 사용합니다.
2. 통신 규약, 프로토콜
프로토콜Protocol은 컴퓨터에서 데이터를 교환하기 위해 정해진 순서나 규약, 신호의 전기적 규칙, 통신에서의 송수신 순서 등을 정한 규칙의 체계를 말합니다. 즉, 프로토콜은 ‘통신하기 위해 지켜야 할 약속이자 규칙’입니다. 예를 들어 한국어로 인사를 건냈을 때 상대방이 영어 혹은 외국어로 대답한다면 알아들을 수 있을까요? 인사를 주고받는 상황에서 서로 사용하는 언어가 다를 경우 상대방의 언어를 알아들을 수 없기 때문에 의사소통에 문제가 발생할 수 있습니다.
컴퓨터 간의 통신에서도 마찬가지로 서로 다른 규칙을 가진 때에는 데이터를 올바르게 해석하기 어려울 수 있습니다. 컴퓨터나 전자기기의 원활한 통신을 위해 교환되는 자료형식에 대해 상호 합의를 하고 어떤 프로토콜을 사용할지 규칙을 정했습니다. 이런 규칙을 통신 프로토콜이라고 합니다. 예를 들어 이메일을 보낼 때는 SMTPSimple Mail Transfer Protocol 프로토콜을 사용하여 이메일 서버에 이메일을 전송합니다. 홈페이지를 열람할 때는 웹브라우저가 HTTPHyperText Transfer Protocol 프로토콜을 사용하여 웹 서버로부터 웹페이지를 요청하고 받아옵니다.
자주 사용되는 통신 프로토콜은 무엇이 있는지 다음 표를 통해 알아봅시다.
이 외에도 다양한 통신 프로토콜이 존재하며 통신에 필요한 상황과 요구사항을 고려하여 적절한 프로토콜을 선택하고 활용하는 것이 중요합니다. 적절한 프로토콜을 이용하여 효율적이고 안전한 통신을 할 수 있으며 원활한 네트워크 환경을 구축할 수 있습니다. 이 책에서는 AWS 클라우드를 잘 이해하기 위해 꼭 알아야 하는 프로토콜인 IP를 자세히 설명합니다. IP는 서버 간 통신의 핵심이며, 웹 서버와 같은 서비스를 운영하거나 이해하기 위해 꼭 알아야 하는 내용입니다. 다음 내용을 통해 IP 자세히 알아봅시다.
3. IP
IPInternet Protocol는 인터넷에 연결된 장치를 식별할 수 있도록 각각에 부여된 고유 주소입니다. 각 IP 주소는 해당 컴퓨터의 신원을 나타내며 이를 기반으로 데이터를 주고받을 수 있습니다. IP 주소는 IPv4와 IPv6 두 가지 버전이 있습니다. 각 버전이 왜 생겼고 특징은 무엇인지 상세히 알아봅시다.
IPv4와 IPv6
IPv4는 version 4의 약자로 32비트 주소로 약 43억 개의 IP 주소를 제공합니다. IPv4는 전 세계적으로 사용된 첫 번째 인터넷 프로토콜이자 현재까지 가장 널리 사용되는 버전으로, 전 세계가 공용으로 사용하고 인터넷 사용자 수가 급증하면서 IPv4가 고갈될 문제 상황에 처했습니다. 이런 문제를 해결하기 위해 등장한 것이 IPv6입니다. IPv6는 IP version 6의 약자로 IPv4의 주소 체계를 128비트 크기로 확장하여 제공하는 차세대 인터넷 프로토콜 주소로 340간 개의 IP 주소를 제공합니다. 그러나 현재 대다수의 웹사이트와 네트워크가 아직은 IPv4를 주로 사용하고 있어서 기존의 인프라와 호환성 문제 등이 아직 많습니다. 또한 IPv6를 지원하지 않는 웹사이트들이 많이 있기 때문에 IPv6의 보급과 전환은 아직까지 완전히 이루어지지 않았습니다. 그렇기 때문에 IPv4와 IPv6를 동시에 지원하는 이중 스택 방식을 사용하여 네트워크를 운영하는 경우도 있습니다. AWS도 IPv4와 IPv6 두 가지 버전을 지원하고 있지만 아직까지 IPv4의 네트워크 환경 구성이 주를 이루고 있습니다. 이 책에서는 현재 대다수 웹사이트와 네트워크가 주로 사용하는 IPv4 주소를 IP 주소라 칭하겠습니다.
IP 주소 구조 살펴보기
컴퓨터를 사용하는 사람이라면 누구나 IP 주소를 가지고 있습니다. 앞의 그림은 IPv4 주소 형태로, 가장 널리 사용되고 있기 때문에 이를 바탕으로 IP 주소 구조가 어떻게 이루어져 있는지 살펴보겠습니다.
우리가 보는 IP 주소는 그림처럼 사람이 이해하고 기억하기 쉽도록 10진수로 변환하여 사용하고 있습니다. 하지만 IP 주소는 사실 0과 1로만 표기하는 이진수 32자리로 구성되어 있습니다. IP는 일반적으로 4개의 숫자 사이에 마침표로 구분하여 표시하며, 이 4개의 숫자는 각각 8비트씩 4 그룹으로 나누어진 것으로 이렇게 8개의 비트가 한데 모인 것을 옥텟octet이라 합니다.
▶ 이진수로 표기된 IP 주소는 사람이 알아보기 어렵기 때문에 10진수로 변환하여 사용합니다. ▶ 0 또는 1을 나타내는 정보의 최소 단위를 비트(bit)라고 합니다.
4. IP 주소 체계
IP 주소 체계에서는 네트워크 주소와 브로드캐스트 주소가 존재하며, 이 주소들은 사용할 수 없는 주소로 간주됩니다. 네트워크 주소는 해당 네트워크의 첫 번째 주소를 나타내며, 네트워크 전체 대역대를 의미하기 때문에 사용할 수 없는 주소입니다. 예를 들어 192.168.1.0은 네트워크의 첫 번째 주소로 ‘192.168.1.1 ~ 192.168.1.5는 192.168.1.0의 네트워크에 속해 있다’라고 말할 수 있습니다. 브로드캐스트 주소는 해당 네트워크의 마지막 주소를 나타내며, 이 주소는 해당 네트워크 상의 모든 장치에게 데이터를 전송하는 데 사용되는 주소입니다. 따라서 브로드캐스트 주소 또한 사용할 수 없는 주소로 간주됩니다. 예를 들어 192.168.1.255는 네트워크 마지막 주소인 브로드캐스트 주소를 나타냅니다.
IP의 종류
IP 주소는 공인 IP 주소와 사설 IP 주소로 나누어지게 되며, 공인 IP 주소는 인터넷에서 전 세계적으로 유일한 주소로 사용됩니다. 이런 IP 주소는 인터넷 서비스 제공업체에 의해 할당되며, 인터넷을 통해 직접 접근할 수 있는 주소입니다. 공인 IP 주소와 사설 IP 주소로 나누어진 이유는 IPv4의 주소 고갈 문제 때문입니다. 이로 인해 모든 네트워크 장치에 공인 IP 주소를 할당하는 것은 현실적으로 불가능합니다. 따라서 인터넷에 직접 연결되는 컴퓨터나 라우터에는 인터넷 서비스 제공업체를 통해 공인 IP 주소를 할당받고, 가정이나 회사 내부의 컴퓨터와 장치들은 사설 IP 주소를 사용하는 방식이 도입되었습니다. 사설 IP 주소는 비공개적인 네트워크에서 사용되는 주소입니다. 이 주소는 개인적인 네트워크나 회사 내부 네트워크에서 사용됩니다. 그렇다면 클래스에서 네트워크 ID와 호스트 ID는 무엇을 의미할까요?
네트워크 규모로 나눈 IP 클래스 이해하기
IP 주소는 네트워크 규모에 따라 A ~ E 클래스로 나누어져 있습니다.
일반적으로는 A ~ C 클래스까지 사용합니다. D와 E 클래스는 멀티캐스트 혹은 연구 및 특수 용도로 사용되는 주소이기 때문에 일반적으로 A ~ C 클래스만을 사용하고 있습니다.
클래스와 네트워크 ID와 호스트 ID 관계
클래스에서 네트워크 ID는 특정 네트워크를 식별하는 데 사용되는 부분입니다. 예를 들어 회사에서 C 클래스의 192.168.1.0 네트워크 주소를 할당했다면, 이 네트워크를 식별하는 네트워크 ID는 192.168.1입니다. 호스트 ID는 네트워크 내에서 특정한 컴퓨터를 식별하는 데 사용됩니다.
예를 들어 네트워크 ID가 192.168.1이고 호스트 ID가 0이라면 네트워크의 첫 번째 주소와 브로드캐스트 주소를 제외하고 1~254까지의 IP 주소를 사용할 수 있습니다. 따라서 이 192.168.1.0 네트워크 대역에서 A 컴퓨터에는 192.168.1.1 IP 주소를 할당하고, B 컴퓨터에는 192.168.1.2 IP 주소를 할당하여 네트워크 내에서 각 컴퓨터를 식별하는 데 사용됩니다. 여기서 1과 2는 각 컴퓨터를 식별하는 고유의 호스트 ID 즉 IP 주소입니다.
5. 서브넷팅
A 클래스는 매우 큰 네트워크 주소 범위를 가지고 있어 IP 주소 16,777,214 개를 할당할 수 있습니다. 그러나 실제로 하나의 네트워크에서 이렇게 많은 IP 주소를 할당하거나 많은 컴퓨터를 운영하는 일은 드물며, 이로 인해 네트워크가 혼잡해지는 문제가 발생할 수 있습니다. 각 클래스의 네트워크를 작은 단위로 나누어 운영해 이런 문제를 해결할 수 있으며, 이런 기술을 서브넷팅Subneting이라고 합니다.
서브넷팅은 주어진 IP 주소 범위를 여러 작은 네트워크로 나누는 과정을 의미하며, 이렇게 나누어진 각 네트워크를 서브넷Subnet이라고 합니다. 서브넷팅을 통해 작은 단위로 나누어진 서브넷은 네트워크를 더욱 효율적으로 관리할 수 있게 하며, 네트워크를 더욱 보안성 있게 구성할 수 있고, 트래픽을 분산시켜 성능을 향상시킬 수 있습니다.
서브넷팅을 했다면 IP 주소는 어떻게 표현될까요? 서브넷팅을 하면 일반적인 클래스의 네트워크가 더 작은 단위로 나뉘어 IP주소로 표현됩니다. 이렇게 작은 단위로 나눈 네트워크는 IP 주소만으로는 네트워크 ID와 호스트 ID를 구분하기 어려울 수 있습니다. 이를 해결하기 위해 서브넷 마스크를 사용합니다. 서브넷 마스크는 IP 주소와 함께 사용되어 네트워크 ID와 호스트 ID를 구분하는 데 사용됩니다. 서브넷 마스크는 2진수로 표현되며, IP 주소의 각 비트를 네트워크 ID와 호스트 ID로 식별할 수 있게 나누어줍니다. 서브넷 마스크는 32비트로 A 클래스는 255.0.0.0.0, B 클래스는 255.255.0.0 C 클래스는 255.255.255.0으로 식별됩니다. 서브넷 마스크를 2진수와 10진수로 표기하면 복잡하고 알아보기 어려울 수 있기 때문에 일반적으로 프리픽스prefix 표기법을 사용합니다.
프리픽스 표기법은 서브넷 마스크를 2진수로 표기한 후, 이진수에서 연속된 1 개수를 세어서 해당 값을 /로 표기하는 방법입니다.
예를 들어 B 클래스의 서브넷 마스크 255.255.0.0을 프리픽스 표기법으로 나타내면 /16이 되고, C 클래스 255.255.255.0을 프리픽스 표기법으로 나타내면 /24가 됩니다.
예를 들어 회사에서 할당받은 IP 주소가 192.168.1.0/24이고 4개의 서브넷으로 나눈다고 가정합니다.
현재 할당 받은 IP 주소는 32비트 중 24비트를 사용하고 있으며, 네트워크 범위는 192,168.1.0 ~ 192.168.1.255 범위까지 사용할 수 있습니다. 서브넷팅을 할 때는 호스트 ID를 사용하여 서브넷을 구성할 수 있습니다.
현재 할당받은 IP 주소는 C 클래스이므로 사용할 수 있는 비트는 4옥텟 8비트에 해당합니다. 이 8개의 비트를 사용하여 각 서브넷에 할당하면, 2개의 비트를 사용하여 4개의 서브넷을 구성할 수 있습니다. 2개의 비트만을 사용했으므로 프리픽스에 2를 더하고, 각 서브넷에 할당한 비트를 계산합니다. 서브넷 B의 경우 ‘128 x 0 + 64 x 1 + 32 x 0 + 16 x 0 + 8 x 0 + 4 x 0 + 2 x 0 + 1 x 0 = 64’와 같이 계산할 수 있습니다. 이렇게 계산한 결과로 서브넷 주소를 나타낼 수 있습니다.
호스트 ID에서 2개 비트를 사용하여 서브넷을 구성했으므로 이 2개 비트를 서브넷 ID라고 합니다(2개 비트를 사용한 이유는, 그래야 00, 01, 10, 11 4가지 경우가 나와 서브넷을 4개 가질 수 있기 때문입니다).
서브넷 마스크와 네트워크 개수에 따른 네트워크 범위는 다음 표에서 확인할 수 있습니다. 여기서 네트워크 개수는 서브넷을 의미합니다.
4개 서브넷으로 나누었다면 서브넷 마스크는 11000000이 되며, 각 서브넷은 64개의 IP 주소를 할당받을 수 있습니다. 각 서브넷당 64개의 IP를 할당받는다고 생각하면, 서브넷을 다음과 같이 나눌 수 있습니다.
서브넷 A: 0부터 63까지의 IP 주소를 할당받습니다.
서브넷 B: 64부터 127까지의 IP 주소를 할당받습니다.
서브넷 C: 128부터 191까지의 IP 주소를 할당받습니다.
서브넷 D: 192부터 255까지의 IP 주소를 할당받습니다.
이렇게 각 서브넷은 서로 겹치지 않는 IP 주소 범위를 할당받아 서브넷팅을 완료할 수 있습니다.
하지만 이런 클래스에도 단점은 있습니다. 클래스 기반의 IP 주소 할당 방식은 주소 공간의 일부를 네트워크 ID로, 나머지를 호스트 ID로 나누어 할당하는 방식입니다. 이 방식은 간단하고 직관적이지만, 주소 공간의 사용이 효율적이지 않을 수 있습니다. 예를 들어 클래스 A는 대규모 네트워크에 사용되지만 필요 이상으로 많은 IP 주소를 가지고 있어 IP 낭비가 발생하거나 클래스 C는 작은 네트워크를 위한 것이지만 사용할 수 있는 IP 수가 매우 제한 적일 수 있습니다. 이런 문제를 해결하기 위해 CIDRClassless Inter-Domain Routing라는 기술을 이용합니다. CIDR는 IP 주소 할당에 있어 클래스 기반의 제한된 구조를 극복하기 위한 기술입니다. CIDR를 사용하면 IP 주소를 클래스에 의존하지 않고 유연하게 할당할 수 있으며, 이를 통해 IP 주소의 낭비를 줄일 수 있습니다.
CIDR를 활용한 서브넷팅도 조금 전 설명했던 계산 방법과 같습니다. 10.0.0.0/16이라는 CIDR가 주어졌을 때, 6개 서브넷으로 나눈다고 가정합니다.
6개의 서브넷으로 나누는 데 3개의 비트를 사용하기 때문에 프리픽스는 19가 되고, 2진수를 10진수로 변환하면 각 서브넷은 32개 IP 주소를 할당받을 수 있습니다.
서브넷 A : 0부터 31까지의 IP 주소를 할당받습니다.
서브넷 B : 32부터 63까지의 IP 주소를 할당받습니다.
서브넷 C : 64부터 95까지의 IP 주소를 할당받습니다.
서브넷 D : 96부터 127까지의 IP 주소를 할당받습니다.
서브넷 E : 128부터 159까지의 IP 주소를 할당받습니다.
서브넷 F : 160부터 191까지의 IP 주소를 할당받습니다.
이런 CIDR 기술은 AWS에서 Amazon VPC를 생성하고 클라우드 환경에서 네트워크 환경을 구성할 때 사용됩니다.
라우팅
IP만으로는 데이터를 주고받을 수 없습니다. 어떤 경로로 데이터를 보낼지 설정할 필요가 있는데, 이것을 라우팅(Routing)이라고 합니다. 라우팅은 일반적으로 라우터(Router)라는 장비가 수행하며, 라우터를 사용하면 다른 네트워크로 데이터를 보낼 수 있습니다. 라우터에는 라우팅 테이블(Routing Table)이 있어서 경로를 저장하고 관리합니다.
예를 들어 192.168.1.1의 IP 주소를 가진 A 컴퓨터에서 B 컴퓨터로 데이터를 전송하려면 라우팅 테이블에 전송하고자 하는 경로를 등록해야 합니다. AWS에서는 라우터 장비 대신 라우팅 테이블을 별도로 생성하여 라우팅을 관리할 수 있습니다. 이를 통해 사용자는 네트워크 트래픽을 관리하고 효율적으로 라우팅할 수 있습니다.
