DNS

이태곤·2023년 8월 24일
0

Network

목록 보기
21/23
post-thumbnail

1. www.ooooo.com을 쳤을 때 일어나는 과정

  • Redirect, Caching, DNS, IP Routing & ARP, TCP Handshake를 통한 연결을 가지게 된다.
    이 후 요청을 통해 응답을 받게 되는 TTFB(Time To First Byte)시점 이후로 컨테츠 다운이 시작되고 브라우저 랜더링과정을 통해 사용자는 원하는 컨텐츠를 가진 화면을 볼 수 있게된다.
  1. Redirect: 사용자가 입력한 URL에 리다이렉션 설정이 되어 있다면, 다른 URL로의 리디렉션

  2. Caching: 캐시된 값이 존재한다면, 서버에 요청을 보내지 않고 캐시된 값을 사용하여 페이지를 빠르게 로드

    • 브라우저 캐시: 사용자의 브라우저 내에 콘텐츠를 저장하는 것
      • 쿠키, 로컬 스토리지 및 브라우저가 다운로드한 리소스(이미지, 스타일 시트, 스크립트 파일 등)
    • 공유 캐시: 클라이언트와 서버 사이에 위치하며, 다수의 사용자 간에 콘텐츠를 공유할 수 있는 캐시
      • Nginx와 같은 리버스 프록시 서버를 사용하여 구현
  3. DNS: 인터넷에서 사용되는 도메인 주소를 실제 IP 주소로 변환하여 컴퓨터 간에 통신할 수 있도록 해주는 시스템

    • 계층적인 도메인 구조를 이용하여, 요청한 FQDN(Fully Qualified Domain Name)을 IP주소로 변환
      → FQDN: Host(www) + Domain(naver.com)

    • DNS는 분산되어 세계 곳곳에 존재하며 계층 구조를 가지고 있어 다음과 같은 이점을 제공한다.
    1. 트래픽 분산: DNS 서버가 분산되어 있기 때문에 트래픽이 골고루 분산되어 서비스를 안정적으로 제공할 수 있다.
    2. 고장 대처: 여러 DNS 서버가 존재하므로 특정 서버의 고장 시 다른 서버로 자동으로 트래픽을 전환하여 서비스의 영속성을 유지할 수 있다.
    3. 유지보수: DNS는 중앙 집중적으로 도메인 이름과 IP 주소의 매핑 정보를 관리하고 분산된 방식으로 업데이트하거나 변경할 수 있다.
    4. 성능 향상: DNS는 지역에 따라 가장 가까운 서버의 IP 주소를 반환하여 사용자가 빠르게 서비스를 받을 수 있도록 도움을 주어 성능을 향상시킬 수 있다.
      → 물리적 거리 뿐만아니라, 네트워크 성능을 고려하여 사용자가 최적의 서버에 연결할 수 있도록 도와준다.

    • 계층 구조
    1. 사용자가 도메인 이름을 입력하면, Local DNS Name Server에게 도메인에 대한 IP 주소를 찾아달라는 요청을 보낸다.
      • Local DNS name server : 사용자가 도메인 이름을 입력하면 해당 도메인에 대한 IP 주소를 찾기 위해 가장 먼저 찾는 DNS 서버이며, 자주 호출되는 DNS name에 대해서 캐싱을 한다.
    2. 만약 로컬 DNS 네임 서버에 도메인에 대한 정보가 없다면, 해당 DNS 서버는 Root DNS Server에게 쿼리를 전송한다.
      • Root DNS Server: 계층 구조의 최상위에 위치하며, 모든 도메인에 대한 정보를 갖고 있지는 않지만, TLD에 대한 DNS 서버 정보를 가지고 있다
      • Top-Level Domain (TLD): 최상위 도메인을 관리하고 해당 도메인 아래에 있는 도메인의 DNS 정보를 저장하고 제공하는 역할
        → 도메인 네임은 계층 구조로 표현되고 뒤쪽에 위치할수록 상위 계층에 해당하는 도메인이다.
        → 국가 코드 최상위 도메인(ccTLD)와 일반 최상위 도메인(gTLD)
    3. 루트 DNS 서버는 TLD에 대한 정보를 로컬 DNS 네임 서버에게 제공한다.
    4. 로컬 DNS 네임 서버는 이제 TLD DNS 서버로 쿼리를 전송하고, TLD DNS 서버는 해당 도메인의 DNS 서버 정보를 제공한다.
    5. 로컬 DNS 네임 서버는 해당 도메인의 DNS 서버에 질의를 보내고, 도메인 이름에 해당하는 IP 주소를 받아옴으로써 도메인 네임에 해당하는 IP 주소를 사용자에게 반환해준다.

    • 예시
    1. 로컬 DNS 네임 서버로부터 Root DNS Server정보를 받아온다.
    2. 루트 DNS 서버에게 질의를 하고 TLD에 대한 DNS 서버 정보를 가져온다.
      → .com
    3. com DNS의 DNS Server는 갖고 있는 도메인 중에서 yahoo.com에 대한 DNS Server를 제공한다.
    4. yahoo.com의 DNS Server는 해당하는 도메인에 대한 IP주소를 제공한다.


    • DNS name resolution: DNS 서버를 여러 개 거치면서 주소를 알아내는 과정
    1. Iterated query: Contacted server가 다음으로 Contact 해야하는 서버 정보를 제공해주는 방식
      → Local DNS name server가 IP 주소를 찾기 위해 root DNS server에게 요청을 보내면 root DNS server는 TLD DNS server 정보를 제공해준다.
    2. Recursive query: Contacted server로부터 계속적인 재귀 요청을 통해 Authoritative DNS server로부터 IP 주소를 가져와서 Local DNS name server에게 전달해주는 방식
      → 상위 계층 DNS 서버에 상대적으로 큰 부하를 줄 수 있다.
      → Authoritative DNS server: 정확한 도메인 주소에 해당하는 IP 주소를 관리하는 server


    • DNS Caching: Local DNS name server는 자주 사용되는 DNS 정보를 캐싱하여 저장한다.
      → TLD서버와 같이 빈번하게 사용되는 정보는 local DNS name server에 캐싱함으로써 요청되는 정보를 빠르게 제공할 수 있다.
      → Time-to-Live(TTL) 값에 따라 일정 기간 동안 유지되며, TTL이 만료되면 정보가 삭제된다.
  1. IP Routing & ARP

    • IP Routing: 목적지 IP 주소를 기준으로 데이터를 안전하고 효율적으로 목적지까지 보내기 위한 경로를 결정
    • ARP: IP 주소를 물리적인 MAC 주소로 매핑
  2. TCP 연결: TCP 핸드셰이크 및 SSL 설정 등을 통해 연결 설정

  3. 콘텐츠 다운로드 및 TTFB(Time To First Byte): 서버는 클라이언트의 요청에 대한 응답으로 웹 페이지의 콘텐츠를 전송한다.

    • TTFB (Time To First Byte): 서버가 클라이언트의 요청을 받아 첫 번째 바이트를 전송하기까지 걸린 시간
  4. 브라우저 랜더링: 수신한 데이터를 기반으로 브라우저 랜더링 과정을 거쳐 하나의 이미지로 랜더링을 하여 사용자에게 화면 제공

0개의 댓글