[TIL]웹은 어떻게 동작할까? (2)

김예진·2020년 9월 27일
0

TIL

목록 보기
24/40
post-thumbnail

바로 전 글에서 인터넷은 브라우저와 서버가 http로 응답과 요청을 통해 작동하며 http 이후에 오는 URL 주소를 통해 위치를 찾을 수 있으며 다음으로 나눌 수 있다고 했었다.

https:// www.youtube.com /watch?v=OFpLQS_zx9g

http - 프로토콜(the protocol)
www.youtube.com - 도메인(the domain)
/watch?v=OFpLQS_zx9g - 자원(the resource)

1. 도메인(domain)

도메인 또는 도메인 네임(Domain name)은 넓게 보면 외우거나 식별하기 어려운 IP 주소(예:240.10.20.1)를 example.com 처럼 기억하기 쉽게 만들어주는 네트워크 호스트 이름을 의미한다.


2. IP 주소

IP 주소는 Internet으로 통신하는 각 device(컴퓨터, 통신장비)에 부여된 고유한 값이다.
스마트폰이나 노트북부터 대규모 소매 웹 사이트의 콘텐츠를 서비스하는 서버에 이르기까지 인터넷상의 모든 컴퓨터는 숫자를 사용하여 서로를 찾고 통신하며, 이러한 숫자를 IP 주소라고 한다.

IP 주소는 인터넷에서 단말기별 인식 번호로 음성통화를 위한 전화번호와 동일한 개념이다.


3. DNS (Domain Name System)

DNS 또는 Domain Name System이란 도메인과 서버를 연결해주는 중간 서버로, 사람이 읽을 수 있는 도메인 이름(예: www.example.com)을 머신이 읽을 수 있는 IP 주소(예: 12.34.56.78)로 변환시켜 원하는 컴퓨터를 찾아갈 수 있도록 한다.

DNS 서버는 이름에 대한 요청을 IP 주소로 변환하여 최종 사용자가 도메인 이름을 웹 브라우저에 입력할 때 해당 사용자를 어떤 서버에 연결할 것인지를 제어. 이 요청을 쿼리라고 부른다.
서비스 예) Amazon Route 53, Cafe24 도메인관리, 가비아 네임서버 관리


+) DNS 서버 작동 순서

  • (1) 웹 사이트 요청 : 특정 웹 사이트 주소(www.example.com)를 주소창에 입력하면 DNS 조회 프로세스가 시작된다. OS와 브라우저 모두 먼저 자체 DNS 캐시를 살펴보고 정보가 이미 로컬에 저장되어 있는지 확인합니다. 그렇지 않은 경우 확인자에게 요청한다.

  • (2) Ask resolver : 로컬로 캐시 된 DNS 레코드가 확인되면 OS에서 확인자에게 묻습니다. 확인자는 일반적으로 ISP(인터넷 서비스 제공 업체)입니다. 먼저 자체 캐시를 확인하여 정보가 아직 로컬에 저장되어 있지 않은지 확인합니다. 그렇지 않은 경우 루트 서버에 요청합니다.

  • (3) 루트 서버에 문의 : 루트 서버는 요청의 마지막 섹션 (.com 부분)을 확인한다. 루트 서버는 웹 사이트의 IP 주소를 찾을 수 없지만 .com에 대한 최상위 도메인 (TLD) 서버가 어디에 있는지 확인자에게 알려준뒤, 해석기는 나중에 사용할 수 있도록 이 정보를 저장한다.

  • (4) TLD 서버에 질문 : 해석기는 계속해서 TLD 서버에 해당 웹 사이트의 IP 주소를 확인한다. TLD 서버는 필요한 정보를 제공 할 수 없지만 요청을 보낸다. TLD 서버는 해당 웹 사이트에 대한 이름 서버 목록을 확인자에게 제공한다. 해석기는 나중에 사용할 수 있도록 계속 정보를 저장해둔다.

  • (5) 권한있는 이름 서버에 문의 : 마지막으로 확인자가 권한있는 이름 서버가 무엇인지 알고 있으므로 이러한 이름 서버를 쿼리하고 필요한 IP 정보를 검색 할 수 있으며, 신뢰할 수있는 이름 서버에는 특정 도메인에 대한 모든 필수 정보가 포함되어 있다.

  • (6) IP를 캐시하고 브라우저에 반환 : 이제 해석기가 해당 도메인의 IP를 알고 있으므로 나중에 사용할 수 있도록 캐시한다. 이 시점에서 IP는 로컬로 캐시 된 OS로 전달된다. 그런 다음 OS는이 정보를 브라우저에 전달한다. 브라우저가 웹 사이트의 IP 주소를 알게되면 웹 사이트의 원본 서버에서 정보를 요청하고 수신 할 수 있다.

profile
Backend Developer 🌱 벨로그 내용을 티스토리로 이사중~!

0개의 댓글