CS기초/네트워크

[그림으로 배우는 네트워크 원리] 4장. 웹사이트의 동작 원리

오늘의 나1 2022. 8. 19. 06:34

URL에 담긴 정보: 프로토콜 + 호스트명 + 리소스경로 

  • 예: https://comic.naver.com/index 
    • https 프로토콜
    • : 파일의 장소
    • // 파일의 장소로 호스트명이 올거야
    • comic.naver.com 호스트명
    • /index 리소스 위치

 

웹 브라우저에  www.naver.com을 입력하면 생기는 일

목적지 서버와 통신하려면, 목적지 IP/MAC주소를 알아야 함

  • IP 주소는 뭐야? DNS 쿼리 요청을 보낸다
    • 웹 브라우저 캐시 확인 → 있으면 쓴다.
    • 없으면 DNS Resolver의 캐시 확인 → 있으면 쓴다.
    • 없으면 DNS Resolver는 Root DNS 서버에게 물어본다.
    • Root DNS 서버는 제일 뒤에 있는 com에 대한 네임 서버를 알려준다. 
    • DSN Resolver는 com 네임 서버에게 물어본다.
    • com의 네임 서버는 naver.com에 대한 네임 서버를 알려준다.
    • DSN Resolver는 naver.com 네임 서버에게 물어본다.
    • naver.com의 네임 서버는 www.naver.com에 대한 IP 주소를 알려준다. 
    • DNS Resolver는 응답을 받고 DNS 캐시 테이블에 저장한다. 
    • 웹 브라우저도 응답을 받고 DNS 캐시 테이블에 저장한다.
    • IP패킷의 목적지 주소로 응답 받은 IP를 설정한다. 
  • MAC 주소는 뭐야? ARP 요청을 보낸다.
    • 로컬 PC의 ARP 캐시 테이블을 확인
    • 없으면 로컬LAN에 목적지 IP에 대한 브로드캐스팅 ARP 요청을 보낸다. 
      • 로컬 LAN에 목적지 IP가 있으면 MAC주소를 보내준다. 
    • 없으면 로컬LAN의 디폴트 게이트웨이(라우터)에게 ARP를 보낸다.
      • 로컬 PC의 ARP 캐시 테이블을 확인
      • 없으면 디폴트 게이트웨이에 대한 브로드캐스팅 ARP 요청을 보낸다. 
      • 라우터는 MAC 주소를 보낸다. 
      • 로컬 PC는 도착지 MAC을 디폴트게이트웨이 주소로 하고 라우터로 프레임을 보낸다. 
      • 라우터는 출발지를 자신으로하는 브로드캐스팅 ARP 요청을 보낸다. 
      • 라우터는 ARP 응답을 받아 ARP 캐시 테이블에 저장하고 로컬 PC로 보낸다. 
    • 로컬 PC는 ARP 응답을 받으면 ARP 캐시테이블에 저장한다. 
    • * 참고: ARP는 L2레벨(로컬 LAN)에서만 가능해서 외부로 나가려면 라우터를 거쳐서 가야 한다.

목적지 서버에 TCP 커넥션 요청하여 TCP 커넥션 맺기

목적지 서버와 HTTP 통신하기

  • 출발지에서 네이버로 요청을 보낸다: HTTP (요청) 메시지 > TCP 세그먼트 > IP 패킷(출발지IP:네이버IP) > 이더넷 프레임(출발지MAC:네이버MAC)
  • 네이버에서 출발지로 응답을 보낸다:  HTTP (응답) 메시지 > TCP 세그먼트 > IP 패킷(네이버IP:출발지라우터IP) > 이더넷 프레임(네이버MAC:네이버MAC)
  • 내 로컬 PC에서 HTTP 응답을 받고 브라우저에 출력한다. 
참고: 네이버 도메인 등록정보 - https://who.is/dns/naver.com     

NS - 도메인명을 관리하는 서버
MX - 도메인명에 대응하는 메일 서버
A - 호스트명에 대응하는 IPv4
CNAME - 호스트명에 대응하는 Alias 

 

HTTP 쿠키

  • 웹서버는 HTTP 응답으로 쿠키를 보낼 수 있다. 
  • 브라우저는 HTTP 응답을 받고, 쿠키가 있으면 브라우저에 저장한다. 
  • 브라우저가 똑같은 웹서버로 요청을 보낼 때, HTTP 요청에 쿠키가 자동으로 포함된다. 

HTTP 쿠키의 동작

 

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

  • 웹 서버: 목적지 IP로서 동작하는 서버 (nginx)
    • 정적 리소스는 바로 보내주고
    • 동적 리소스는 웹 애플리케이션에 요청을 보낸다. 
  • 웹 애플리케이션 서버: (tomcat)
    • 웹 서버의 요청을 받아 작업을 수행한다. 
    • 필요시 DB에 쿼리를 요청하기도 한다. 
로드밸런서 있는 경우  로드밸런서 없는 경우

 

프록시 서버

  • 프록시 서버를 디폴트게이트웨이 사이에 두면 어떤 웹페이지를 보는 지 추적하거나 특정 웹페이지에 접속을  막을 수 있다. 

 

참고

  • Gene.  『그림으로 배우는 네트워크 원리』. 서울: 영진닷컴 출판, 2020

DNS와 ARP

HTTP 쿠키 

 

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