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. 브라우저에서 응답을 해석
서버에서 응답한 내용을 브라우저가 해석하여 화면에 출력하면서 길었던 요청 과정이 완료됨
'Network' 카테고리의 다른 글
상태 저장 vs 상태 비저장 / 동기 vs 비동기 / 블로킹 vs 논블로킹 (0) | 2022.04.27 |
---|---|
[Network]IP address와 MAC address (0) | 2022.04.22 |
[Network] OSI 7계층이란 (0) | 2022.04.15 |
세션 vs 쿠키 vs 캐시 차이점 (1) | 2022.04.12 |
[Network]네트워크 구성요소 (0) | 2022.04.05 |
댓글