[Web] 웹 브라우저에 URL 입력하면 ?

Jnary·2024년 4월 11일
0

Seminar

목록 보기
4/4
post-thumbnail

브라우저에 www.naver.com을 입력하면 어떤 일이 벌어지나요?

  • 기술 면접 단골 질문

  • 인터넷 작동 원리에 대한 기본적인 이해가 있어야 답할 수 있는 질문

  • url 입력하고 몇 초되지 않는 시간동안 컴퓨터는 여러가지 일을 한다.

1. 브라우저 주소창에 www.naver.com(URL)을 입력한다.

2. 브라우저가 www.naver.com의 IP주소를 찾기 위해 캐시에서 DNS 기록을 확인한다.

  • DNS : 웹 사이트의 IP주소 - 도메인 주소 연결해주는 시스템
  • 인터넷의 모든 URL에는 고유한 IP 주소 할당
  • IP주소 : 액세스 요청 웹 사이트의 서버를 호스트하는 컴퓨터
    223.130.195.95 = ip주소223.130.195.95 = ip주소
  • DNS 쿼리는 기록을 찾기 위해 4개의 캐시 확인 1) 브라우저 캐시 브라우저 : 이전에 방문한 웹 사이트의 DNS 기록을 일정 기간동안 저장 2) OS 캐시 브라우저 캐시에 원하는 DNS 레코드가 없다면, 브라우저가 내 컴퓨터 OS에 시스템 호출을 통해 DNS 기록 가져옴 3) 라우터 캐시 컴퓨터에도 원하는 DNS 레코드가 없다면, 라우터에서 DNS 기록을 저장한 캐시를 확인 4) ISP 캐시 모든 단계에서 DNS 레코드가 없다면, 브라우저는 ISP에서 DNS 기록을 찾는다. ISP : DNS 서버 보유, 해당 서버에서 DNS 기록 캐시 검색 가능 → DNS 서버 : 할당된 도메인 영역에 대한 정보를 가지고 있는 서버, 주로 도메인을 IP주소로 변환하는 역할

3. 만약 요청한 URL이 캐시에 없다면, ISP의 DNS 서버가 DNS 쿼리로 해당 URL을 호스팅하는 서버의 IP주소를 찾는다.

  • DNS쿼리의 목적

    • 웹 사이트에 대한 올바른 IP주소를 찾을 때까지
    • 인터넷에서 여러 DNS 서버를 검색하는 것
  • 재귀적 질의

    • 필요한 IP 주소를 찾거나 찾을 수 없다는 오류 응답을 반환할 때까지
    • DNS 서버에서 다른 DNS 서버로 검색이 반복적으로 계속되기 때문
  • DNS 리커서(Recursor) : ISP의 DNS 서버

    • 인터넷의 다른 DNS 서버에 답변을 요청
    • 의도된 도메인 이름의 적절한 IP주소를 찾는 일을 담당
    • 네임서버(Name Server) : 웹사이트 도메인 이름의 도메인 아키텍처를 기반으로 DNS 검색을 수행하는 다른 DNS 서버
  • 도메인 아키텍처

    • 각 단계에는 DNS lookup 도중에 쿼리되는 고유한 네임서버가 존재
      • DNS Lookup : DNS 서버에서 인터넷 도메인 이름을 사용해 인터넷 주소(ip)를 알아내는 과정
  • DNS 리커서 : 루트네임서버에 연결

    • 루트네임서버 : 리커서를 .com 도메인 네임서버로 리디렉션
    • .com 네임서버 : naver.com 네임서버로 리디렉션
    • naver.com 네임 서버 : DNS 기록에서 www.naver.com과 일치하는 IP주소를 찾아 DNS 리커서로 반환
    • 리커서 : 이를 브라우저로 다시 보낸다.
  • 요청 : 내용 및 IP주소와 같은 정보를 작은 데이터 패킷에 담겨 전송된다.

    패킷 : 올바른 DNS 서버에 도달하기 전에 클라이언트와 서버 사이의 여러 네트워킹 장비를 통해 이동

    장비 : 라우팅 테이블을 사용하여 패킷이 목적지에 도달할 수 있는 가장 빠른 방법을 알아낸다.

    이동 도중 패킷 손실 → 요청 실패 오류 발생

    그렇지 않으면 → 올바른 DNS 서버에 도달하여 IP줏 가져온 후 브라우저로 돌아간다.

4. 브라우저가 해당 서버와 TCP 연결을 시작한다.

  • 브라우저가 올바른 IP 주소 수신 → IP주소와 일치하는 서버와 연결해 정보 전송 → 브라우저는 인터넷 프로토콜(IP)을 사용하여 연결 구축
  • 일단적인 HTTP 요청에서는 TCP라는 전송제어프로토콜 사용
    • 내 컴퓨터(클라이언트)와 서버간에 데이터 패킷을 전송하려면 TCP 연결이 필요
    • 3단계 프로세스
      1. SYN(synchronize) 패킷을 보내 새 연결이 가능한지 여부 묻기
      2. 서버에 새 연결을 수락할 수 있는 열린 포트가 있는 경우 SYN/ACK 패킷을 사용하여 SYN 패킷의 ACK(승인)으로 응답
      3. 클라이언트는 서버로부터 SYN/ACK 패킷 수신 후 ACK 패킷을 전송하여 승인
  • 데이터전송을 위한 TCP 연결 설정 완료!

5. 브라우저가 웹서버에 HTTP 요청을 보낸다.

  • TCP 연결 설정 → 데이터 전송 시작
  • 브라우저는 www.naver.com 웹페이지를 요청하는 GET 요청 전송

6. 서버가 요청을 처리하고 응답을 보낸다.

  • 웹서버
    • 브라우저로부터 요청 수신
    • 해당 내용을 request handler에 전달하여 응답을 읽고 생성하는 역할
  • request handler
    • 요청, 요청의 헤더 및 쿠키를 읽고
    • 필요한 경우 서버의 정보를 업데이트하는 프로그램
  • response를 특정 포맷(JSON, XML, HTML)으로 작성

7. 서버가 HTTP 응답을 보낸다.

  • 서버 응답
    • 요청한 웹 페이지
    • status code 상태코드
    • Content-Encoding 압축 유형
    • Cache-Control 페이지 캐싱방법
    • 설정할 쿠키, 개인정보 등이 포함
  • Status Code
    • 1xx : Information Response 정보 메시지 → 서버가 요청을 받았으며 서버에 연결된 클라이언트는 계속해서 작업하라
    • 2xx : Successful Response 서버와의 요청 성공
    • 3xx : Redirection Message → 요청 완료를 위해 추가 작업 조치가 필요함을 의미
    • 4xx : Client Error Response 클라이언트의 Request에 에러가 있음을 의미
    • 5xx : Server Error 서버 측의 오류로 request 수행 불가
  • 오류가 발생한 경우 HTTP 응답을 확인하여 수신한 상태 코드의 유형 확인 가능

8. 브라우저가 HTML 컨텐츠를 보여준다.

  • HTML 골격 렌더링
  • HTML 태그 확인
  • 이미지, CSS 스타일시트, 자바스크립트 파일등과 같은 웹 페이지의 추가 요소에 대한 GET 요청 전송
  • 정적 파일(Static File) : 브라우저에서 캐싱 → 다음에 페이지를 방문할 때 다시 가져올 필요 X
  • www.naver.com 페이지가 브라우저에 나타난다.
profile
숭실대학교 컴퓨터학부 21

0개의 댓글