Web_Miscellaneous / 브라우저 / 2.1 google.com을 입력 시 일어나는 일
2.1google.com을 입력 시 일어나는 일
- URL 파싱
브라우저는 google.com이라는 URL을 파싱해 무슨 자료를 요청하는지 이해하려고 함
- DNS 해결
브라우저는 google.com이라는 인간 언어를 컴퓨터가 알아들을 수 있는 IP 주소로 변환해야함. 그러기 위해 아래의 과정을 거침
- 브라우저 캐시: 우선 브라우저 내의 캐시를 들어가 최근에 google.com이라는 IP 주소를 해결한적이 있는지 확인
- 운영 체제 캐시: 브라우저 캐시가 없을 시, OS에 IP 주소를 요청해 OS의 DNS 캐시를 확인
- 라우터 캐시: OS 캐시도 없으면 라우터로 보내서 확인
- ISP(Internet Service Provider) DNS 서버: 라우터에서도 없으면 ISP(KT, LG U+ 등)의 DNS 서버에서 확인
- 이마저도 없으면 ISP의 DNS 서버가 DNS query를 만들어 반복해서 해당 URI를 호스팅하는 서버의 IP 주소를 검색
- TCP 연결(IP 주소 찾으면)
- IP 주소를 찾으면 TCP handshake라는 3-step 과정을 거침(Transmission Control Protocol)
- SYN: 브라우저는 TCP SYN(synchronize) 패킷을 서버로 보냄. 새로운 연결에 열려있는지 확인하는 것.
- SYN-ACK: 포트가 열려있고 새로운 연결을 받아들일 수 있다면, 서버는 SYN/ACK 패킷으로 응답
- ACK: 브라우저가 ACK(acknowledge) 패킷을 다시 보내서 최종 연결
- HTTPS 요청
- SSL/TLS handshake: 브라우저-서버가 통신 보안을 확실히 하기 위해 암호 키를 주고 받는 것
- certificate(증명서) 교환: 서버는 자신의 SSL/TLS 증명을 브라우저에 제공
- 세션 키: 확인되면, 브라우저와 서버는 세션 키를 만들어 이어지는 통신을 암호화
- HTTP request
- 브라우저는 안전한 연결이 완성되면 HTTP GET request를 구글 서버에 보냄(또는 credential status에 따라 로그인을 하거나 form을 제출하는 경우는 POST 요청)
- 서버 프로세싱
- 구글 서버는 요청을 받고 응답 준비
- 백엔드 프로세스: 데이터베이스, html content 준비 등
- CDN: content delivery network. 구글은 CDN을 활용해 이용자 위치에 가까운 곳에 있는 서버에서 정적 컨텐츠(이미지, css, javascript)를 보내서 시간 단축
- HTTP response 받음
- 서버는 status line(HTTP/1.1 200 OK 등)을 응답
- 헤더: 메타 데이터(컨텐트 타입, 길이, 캐싱 정책 등)
- body: html 컨텐트
- 웹페이지 렌더링
- 브라우저는 HTML 문서를 받아 구글 홈페이지를 렌더
- HTML 파싱 : 브라우저에선 html문서를 받아 파싱해 DOM 트리 만듦
- CSS 파싱 : CSS 다운받아 파싱해서 CSSOM(CSS Object Model) 트리 만들어서 스타일 확인
- 자바스크립트 실행
- 렌더: 브라우저에선 DOM과 CSSOM을 합쳐 렌더
- 추가
- 처음 HTML 파싱을 할 때 브라우저에선 추가적으로 이미지, 폰트, 동영상 등을 추가적으로 요청할 수도 있음