Stay Hungry Stay Foolish

데브코스

[데브코스] 0128 영상 정리

dev스카이 2026. 2. 9. 14:15

📡 DNS

DNS(Domain Name System)도메인 이름을 IP 주소로 바꿔주는 시스템이다. 예를 들어 아래 같은 웹사이트 주소를 우리는 도메인(정확히는 “도메인 이름”)이라고 부른다.

www.tistory.com
  • www : 흔히 말하는 호스트명(host name) 또는 서브도메인(subdomain) 라벨
    • www 말고도 mail, blog, api 등 다른 값이 올 수 있다.

그렇다면 도메인은 왜 필요할까?

웹사이트에 접속한다는 건, 내 컴퓨터(브라우저)가 그 사이트를 제공하는 서버에게 요청을 보내고 데이터를 받아오는 것이다.
이때 누구에게 연락하려면 전화번호가 필요하듯, 서버에게 요청하려면 IP 주소가 필요하다. 하지만 사이트마다 IP를 외우는 건 불가능하니, 외우기 쉬운 이름(도메인) 을 쓰고 실제 접속은 DNS가 전화번호부처럼 IP를 찾아주는 방식이다.

  • “전화번호부”는 어디에 있고 어떻게 동작할까?
    • 도메인 → IP 매핑 정보는 한 곳에 몰려 있지 않고, 다층적(계층적) 구조로 전 세계에 분산되어 저장·조회된다. 이 조회 과정을 우리가 흔히 말하는 DNS 질의(lookup) 라고 한다.

동작 예시: www.tistory.com 접속 과정

내 컴퓨터에서 www.tistory.com에 접속하려 한다고 가정하자.
현재 브라우저는 이 서버의 IP를 모른다.

  1. 브라우저/OS는 먼저 PC에 설정된 로컬 DNS 서버(보통 “재귀 DNS / 리졸버”) 에게
    “이 도메인(www.tistory.com)의 IP 알아?”라고 물어본다.
    • DNS 서버를 “네임서버”라고 부르기도 한다.
    • 로컬 DNS는 보통 통신사(ISP)에서 제공하는 것으로 자동 설정되지만, 사용자가 다른 것으로 바꿀 수도 있다.
    • 여기엔 해당 도메인 정보가 캐싱(저장) 되어 있을 수도 있고 없을 수도 있다.
  2. 캐시가 있으면 로컬 DNS는 즉시 IP를 반환한다.
    캐시가 없으면 로컬 DNS가 대신 “윗단계 DNS”들에게 물어보며 찾아간다.
  3. 로컬 DNS는 Root DNS에게
    “.com 도메인을 어디에서 찾으면 돼?”라고 물어본다.
    • 흔히 “루트 DNS 서버가 13개”라고 말하는데, 정확히는 13개의 루트 서버 ‘이름(A~M)’이 존재하고, 실제 물리 서버 인스턴스는 전 세계에 Anycast 형태로 훨씬 많이 분산되어 운영된다.
      (즉, 한국에도 루트 서버 인스턴스가 있을 수 있고, 가까운 곳으로 라우팅되는 구조다.)
  4. Root DNS는 “.com을 담당하는 TLD DNS(Top-Level Domain DNS) 쪽을 물어봐”라고 알려준다.
    → 로컬 DNS는 그 정보를 들고 .com TLD 쪽으로 간다.
  5. .com 담당(TLD) DNS는 이번에는
    “tistory.com의 정보를 최종적으로 가진 권한(authoritative) DNS 서버는 여기야”라고 알려준다.
  6. 로컬 DNS가 tistory.com의 권한 DNS 서버에 가서
    “그럼 www.tistory.com의 IP는 뭐야?”라고 물으면,
    권한 DNS가 www에 해당하는 IP(또는 CNAME 등)를 응답한다.
  7. 로컬 DNS는 그 결과를 브라우저(정확히는 OS/애플리케이션)에게 돌려주고,
    브라우저는 이제 얻은 IP로 실제 서버에 접속해서 웹페이지 데이터를 받아온다.
정리하면, 내 컴퓨터 → 로컬 DNS(리졸버) → Root → TLD(.com) → 권한 DNS(tistory.com) → IP 획득

 

DNS는 공격 대상이 되기도 한다 (DNS Spoofing)

DNS는 “어디로 가야 하는지(IP)를 알려주는 길 안내” 역할을 하니까 공격 표적이 되기도 한다. 예를 들어 사용자가 DNS에 IP를 물어보는 흐름을 가로채거나(또는 캐시를 오염시켜), 해커가 만든 가짜 사이트의 IP를 진짜처럼 알려줘서 그쪽으로 접속하게 유도할 수 있다. 이런 공격을 보통 DNS 스푸핑(Spoofing), 상황에 따라 DNS 하이재킹, DNS 캐시 포이즈닝(Cache Poisoning) 같은 말로도 부른다.

 

로컬 DNS 서버를 바꾸는 이유는?

로컬 DNS 서버는 일반적으로 통신사 것으로 세팅되어 있는데, 이를 수정하는 이유는 대표적으로

  • ISP 기본 DNS 대신 다른(해외/공용) DNS를 사용해 조회 결과/우회 경로가 달라지길 기대하는 경우 (국가/ISP 단에서 특정 도메인을 차단하거나 변조하는 환경에서 “다른 전화번호부”를 쓰는 느낌)
  • 또는 특정 서비스를 더 빠르게 이용하고 싶을 때 (가까운 리졸버를 쓰거나 캐시 효율이 좋아지는 등)

단, “DNS를 바꾼다 = 항상 우회 성공/항상 빨라짐”은 아니고, 네트워크 환경/차단 방식/캐시/라우팅에 따라 체감이 달라질 수 있다.

 

개발할 때 도메인이 필요한 이유

웹사이트를 개발해 배포하려면 보통 서버(또는 프론트 호스팅)에 고정된 접근 주소가 필요하고 사용자에게는 외우기 쉬운 주소(도메인) 를 제공하는 게 유리하다. 도메인은 구매할 수 있는 사이트가 많다.

 

A Record vs CNAME

A Record

  • 도메인을 서버의 IP에 직접 연결하는 레코드
  • 흔히 “직접 IP로 간다”는 느낌이라 단순하다.

CNAME

  • 도메인을 다른 도메인의 별명(alias)으로 연결하는 레코드
  • 즉 “이 도메인은 사실 저 도메인을 따라가”라고 지정하는 방식이다.
  • IP가 유동적으로 변할 수 있는 환경에서 유용하다.

예를 들어 AWS 나 Firebase 같은 곳을 쓰면, 서비스/인스턴스를 만들었을 때 직접 IP가 아니라 어떤 “이상한 주소(호스트명)”를 도메인에 연결하라고 하는 경우가 많다. 그 이유는 뒤에서 실제 IP들이 바뀌거나 여러 개로 운영되기 때문이고, 그래서 사용자는 그 “canonical name(정식 이름)”을 가리키도록 CNAME을 설정한다.

  • 장점: 제공자가 IP를 바꿔도 사용자는 CNAME만 유지하면 됨
  • 단점: 조회 과정에서 한 번 더 따라가는 단계가 생길 수 있음 (다만 현실에선 캐시/TTL 때문에 체감 차이는 크지 않은 경우가 많다)

🔢 IP(Internet Protocol)

IP란 컴퓨터가 네트워크상에서 서로를 식별하는 주소이다. 쉽게 말해 인터넷에 연결된 기기의 위치를 나타내는 주소라고 볼 수 있다.

  • IP는 컴퓨터가 인터넷에 접속한 네트워크 상 위치
  • 자주 바뀔 수 있음
  • 비유: 컴퓨터 = 이동식 트레일러, IP = 그 트레일러가 자리잡은 도로명 주소

 

IP 주소 형식과 IPv4

123.234.135.248
  • 이 주소는 0~255 사이의 숫자 4개로 이루어져 있으며, 이를 IPv4 형식이라고 한다.
  • IPv4는 처음 대중화된 인터넷 주소 규약이며, 현재까지도 널리 사용되고 있다.
  • IPv4는 256의 4승 개수의 주소를 가질 수 있으며, 대략 46억 개의 IP를 표현할 수 있다.

공인 IP와 사설 IP

46억 개의 IP로 전 세계 모든 기기를 충돌 없이 관리하기에는 한계가 있다. 이 문제를 해결하기 위해 IP는 공인 IP사설 IP로 나뉜다. 이를 주소 체계로 비유하면 다음과 같다.

서울시 개발구 코딩로 12 서버아파트 101동 202호

 

  • 서울시 개발구 코딩로 12 서버아파트까지는 공인 IP이다
  • 101동 202호는 사설 IP이다

 

하나의 공인 IP 아래에 여러 개의 사설 IP를 두고, 내부에서만 겹치지 않게 관리하면 한정된 IP 자원으로도 충분히 많은 기기를 사용할 수 있다. 공유기와 와이파이도 이러한 방식으로 동작한다. 하나의 공유기에 하나의 공인 IP가 할당되고, 그 아래에 연결된 컴퓨터들은 각각 다른 사설 IP를 부여받는다. 즉, 공인 IP는 동일하고 사설 IP만 다르다.

 

사설 IP의 접근 제한

사설 IP를 사용하는 컴퓨터는 공인 IP를 사용하는 서버나 외부 컴퓨터로 접근할 수 있다. 그러나 외부 컴퓨터에서 사설 IP를 사용하는 내부 컴퓨터로는 직접 접근할 수 없다. 이는 보안과 주소 관리 측면에서 매우 중요한 특징이다.

 

포트포워딩과 DMZ

내 컴퓨터에서 웹서비스를 운영하려면 내부 IP로 들어오는 요청을 특정 기기로 연결해야 한다. 이를 위해 사용하는 방법이 포트포워딩DMZ이다.

  • 포트포워딩은 특정 포트를 원하는 내부 기기에 하나씩 연결하는 방식이다
  • DMZ는 모든 포트를 하나의 내부 기기에 몰아서 연결하는 방식이다

정리하면, 사설 IP 환경에서 웹사이트나 서버를 운영할 때 포트를 개별적으로 나누어 주면 포트포워딩이고, 모든 포트를 한 기기에 열어주면 DMZ이다.

 

고정 IP와 유동 IP

IP는 또 다른 기준으로 고정 IP유동 IP로 나뉜다. 이렇게 나뉘는 이유는 사용할 수 있는 IP 자원이 제한적이기 때문이다.

IPv4 주소 46억 개 중 1억 개가 넘는 IP가 한국에 할당되어 있다. 이 IP들은 ISP(Internet Service Provider), 즉 인터넷 서비스 제공 업체들이 사용자에게 나누어 준다.

서버의 경우 IP가 계속 바뀌면 접속에 문제가 생기기 때문에 고정 IP를 사용한다. 하지만 고정 IP는 비용이 비싸다. 일반 가정이나 개인 기기에는 유동 IP를 사용한다. ISP가 주기적으로 IP를 회수하고, 현재 인터넷을 사용 중인 곳에 다시 할당하는 방식이다. 유동 IP는 고정 IP보다 저렴하고, IP가 자주 바뀌기 때문에 보안상 비교적 안전하다.

 

DDNS (Dynamic DNS)

가정집에서 웹사이트나 NAS 등을 운영하려면 추가적인 설정이 필요하다. 이때 사용하는 것이 DDNS(Dynamic DNS)이다. DDNS는 수시로 변경되는 유동 IP를 감지하여, 항상 동일한 도메인 주소에 연결해 주는 기술이다. 이를 통해 IP가 바뀌어도 동일한 도메인으로 안정적인 접근이 가능하다.

 

IPv6

IPv4의 주소 부족 문제를 해결하기 위해 등장한 것이 IPv6이다. IPv6는 16진수 4자리 블록 8개로 구성되어 있다. 2의 128승 개수의 주소를 표현할 수 있으며, 이는 약 3.4 × 10³⁸ 개에 해당한다. 현재는 IPv4와 IPv6를 함께 사용하는 추세이다.


🌍 인터넷과 웹

인터넷 vs 웹: "도로와 자동차"의 차이

가장 먼저 바로잡아야 할 오해는 '인터넷과 웹은 같다'는 생각이다. 결론부터 말하자면, 이 둘은 엄연히 다르다.

  • 인터넷 (Internet): 전 세계의 컴퓨터들을 연결하는 거대한 통신망(인프라)이다. 쉽게 말해 정보를 실어 나르는 '도로'라고 생각하면 된다. 1960년대 미 국방성의 아파넷(ARPANET)에서 시작되었다.
  • 웹 (World Wide Web): 인터넷이라는 도로 위를 달리는 서비스 중 하나다. 도로 위를 달리는 '자동차'나 '버스' 같은 존재다. 1990년대에 등장했다.

따라서 우리가 브라우저를 켜서 정보를 찾는 행위는 인터넷이라는 인프라를 통해 '웹'이라는 서비스를 이용하는 것이다. 인터넷 위에는 웹 말고도 이메일(Email), 파일 전송(FTP), 온라인 게임 등 다양한 서비스가 존재한다.

 

타임라인으로 보는 역사: 이메일이 형님이다?

흔히 웹이 인터넷의 전부라고 생각하기 쉽지만, 사실 이메일은 웹보다 훨씬 먼저 태어났다.

구분 인터넷(ARPANET) 이메일(Email) 웹(World Wide Web)
등장 시기 1969년 1971년 1990년
특징 네트워크의 시작 레이 톰린슨이 @ 기호 도입 팀 버너스리가 창시

웹이 나오기 전에도 사람들은 인터넷을 통해 텍스트 기반의 이메일을 주고받았다. 웹은 인터넷의 역사가 시작된 지 약 20년이 지나서야 등장한 서비스이지만, 직관적인 UI와 하이퍼텍스트 덕분에 세상을 가장 크게 변화시킨 주인공이 되었다.

 

팀 버너스리 (Tim Berners-Lee)

그가 정말 대단한 이유는 단순히 아이디어만 낸 게 아니라, 웹이 돌아가기 위한 필수 기술 표준을 혼자서 거의 다 만들었기 때문이다.

  1. HTTP (통신 규약): 컴퓨터끼리 정보를 어떻게 주고받을지 정한 규칙
  2. HTML (언어): 웹 페이지의 구조를 만드는 문법
  3. URL (주소): 정보가 어디 있는지 알려주는 고유 주소
  4. Web Browser/Server: 세계 최초의 브라우저와 서버 프로그램

"Public"으로 공개한 위대한 결정

팀 버너스리의 가장 위대한 점은 이 기술로 특허를 내서 억만장자가 되는 길 대신, 전 세계 누구나 공짜로 쓸 수 있게 공개(Public Domain)했다는 사실이다. 만약 그가 웹 기술을 유료화하거나 독점했다면, 지금 우리가 누리는 구글, 유튜브, 네이버 같은 자유로운 정보 생태계는 존재하지 않았을지도 모른다.


🔄 HTTP 프로토콜

요청(Request)과 응답(Response)의 형태로 이루어진 웹 통신 규약이다.

웹 서버와 클라이언트(Web Server & Client)

  • 웹 서버: 클라이언트의 요청을 처리하여 응답
  • 클라이언트: 웹 서버에 원하는 정보를 요청

동작 과정

  1. 클라이언트가 웹 서버에 index.html 파일을 요청(request)
  2. 웹 서버는 index.html을 응답(response)하여 클라이언트에게 전송
  3. 클라이언트의 웹 브라우저(Chrome, Microsoft Edge 등)는 index.html 파일을 해석하여 클라이언트에게 웹 페이지를 보여줌

웹 페이지(Web Page)

  • 클라이언트가 웹 서버에 정보를 요청한 후, 서버에서 보낸 정보를 담고 있는 문서
  • 기본적으로 HTML로 작성됨

웹 브라우저(Web Browser)

  • HTML로 작성된 웹 페이지를 해석하여 사용자에게 보여줌
  • 일종의 컴파일러로 생각될 수 있으며, W3C에서 이에 대한 표준을 제공함

W3C(World Wide Web Consortium) www.w3.org

  • 여러 참여기관들이 협력하여 웹 표준을 개발하는 국제 컨소시엄
  • 웹의 프로토콜과 가이드라인 개발

💻 웹 프로그래밍(Web Programming)

  • Front-End(프론트엔드)
    • 사용자가 직접 보고 상호작용하는 화면(UI)을 개발
    • HTML로 웹페이지의 뼈대를 구성하고, CSS로 웹페이지의 스타일을 구성
    • JavaScript로 사용자와 상호작용을 가능하게 하여 동적인 웹 페이지를 구성
  • Back-End(백엔드)
    • 서버, 데이터베이스, 비즈니스 로직 등 사용자 눈에 보이지 않는 부분을 개발
    • 주로 JAVA, Python, Ruby, PHP, SQL 등의 언어가 사용됨

웹 프로그래밍 언어

  • HTML : 웹 페이지의 구조를 정의하는 마크업 언어로 텍스트, 이미지, 링크 등의 요소를 배치하여 문서의 골격을 만든다.
  • CSS : HTML로 만든 구조에 디자인(색상, 크기, 위치 등)을 입히는 스타일 언어이다.
  • JS(JavaScript) : 웹 페이지에 동적인 기능을 추가하는 프로그래밍 언어이다. HTML이 구조, CSS가 디자인이라면, JavaScript는 동작과 로직을 담당한다.

 

'데브코스' 카테고리의 다른 글

[CSS] Flexbox 속성 한눈에 정리하기  (0) 2026.02.12
[데브코스] 0129 영상 정리  (0) 2026.02.10