브라우저에서 Google.com을 검색하면 일어나는일, Three-Way-Handshake
브라우저는 DNS 기록을 4가지의 캐시에서 확인
- 브라우저 캐시 확인한다. 실패시 차례로 실행
- OS에 저장된 DNS 캐시를 확인한다.
- Router와 통신해서 캐시를 확인한다.
- ISP 캐시를 확인한다. ISP는 DNS 서버를 구축하고 있기 때문이다.
- ISP DNS server가 Root name server 에 연락을 한다.
- Root name server 는 .com 도메인 name server로 리다이렉트한다.
- .com name server는 google.com nameserver로 리다이렉트한다.
- google.com name server는 DNS 기록에서 www.google.com에 매칭되는 IP주소를 찾고 ISP DNS Server로 보낸다.
- 브라우저가 올바른 IP 주소를 받게 되면 서버와 Connection을 빌드한다. 웹사이트의 HTTP 요청의 경우 일반적으로 TCP를 사용한다.
- 클라이언트와 서버간 데이터 패킷들이 오가려면 TCP connection이 되어야 한다. TCP/IP three-way-handshake 프로세스를 통해 connection이 이뤄지게 된다.
- 클라이언트가 SYN 패킷을 서버에 보내고 connection을 열어 달라고 물어본다.
- 서버가 새로운 connection을 시작할 수 있는 포트가 있다면 SYN/ACK 패킷으로 응답.
- 클라이언트는 SYN/ACK 패킷을 서버로부터 받으면 서버에게 ACK 패킷을 보낸다.
- 이 과정이 끝나면 TCP 연결이 완료 되는 것이다.
- TCP로 연결이 되어있다면, 데이터를 전송하면 된다. 브라우저는 GET 요청을 통해 서버에게 www.google.com 웹페이지를 요구한다.
- 서버가 요청을 처리하고 응답을 생성후 클라이언트로 보낸다.
- 브라우저는 HTML의 스켈레톤을 렌더링한다. 그다음에는 HTML tag들을 체크하고 나서 추가적으로 필요한 웹페이지요소들을(이미지, CSS, JS 등) GET으로 요청한다. 이 정적인 파일들은 브라우저에 의해 캐싱된다.