우리가 웹 브라우저를 키면 나오는 주소창에 주소를 치면 무슨일이 일어나는 걸까?
물론 그 주소에 맞는 화면이 나온다.
당연한 말이지만 면접에서 이렇게 말하면 안되는거 잖아요.. 그래서 공부를 하면서 한번 정리 해보려 합니다.
1. 리다이렉트 (Redirect)
- 리다이렉트(Redirect)란 re(다시)+direct(지시하다) 말 그대로 다시 지시하라는 뜻이다.
- 예를 들어서 www.hellol77.com/post1 으로 요청을 했다고 하면 서버는 HTTP 응답 메시지를 통해 www.hellol77/post2로 다시 요청해보라고 다시 지시할 수 있는 것을 리다이렉트라고 한다.
- 브라우저(첫번째 요청) -> server(내가 알려주는 곳으로 가봐) -> 브라우저(그럼 가봐야겠다) -> server
- 첫번째 요청을 받은 server는 HTTP 응답 상태 코드로 302를 보내고 응답 메시지 헤더 중 Location 값으로 리다이렉트 되어야 할 주소를 리턴한다.
- 302 Found 리다이렉션 상태 응답 코드는 요청한 리소스가 헤더에 지정된 URL로 일시적으로 이동되었음을 나타낸다.
리다이렉트 요청이 없다면 그대로 해당 요청의 과정이 진행된다.
2. 캐싱
- 캐싱이란 동일한 데이터에 반복해서 접근하거나 많은 연산이 필요한 일일때, 빠르게 이용하고자 성능이 좋고 가까운 곳이 저장하는 것
- 브라우저 캐시는 이미지, 비디오 뿐만 아니라 css와 Javascript 등 정적 리소스를 로컬에 저장하여 성능을 향상시킨다. 보통 브라우저를 갔다가 다시 방문하면 굉장히 빠르게 컨텐츠가 나타나는데 이는 바로 브라우저 캐시 덕분이다.
- 공유 캐시는 클라이언트와 서버 사이에 있으며 사용자간에 공유할 수 있는 응답을 저장할 수 있다. 서버 앞단에 프록시 서버가 캐싱을 하는 것을 말한다.
- 캐시 사용 여부나 최대 캐시 유효성 기간 등은 HTTP 헤더를 통해 설정 가능
요청이 캐싱이 가능한지 파악하고 캐싱이 이미 된 요청이면 캐싱된 값을 반환하며 캐싱이 되지 않은 새로운 요청이면 그 다음 단계로 넘어간다.
3.DNS (Domain Name System)
- DNS는 계정적인 도메인 구조와 분산된 데이터 베이스를 이용한 시스템으로 FQDN(Fully Qualified Domain Name)을 인터넷 프로토콜인 IP로 바꿔주는 시스템이다. DNS관련 요청을 네임서버로 전달하고 해당 응답값을 클라이언트에게 전달하는 리졸버, 도메인을 IP로 변환하는 네임서버 등으로 이루어져있다.
- DNS 캐싱: 미리 해당 도메인이름을 요청했다면 로컬 PC에 자동적으로 저장된다. 브라우저캐싱과 OS캐싱이 있다.
- IP : 인터넷에 연결되어 있는 장치(컴퓨터, 스마트폰, 타블릿, 서버 등등)들은 각각의 장치를 식별할 수 있는 주소를 가지고 있는데 이를 ip라고 한다. 예) 115.68.24.88, 192.168.0.1
- Domain(도메인) : ip는 사람이 이해하고 기억하기 어렵기 때문에 이를 위해서 각 ip에 이름을 부여할 수 있게 했는데, 이것을 도메인이라고 한다.
- FQDN : 명확한 도메인 표기법을 칭한다. 예로 소프트웨어 설치 중 도메인명을 요구하면, naver.com을 입력할지, 'www.naver.com' 을 입력할지 모호하다. 그래서 이러한 모호성을 피하기 위해 FQDN이란 단어를 사용하며, 이는 Namespace 계층상에서 최종 호스트명을 포함하는 도메인명을 뜻한다. 'www.' 는 호스트 'naver.com' 부분은 도메인이다.
'www.naver.com'에 DNS 쿼리가 오면 역순으로 RootDNS -> .comDNS -> naver.DNS -> .wwwDNS 과정을 거쳐 완벽한 주소를 찾아 IP주소를 매핑한다.
4. IP 라우팅
해당 IP를 기반으로 라우팅, ARP 과정을 거쳐 실제 서버를 찾는다.
ARP 과정(주소 결정 프로토콜) : 네트워크 상에서 IP주소를 MAC주소로 대응시키기 위해 사용된다. 처음 통신을 시작할 때는 상대방의 MAC address를 모르는데 그때 상대방의 MAC address를 알아내기 위하여 사용하는 프로토콜이다.
MAC 주소 (Media Access Control Address) : 물리적 네트워크 주소라고도 하며 데이터 링크 계층(2 계층)에서 사용하는 네트워크 인터페이스 카드(NIC) 즉, 하드웨어에 할당된 고유 식별번호 주소이다.
5. TCP 연결 구축(HTTP/2 까지) // QUIC 연결 (HTTP/3)
브라우저가 TCP 3방향 - 핸드셰이크 및 SSL 연결을 통해 연결을 설정한다. 이 요청을 보낸 후 드디어 해당 요청한 서버로 응답을 받는다.
QUIC : 빠른 UDP 연결으로 알려진 새 전송 프로토콜 기반. TCP 3방향 핸드셰이크로 인해 TCP 연결 설정이 지연되는데 QUIC는 UDP를 사용하여 TCP 3방향 핸드셰이크에서 하나의 1-RTT 지연을 줄인다. 또한 기존의 TCP 프로토콜 헤더는 암호화되거나 인증되지 않아 보안에 취약한데 QUIC는 몇 가지 메시지를 제외하고 모든 패킷 헤더가 인증되고 모든 메시지 본문이 암호화된다.
----TTFB시작---- Time to First Byte : 콘텐츠 다운로드 받기 시작할 때
6. 콘텐츠 다운로드
요청한 컨텐츠를 서버로부터 다운받는다.
7. 브라우저 렌더링
받은 데이터를 바탕으로 브라우저 엔진이 브라우저 렌더링 과정을 거쳐 화면을 만든다.
⭐️ 정리
리다이랙트 -> 캐싱 -> DNS -> IP 라우팅 -> TCP 연결 구축(QUIC 연결 구축) -> 콘텐츠 다운로드 -> 브라우저 렌더링
지금까지 주소창에 주소를 치면 일어나는 일을 정리해보았습니다. 배워야 할게 산더미인것 같아요..!