Home > Network > Network: 내 방에서 구글까지, 3초만에 어떻게 서로 요청과 응답을 주고 받을까?

Network: 내 방에서 구글까지, 3초만에 어떻게 서로 요청과 응답을 주고 받을까?

네트워크란 무엇인가


국제표준화기구(ISO/IEC)의 네트워크의 사전적 의미를 확인해봅시다.

하나 이상의 목적을 수행하기 위해 상호 연결된 노드(Node)들과 통신 링크(Link)들로 구성되어 데이터 통신을 가능하게 하는 독립된 체계

노드, 통신 링크 같은 어려운 말이 나오는데요. 더 쉽게 생각해보겠습니다.

먼저, 네트워크는 net + work의 합성어입니다. 네트워크를 찾아보면 그물망에 노드 즉, 여러 기기들이 걸려있는 사진을 많이 보셨을 겁니다.

통신 링크는 단순히 그물망의 선을 케이블이라고 할 수 있을 겁니다. 하지만 케이블 선을 아무리 늘린다고 해도 google의 있는 서버에 닿을 수 있을까요?

지금 컴퓨터에 연결되어 있는 인터넷(정확히는 이더넷) 케이블을 생각해봅시다. 방에 통신사 기사 아저씨를 불러서 설치한 이 케이블은 최종적으로 어디로 연결되어 있을 까요?

케이블이 없다면 휴대폰을 생각해봅시다. 휴대폰의 와이파이는 공유기 비밀번호를 입력해서 접속했을 것입니다. 그럼 공유기와 휴대폰이 연결되어 있구나 생각할 수 있겠죠. 그럼 이 공유기는 대체 뭐고 어떻게 인터넷 접속이 가능한 걸까요?

케이블 접속


컴퓨터에 꽂힌 케이블은 벽면의 RJ-45 포트로 들어갑니다. 이 선은 벽속을 타고 흘러 현관문 근처나 신발장 안에 있는 세대 단자함으로 모입니다.

세대 단자함을 나온 선은 아파트 배관을 타고 건물 지하의 메인 통신실로 내려갑니다.

이곳에는 통신사의 공유형 스위치 장비가 있습니다. 이 단계에서 수많은 케이블들이 하나의 두꺼운 광케이블로 묶이게 됩니다. 그리고 이때 전기 신호가 빛의 신호로 변환됩니다.

땅속을 통해 광케이블은 구나 시 단위로 존재하는 통신사 국사(전화국)에 도달합니다.이곳에는 거대한 코어 라우터와 NAT 장치, 그리고 사용자의 인증과 트래픽을 제어하는 인프라가 집결해 있습니다.

전화국에서 나간 패킷은 대한민국 전체를 잇는 통신망인 Backbone망에 진입하게 됩니다.

전화국을 나온 데이터는 국내외 모든 통신망과 대형 IT 기업들의 네트워크가 서로 만나는 거대한 교차로인 IX(인터넷 교환 센터)로 향합니다. 우리나라의 경우 KINX, KT 혜화/구로 국사 등이 대표적입니다. 이곳에서 트래픽이 KT망에서 SK망으로, 혹은 구글이나 넷플릭스의 전용망으로 환승하게 됩니다.

만약 접속하려는 서버가 국내(예: 네이버, 카카오)에 있다면, IX를 거쳐 가산, 판교, 춘천 등에 위치한 대규모 데이터 센터의 메인 프레임 서버 랙(Rack)에 꽂힌 랜선으로 연결됩니다.

만약 접속하려는 서버가 해외 구글 서버라면 어떻게 될까요? 물론 CDN 기술을 잘 적용해서 이럴 일은 잘 없겠지만 그렇다고 가정해봅시다.

패킷은 부산이나 거제도에 있는 해저 케이블 육양국(Landing Station)으로 이동합니다. 그곳에서 태평양 바다 깊은 곳에 깔린 태평양 횡단 광케이블을 타고 빛의 속도로 바다를 건넙니다.

그렇게 미국 육양국에 도착한 뒤, 미국의 대륙횡단망을 타고 구글의 초대형 데이터 센터 내부의 컴퓨터에 도달하게 될 것입니다.

네트워크 구분 (큰 틀)


net라고 하는 이 망은 그럼 어디서부터 어디까지를 망이라고 해야할까요?

사람들은 이 망을 거리, 권한, 연결 방식에 따라 구분해서 거시적으로 명칭을 붙여줬습니다. 이런 명칭을 붙이면 엔지니어들끼리 소통하기 편하겠죠?

  1. 거리
    LAN:100m 내외 / L1, 2
    WAN: 수십 km 내외, LAN 묶음 / L1, 2, 3

  2. 권한
    사설망: 외부 인터넷과 분리된 망
    공인망: 누구나 접속할 수 있게 공개된 망

  3. 연결 방식
    유선망: 케이블로 연결
    무선망: 전파로 연결

네트워크 구분 (작은 틀)


여기까지 본다면 L2의 mac 주소만 알아도 특정 기기를 지칭할 수 있는데 왜 L3의 IP를 써야 하는지 의문을 가질 수 있습니다.

mac 주소는 사람으로 치면 주민등록번호와 같습니다. 하지만 주민등록만 보고는 이 사람이 한국에 있는지 미국에 있는지 알 수 없을 겁니다.

그래서 나온게 IP입니다. 네트워크는 net+work로 노드들과 링크들로 이루어진 데이터 통신 체계라고 했습니다. 그렇다면 IP는 뭘 의미하는 걸까요?

IP의 사전적 의미를 확인해봅시다.

인터넷 프로토콜은 패킷 교환 컴퓨터 통신 네트워크가 서로 연결된 시스템에서 사용하도록 설계되었다. 이 프로토콜은 고정된 길이의 주소로 식별되는 송신지와 수신지 간에 데이터그램(Datagram)이라고 불리는 데이터 블록을 전송하는 기능을 제공한다. 또한, 필요한 경우 네트워크 전송 규격에 맞춰 긴 데이터그램을 분할(Fragmentation)하고 재조합(Reassembly)하는 기능을 제공한다.

IETF가 공식적으로 정의한 것입니다. 참고로 IP는 TCP/IP 4계층 모델을 만든 IETF기관이 정의한거라 OSI 7계층을 만든 ISO가 정의한게 아니라고 하네요.(OSI L3의 프로토콜은 IP가 아니라 사실 CLNP임)

각설하고 그래서 IP의 정의는 하나의 패킷을 여러 데이터그램으로 쪼개서 목적지로 배달하는 규칙이라고 생각하면 됩니다.

우리가 생각하는 x.x.x.x는 이 IP 즉, 프로토콜이 사용하는 여러 규칙 중 하나인 주소 규칙일 뿐입니다.

사람들이 “우리 서로 정보를 알아볼 수 있게 주소는 반드시 8비트씩 4개로 쪼개서 x.x.x.x 형태로 쓰자!”라고 한 것이죠.

이런 IP의 버전은 v4, v6가 있는데요, 원래는 ipv4로 모든 장치의 mac 주소를 매핑하기 어려워져 v6가 생겼으나 NAT 같이 하나의 공인 IP만 있어도 여러 대를 매핑해줄 수 있어서 IPv4를 많이 씁니다. 호환성 문제도 있구요. 분할 규칙, 수명 규칙 등 다양한 규칙이 있겠지만 주소 규칙이 각각 어떻게 되는지 살펴볼까요?

  1. IPv4: 32비트 크기로, 8비트씩 4개의 그룹으로 나뉨 / . 표기

  2. IPv6: 128비트 크기로, 16비트씩 8개의 그룹으로 나뉨 / : 표기

자, IP 주소는 하나의 mac 주소와 매핑된다고 했는데요. mac 주소를 가진 여러 기기를 링크로 묶은게 네트워크라고 했잖습니까? IP를 묶어서 표기하면 네트워크가 되지 않을까요?

그래서 나온 게 서브넷 마스크 입니다.

우리가 알고 있는 IP 주소는 사실 네트워크 주소와 호스트 주소로 이루어져 있습니다.

우리집 공유기가 220.73.145.45/24 형태의 공인 IP 주소라고 칩시다. 앞의 220.73.145 24비트가 네트워크 주소가 됩니다. WAN 선을 통해 통신사 기지국의 DHCP 서버로 요청을 보내면 그 근처 네트워크 220.73.145.x 중 하나를 할당받게 되는 거죠. 실제로 220.73.145.x를 사용하는 공유기들은 지리적으로 가까운 위치에 존재할 겁니다.

서브넷 관련해서 실제로 어떻게 서브넷팅하는지 한 가지 예시를 들어보죠. aws 에서 사용할 수 있는 우리회사의 VPC 주소는 192.168.1.0/24 라고 가정해봅시다. 그런데 4개의 서브넷이 필요하고 각 서브넷에는 20개의 IP주소가 필요할 때 조건을 만족하는 4개의 주소는 무엇일까요?

먼저 알아둬야 할 것은 AWS는 각 서브넷마다 5개의 IP 주소를 예약(기본 네트워크 주소, VPC 라우터, DNS 서버, AWS 예비, 네트워크 브로드캐스트 주소)한다는 것입니다.

그럼 각 서브넷 마다 20+5 총 25개의 IP 주소가 필요할 거고 2의 5승이 가장 가깝게 25를 포함한다는 것을 알 수 있습니다. 따라서 32개의 IP 주소씩 끊어서 할당 받도록 하면 되겠네요.

그럼 총 32비트의 IP 주소에서 5를 뺀 27비트를 네트워크로 고정하면 된다는 것을 알 수 있습니다. 따라서 192.168.1.0/27, 192.168.1.32/27, 192.168.1.64/27, 192.168.1.96/27 이렇게 서브넷을 구성하면 되겠네요.

다음에는 스위치와 같은 장치가 무엇인지, 그리고 어떻게 내 패킷이 목적지 IP 주소로 보내지는 지에 대해 적어보도록 하겠습니다. ᕕ( ᐛ )ᕗ