DNS

  • 사람이 기억하기 쉬운 도메인 이름과 호스트의 주소를 매핑

네트워크 주소

  • MAC 주소 : NIC 의 주소
  • IP 주소

DNS server

  • 계층적 도메인 구조

서브 도메인( 하위 도메인 )

  • example.com
    • blog.example.com shop.example.com support.example.com forum.example.com
  • 도메인의 일부인 도메인

각 도메인을 담당하는 도메인 서버

  • ROOT 네임 서버
    • TLD(Top-Level Domain) 서버의 위치 정보를 포함
  • TLD 서버
    • Top-Level Domain
  • Authoritative DNS 서버 : 찾고자 하는 도메인의 IP주소를 저장하는 최종 서버
  • local DNS 서버 : 클라이언트가 가장 먼저 찾는 DNS 서버 (DNS Resolver)

local DNS 서버 주소

  • 명시적 설정
    • Public DNS
  • 자동 설정
    • ISP

DNS 서버 동작

  • 반복적 질의
  • 재귀적 질의

DNS 에 저장 된 정보

  • DNS 레코드( 자원 레코드 )
  • A 레코드 : 도메인에 대한 IPv4 주소
    • 도메인에 대한 1:1 매칭
  • AAAA 레코드 : 도메인에 대한 IPv6 주소
    • 도메인에 대한 1:1 매칭
  • CNAME 레코드
    • 하나의 도메인이나 하위 도메인을 다른 도메인으로 전달
    • IP 주소를 제공하지 않음
  • MX 레코드
    • 이메일을 이메일 서버로 전송
  • NS 레코드
    • 네임 서버 주소
  • SOA 레코드
    • 도메인에 대한 관리자 정보
  • TXT 레코드
    • 관리자가 레코드에 텍스트 메모를 저장할 수 있음
    • 이 레코드는 종종 이메일 보안에 사용됨
  • SRV 레코드
    • 특정 서비스에 대한 포트를 지정
  • PTR 레코드
    • 리버스 조회에서 도메인 이름을 제공함

DNS 캐시

  • TTL 기간동안 DNS 저장

자원과 자원의 식별

네트워크 상에서 자원 이란?

  • 네트워크로 주고 받을 수 있는 모든 정보
    • file,Image,HTML,XML,JSON

URI

  • Uniform Resource Identifier
  • 자원을 식별 할 수 있는 문자열

URI 분류

  • URL
    • Uniform Resource Locator
    • 위치 기반 자원 식별 ( Locator )
  • URN
    • Uniform Resource Name
    • 이름 기반 자원 식별 ( Name )

URL

웹 브라우저의 개발자 도구의 네트워크 탭에서 확인 할 수 있음

  • Window
    • F12
  • Mac
    • command + option + i

웹 서버와 웹 어플리케이션 서버

서버 : 대답하는 대상 ( Response ) 클라이언트 : 요청하는 대상 ( Request )

서버가 응답해야 하는 자원

  • 정적인 자원 : 언제 / 어디서 / 누가 봐도 변하지 않는 정보 (e.g. HTML , Image …)

  • 동적인 자원 : 언제 / 어디서 / 누가 보는지에 따라 변할 수 있는 정보

    • 사용자 이름 , DB
  • 웹 서버

    • 정적인 자원을 응답
    • APACH , MS IIS , NGINX
  • 웹 어플리케이션 서버

    • 동적인 정보를 생성해 응답
    • Apache Tomcat , JBoss , IBM WebSphere

웹서버 , 웹 어플리케이션 서버를 사용할 때 장점

  • 과부하 방지
    • 정적 자원 , 동적 자원에 따라 다른 서버에 할당
  • 보안 상의 이점
    • 웹서버를 거쳐서 어플리케이션 서버에 접속할 때 보안이 유리?
  • 여러 웹 어플리케이션 서버 연동 용이

HTTP의 특성

HTTP의 기본 특성

  • 요청-응답 기반 클라이언트-서버 구조 프로토콜
    • HTTP 클라이언트 ( HTTP 요청메세지 )
    • HTTP 서버 ( HTTP 응답 메세지 )
    • 서버 간에도 HTTP 메세지를 주고 받을 수 있음
  • 미디어-독립적 프로토콜
    • 어떤 형태의 데이터도 HTTP 메세지를 보낼 수 있음
    • HTML, IMAGE , JSON , XML , FILE , etc
  • 비연결성 프로토콜
    • HTTP 1.0 , HTTP 1.1 , HTTP 2.0 은 TCP 기반
    • TCP 는 연결성 프로토콜
    • 현재 HTTP는 비연결성 프로토콜
      • 이유
      • 다수의 클라이언트가 연결을 시도할 경우
      • 연결을 유지하는 동안 서버의 자원 소모가 너무 큼
  • 스테이트리스 프로토콜
    • 스테이트리스 : 클라이언트의 상태를 기억하지 않음
    • 스테이트풀 프로토콜일 경우
      • 클라이언트는 한 서버에 종속됨
      • 여러 요청을 보내야 할 경우 한 서버에만 요청해야 함
      • 서버의 IP가 바뀌거나
      • 요청을 보낸 서버에 장애가 생기거나
      • 서버가 여러대 있다면 이런 문제를 해결 할 수 없음
    • 위의 이유로 한 서버에 종속될 필요가 없어짐
    • 여러번 요청을 보내야 할 경우 여러 서버에 요청할 수 있음
    • 서버 확장이 용이해임
  • 지속 연결 프로토콜
    • 지속 연결 (Keep-Alive)
    • 하나의 연결을 사용해 여러 개의 HTTP 요청/응답 주고 받음

HTTP 버전별 특성

  • HTTP 0.9

    • 단일한 요청 방법( GET 메소드 ), 비지속 연결 , 별다른 기능X
  • HTTP 1.0

    • 다양한 요청 방법과 헤더 추가
  • HTTP 1.1

    • 지속 연결 기능 추가
  • HTTP 2.0

    • 요청 순서대로 응답을 반환할 필요 없음, 헤더 압축
  • HTTP 3.0

    • UDP 기반 프로토콜인 QUIC로 변경
  • 헤더 정보 예시