어떻게 될까요
웹 브라우저가 URL을 해석한다
URL 문법은 여기서 확인하면 좋을것 같다
URL이 문법에 맞지 않는다면 입력을 웹 브라우저의 기본 검색엔진으로 검색을 요청
HTTP Strict Transport Security
의 약어로, 보안에 취약한 HTTP
대신 HTTPS
를 사용하여 통신해야한다고 알리는 보안 기능
해당 URL이 HSTS
에 존재한다면 HTTPS
프로토콜로 요청을 보내고, 존재하지 않는다면 HTTP
프로토콜로 요청을 보낸다
HSTS
에 해당 URL이 있다면, 명시적으로 HTTP
요청을 보내더라도 HTTPS
로 요청
Domain Name System
의 약어인 DNS는 호스트의 도메인 이름을 네트워크 주소로 바꾸거나 반대의 변환을 하는 역할
모든 웹사이트는 각자의 IP주소를 가지고 있으며, 터미널에서 다음과 같이 확인할 수 있다
해당하는 DNS의 기록을 찾기위해 브라우저는 browser - OS - router - ISP순으로 캐시를 확인한다
캐시는 네트워크 트래픽을 통제하고 데이터 전송 시간을 높이는데 필수적으로 필요
만약 요청한 URL이 캐시에 없다면 URL을 호스팅하고 있는 IP주소를 찾기 위해 DNS Query를 날린다
DNS Query를 날린 후 내부 동작은 다음과 같다
브라우저가 올바른 IP주소를 받게된다면, 해당 IP주소와 정보 전달을 위한 연결을 시도한다
TCP/IP three-way handshake를 통해 양쪽 모두 데이터 전송할 준비가 되었다를 보장
SYN 패킷
을 보낸다SYN/ACK 패킷
을 사용하여 SYN 패킷
의 ACK
으로 응답SYN/ACK 패킷
을 수신하고 ACK 패킷
을 전송하여 승인만약 요청이 HTTP가 아니라 HTTPS 요청이라면 암호화 통신을 위해 TLS Handshake가 추가된다
해당 Handshake의 흐름은 다음과 같다
연결이 되었으니 해당 페이지를 달라고 서버에 GET요청을 보낸다
www.google.com
을 요청한 상황이며, 해당 Status Code
는 300번대로 HTTP
가 들어온상황
HTTPS
요청은 200으로 정상작동하는것을 볼 수 있다브라우저는 응답받은 HTML을 화면에 단계별로 표시한다
HTML 골격만 먼저 렌더링한다
HTML 태그를 확인 후 이미지, CSS, JavaScript 파일과 같은 추가요소에 대한 GET 요청을 한다
정적 파일(Static File)은 브라우저에 의해 캐시되기 때문에 동일한 페이지를 방문한다면 추가적으로 요청할 필요가 없다
굿