1.1 인터넷의 작동 원리 🌐


📖 개요

인터넷이 어떻게 작동하는지 이해하는 것은 백엔드 개발의 첫 걸음이다. 컴퓨터들이 어떻게 서로 연결되어 통신하는지 알아본다.


🔢 1. IP 주소 (IP Address)

인터넷에 연결된 모든 장치는 숫자로 된 주소를 가진다.

IPv4

  • 192.168.0.1 같은 형태
  • 주소 고갈 문제가 있다

IPv6

  • 2001:0db8:85a3... 같은 형태
  • 더 많은 주소 할당 가능

공인 IP vs 사설 IP

  • 외부에서 접속 가능한 주소인지, 내부 공유기 안에서만 쓰이는 주소인지 구분하는 것이 백엔드 설정 시 매우 중요하다.

🔌 2. 컴퓨터 연결의 시작

2.1 인터넷이 어떻게 작동하는가?

컴퓨터들이 웹상에서 서로를 찾아내는 방법은 두 가지이다:

물리적 연결

  • 케이블을 통한 직접 연결

무선 연결

  • WiFi
  • Bluetooth 등

2.2 연결의 복잡성 문제

  • 2개의 컴퓨터를 연결하는 것은 간단하다
  • 하지만 더 많은 컴퓨터를 연결하려면?
  • 10개의 컴퓨터를 모두 연결하려면 45개의 케이블이 필요하다!
  • 이런 방식으로는 관리가 너무 어려워진다

🔄 3. 라우터의 등장

3.1 물리적 연결 문제 해결

그래서 물리적 연결을 해결하기 위해 나온 것이 “라우터”이다!

3.2 라우터가 있는 네트워크

  • 라우터가 있으면 n개의 케이블이 2-3개만 있어도 된다
  • 각 컴퓨터는 라우터에만 연결하면 된다
  • 라우터가 PC와 서버를 연결할 수 있게 해준다
[컴퓨터1] ──┐
[컴퓨터2] ──┤── [라우터] ──── [서버]
[컴퓨터3] ──┘

3.3 라우터의 역할

  • 여러 컴퓨터들을 하나의 네트워크로 연결
  • 데이터를 적절한 목적지로 전달
  • 네트워크 관리를 단순화

🌐 4. 네트워크에서 인터넷으로

4.1 네트워크의 확장

  • 처음에는 작은 네트워크에서 시작
  • 하지만 더 멀리 있는 네트워크와도 통신하고 싶어진다
  • 그래서 여러 네트워크들을 연결하게 된다

4.2 인터넷이란?

인터넷은 네트워크들의 네트워크이다!

  • 작은 네트워크들이 모여서 더 큰 네트워크를 만든다
  • 전 세계의 컴퓨터들이 서로 연결된다

🌍 5. ISP의 역할

5.1 ISP란?

ISP(Internet Service Provider)는 인터넷 서비스 제공업체이다.

  • 우리가 집에서 인터넷을 사용할 수 있게 해주는 회사들
  • 예: KT, SK브로드밴드, LG유플러스

5.2 ISP가 하는 일

  • 각 네트워크를 더 큰 인터넷과 연결
  • 인터넷 연결 서비스 제공
  • 전 세계 네트워크들을 중계

🏠 6. 호스팅 (Hosting)

웹사이트 파일(HTML, 서버 코드 등)을 24시간 켜져 있는 컴퓨터(서버)에 올려두는 서비스이다.

전통적 방식

  • 서버 컴퓨터 한 대를 빌리거나(Dedicated), 공간을 나눠 쓴다(Shared).

현대적 방식 (Cloud)

  • AWS, GCP 같은 클라우드 서비스에서 필요한 만큼 자원을 빌려 쓰는 방식이 대세이다.

🔍 7. DNS(Domain Name System)의 작동 원리

7.1 DNS란?

DNS(Domain Name System)는 사람이 읽을 수 있는 도메인 이름(예: www.example.com)을 컴퓨터가 읽을 수 있는 IP 주소(예: 192.168.1.0)로 변환하는 시스템이다. 이는 마치 전화번호부와 같은 역할을 하며, 인터넷 상의 모든 도메인에 대한 주소록이라고 할 수 있다.

7.2 DNS의 기본 작동 원리

DNS의 작동 원리는 크게 두 가지 형태로 나눌 수 있다:

1. 작동원리의 기본적인 형태

  • 클라이언트가 DNS 서버에 도메인에 대한 IP 주소를 요청
  • DNS 서버가 해당 도메인의 IP 주소를 가지고 있다면 응답
  • 클라이언트는 받은 IP 주소로 웹사이트에 접속

2. 복잡한 형태 (다수의 도메인과 외부 DNS)

  • 클라이언트가 Local DNS에 도메인 질의
  • Local DNS가 Root DNS에 질의
  • Root DNS가 TLD DNS 서버 정보 제공
  • Local DNS가 TLD DNS에 질의하여 도메인의 권한 있는 DNS 서버 정보 획득
  • Local DNS가 권한 있는 DNS 서버에 질의하여 IP 주소 획득
  • 최종적으로 도메인의 IP 주소를 클라이언트에게 전달

7.3 DNS 서버의 종류

DNS 시스템에는 여러 종류의 DNS 서버가 존재한다:

1. Local DNS 서버

  • ISP(인터넷 서비스 제공자)가 제공하는 DNS 서버
  • 도메인에 대한 IP 주소가 캐시되어 있으면 즉시 응답
  • 캐시가 없는 경우 다른 DNS 서버에 질의

2. Root DNS 서버

  • DNS 시스템의 최상위 서버
  • 전 세계에 13개의 루트 DNS 서버가 존재
  • TLD DNS 서버의 정보를 제공

3. TLD(Top Level Domain) DNS 서버

  • .com, .net, .org, .kr 등 최상위 도메인을 관리
  • 해당 도메인의 권한 있는 DNS 서버 정보를 제공

4. 권한 있는 DNS 서버(Authoritative DNS Server)

  • 실제 도메인의 IP 주소 정보를 가지고 있는 서버
  • 도메인 등록 시 지정한 네임서버
  • 최종적으로 도메인에 대한 IP 주소를 제공

7.4 DNS Cache

DNS 시스템의 효율성을 높이기 위해 캐시 시스템을 사용한다:

  • DNS Cache의 목적
    • 매번 DNS에 요청을 통해 IP를 찾아야 하는 비효율 감소
    • PC와 Local DNS 서버의 캐시를 활용하여 빠른 접속 가능
    • 캐시는 TTL(Time To Live) 값에 따라 일정 시간 후 만료

7.5 정리

DNS는 인터넷의 핵심 인프라로, 도메인 이름과 IP 주소를 매핑하는 중요한 역할을 수행한다. 계층적인 구조를 통해 효율적으로 도메인 정보를 관리하며, 캐시 시스템을 통해 빠른 응답 속도를 제공한다. 이러한 시스템 덕분에 우리는 복잡한 IP 주소 대신 기억하기 쉬운 도메인 이름으로 웹사이트에 접속할 수 있다.


🌐 8. 브라우저의 작동 원리

8.1 웹 브라우저

웹 서버에서 양방향 통신을 하며 HTML 등의 컨텐츠를 열고 하게 해주는 GUI 기반 프로그램이다.

8.2 통신 흐름도

graph LR
    사용자 -->|핸들링| 브라우저
    브라우저 -->|요청| 서버
    서버 -->|응답| 브라우저
    브라우저 -->|출력| 사용자

8.3 동작 원리 - 자원 요청

1. HTTP 프로토콜

  • DNS 서버에서 전달받은 IP주소와 URL 정보로
  • HTTP 프로토콜을 사용하여 HTTP 요청 메시지를 생성

2. TCP/IP 프로토콜

  • HTTP 요청 메시지를 TCP 프로토콜로 사용하여
  • 인터넷을 거쳐 해당 IP의 컴퓨터로 전송

3. 응답 처리

  • 그렇게 도착한 HTTP 요청 메시지는 다시
  • HTTP 프로토콜을 이용하여 URL 정보로 변환
  • 응답은 역순으로 전달

8.4 정리

브라우저는 웹 서버와의 통신에서 HTTP와 TCP/IP 프로토콜을 사용하여 자원을 요청하고 응답을 받아 처리하는 GUI 기반의 프로그램이다. 이를 통해 사용자는 웹 페이지를 쉽게 탐색하고 상호작용할 수 있다.


🔐 9. HTTP/HTTPS 프로토콜 이해

9.1 HTTP란?

HTTP는 HyperText Transfer Protocol의 약자이다. 웹 브라우저와 웹 서버가 서로 통신할 때, 사용되는 약속이다. 즉, 웹에서 데이터를 주고받기 위한 통신 규약이다.

HTTP의 통신과정: 클라이언트의 요청 -> 서버의 응답 이 요청 메시지에는 무엇을(naver.com, index.html, …), 어떻게(GET,POST, …), 누가(브라우저에 대한 정보) 등이 적혀있다.

서버의 응답은 크게 두가지가 있다.

  1. 처리 결과 (Status Code)
    • 200 OK, 404 Not Found, …
  2. 실제 데이터 (Body)
    • 요청한 웹페이지의 실제 내용(HTML, CSS, Javascript 파일 등)을 보여준다.

이렇게 간단한 요청과 응답의 반복이다.

9.2 HTTPS의 등장

HTTP는 평문 통신이기 때문에, 중간에 패킷을 가로채면 내용이 노출되는 보안 이슈가 있다. 이러한 보안 문제를 해결하기 위해 등장한 것이 HTTPS이다.

HTTPS는 SSL/TLS라는 특별한 기술을 사용해서 주고받는 데이터를 안전하게 암호화 한다.

그럼 여기서, 서버와 브라우저는 어떻게 서로만 알아볼 수 있는 암호화를 할 수 있을까?

9.3 SSL/TLS Handshake

1. Client Hello

  • 브라우저가 서버에게 (너 진짜임?) 증명을 요구한다.

2. Server Hello & Certificate

  • 서버는 신뢰할 수 있는 기관에서 발급받은 인증서(SSL 인가?)를 보여준다.
  • 이 인증서 안에는 웹사이트의 정보와 데이터를 암호화할 수 있는 공개키(Public key)가 있다.

3. Key Exchange

  • 브라우저는 서버가 준 인증서를 검증하고, 서버의 공개키를 사용하여 둘만 사용할 대칭키를 만든다.
  • 서버의 공개키로 잠겨있기 때문에, 그에 맞는 서버만 확인할 수 있다.

4. Secure Communication

  • 이제 브라우저와 서버는 둘만 아는 비밀 암호로 모든 데이터를 암호화해서 주고받는다.

9.4 HTTPS 필수인 시대

데이터의 중요성이 높아지는 만큼, 기본적인 웹사이트 보안은 HTTPS에서 시작한다.


🎯 10. 핵심 정리

10.1 인터넷 작동 원리 요약

  1. 물리적/무선 연결: 컴퓨터들을 연결하는 기본 방법
  2. 라우터: 복잡한 연결 문제를 해결하는 핵심 장비
  3. 네트워크: 라우터로 연결된 컴퓨터들의 그룹
  4. 인터넷: 네트워크들이 연결된 거대한 네트워크
  5. ISP: 우리를 인터넷에 연결해주는 서비스 제공업체

10.2 연결 흐름

[내 컴퓨터] → [라우터] → [ISP] → [인터넷] → [목적지 서버]