본문 바로가기
Network

웹 브라우저에서 요청 흐름

by BTC_뚜벅이 2022. 4. 18.

ABTCEFG♪  안녕하세요, 여러분! BTC_뚜벅이입니다.

IaC로 넘어가기전 기초 탄탄 인프라를 잡는 시간입니다.

오늘은 웹 브라우저에서의 요청 흐름에 대해 살펴보는 시간을 가지려고 해요.

요청 흐름을 살펴보기 앞서 알아두면 좋을 3가지 개념을 먼저 살펴볼게요.

 

브라우저의 URL 파싱

  • 브라우저에서 어떤 프로토콜, URL, Port로 요청할 것인지 분석.
  • 명시적으로 포트를 선언하지 않으면 443 Port 사용

여기서 파싱이란 어떤 큰 자료에서 원하는 정보만 가공하고 뽑아서 원하는 때에 불러올 수 있게 하는 것을 의미해요.

HSTS(HTTP Strict Transport Security) 목록 조회

  • 클라이언트에게 HTTPS 프로토콜 사용하도록 강제하는 기능
  • HSTS 캐시에 해당 URL 저장
  • 브라우저에서 목록 조회를 통해 해당 요청을 HSTS로 보낼지 판단.
  • HSTS 목록에 해당 URL이 존재한다면 HTTP로 요청해도 HTTPS로 자동 요청됨.

 

URL vs URI vs URN

아래는 URI와 URL, URN을 시각화 해본 그림입니다!

  • URI(Uniform Resource Identifier)은 자원에 대한 고유 식별자로서 URL 의미를 포함합니다.
  • URL(Uniform Resource Locator)은 웹 주소, 자원이 실제로 존재하는 위치를 의미합니다.
  • URN(Uniform Resource Name)은 URI의 표준 포맷 중 하나로, 이름으로 리소스를 특정하는 URI입니다. 

 

  • 프로토콜을 제외하고 리소스의 name을 가리키는데 사용되며, 실제 자원을 찾기 위해서는 URN을 URL로 변환하여 이용합니다.

 

 


 

앞에서 주요 3가지 개념을 살펴봤으니 메인 주제인 웹 브라우저에서 요청 흐름에 대해 알아보고 마무리할게요! 

 

웹 브라우저에서 요청 흐름

1. URL을 IP 주소로 변환

  • 브라우저는 로컬 hosts파일과 브라우저 캐시에 해당 URL 존재하는지 먼저 확인
  • 존재하지 않는 경우 DNS 서버에 요청하여 해당 URL을 IP로 변환하는 과정을 거침

2. 라우터를 통해 해당 서버의 게이트웨이까지 이동

DNS 서버에게 IP 주소를 받아 서버로 요청하게 되는데 이 때 그림과 같이 라우터를 통해 경로를 이동

3. ARP를 통해 IP 주소를 MAC 주소로 변환

  • 실질적인 통신을 위해 네트워크 내에서 ARP를 브로드캐스팅하여 IP주소를 MAC주소로 변환
  • 이 때 해당 IP주소를 가지고 있는 노드는 자신의 MAC주소를 응답함

4. 대상 서버와 TCP 소켓 연결

  • 연결을 위해 TCP 3way-handshaking 진행
  • 추가로 암호화 통신을 위한 TLS handshaking도 진행
  • 정상적으로 완료되면 클라이언트와 서버가 모두 ESTABLISHED 상태가 되면서 연결이 이루어짐

5. HTTPS 프로토콜로 요청 및 응답

  • 클라이언트와 서버가 연결되면 클라이언트는 서버에 페이지를 요청합니다. 
  • 서버는 해당 요청을 받고 수락할 수 있는 요청인지 검사
  • 올바른 요청인 경우 서버는 요청에 대한 응답을 생성하고 브라우저로 전달

6. 브라우저에서 응답을 해석

서버에서 응답한 내용을 브라우저가 해석하여 화면에 출력하면서 길었던 요청 과정이 완료됨

댓글