그냥 도메인 주소로는 컴퓨터끼리 통신을 할 수가 없기 때문에 컴퓨터가 읽을 수 있는 IP주소로 변환해줘야합니다.
웹 브라우저는 먼저 캐시 계층에서 도메인에 해당하는 IP 주소가 존재하는지 확인
이 IP주소로 가야 하는 것은 알지만 어떻게 가야 할지 경로는 알 수 없습니다. 이 요청이 네트워크를 타고 어떻게 이동할지는 네트워크 장비인 라우터의 라우팅을 통해 이루어집니다.
라우터에서는 라우팅 테이블을 통해 해당 요청이 어떤 경로를 통해 가야할지 경로를 지정해줍니다
소켓 연결은 3-way-handshake라는 과정을 통해 이루어집니다. 이 과정은 마치 전화를 거는 것과 유사합니다. 서버에게 전화를 걸고, 서버는 해당 전화를 확인하고 전화를 받습니다. 그리고 전화를 건 사람은 말합니다. "여보세요"라고 하는 것처럼요.
HTTPS일 경우 서로 암호화 통신을 위한 TLS 핸드쉐이킹이 추가됩니다. 이를 통해 서버와 클라이언트는 암호화 통신을 진행할 수 있습니다.
웹 브라우저가 서버로부터 받은 응답의 헤더를 검사하여 리소스의 타입을 알아낸 후, 해당 타입의 리소스를 렌더링하는 방법을 확인합니다. 응답 처리 방법을 알려주는 응답 헤더인 Content-Type은 이러한 리소스의 타입을 나타냅니다. Content-Type을 보고 웹 브라우저가 어떤 방식으로 렌더링을 할지 정하게 됩니다.
받아온 리소스 파일을 브라우저가 렌더링하여 사용자에게 보여주고 이때, 브라우저가 html 파일을 파싱하여 DOM 트리를 구성합니다. css 파일 또한 파싱하여 CSSOM 트리를 구성하고, 이 두 트리를 합쳐 렌더 트리를 구성합니다. 이 렌더 트리를 기반으로 렌더링하게 됩니다.
브라우저가 자신의 hosts 파일과 DNS 캐시에 도메인에 해당하는 IP주소를 찾고 만약 없을 경우에는 DNS 서버에 구글 주소를 호스팅하고 있는 ip주소를 찾기 위해서 dns 쿼리를 보냅니다. 그렇게 DNS서버에서 IP 주소를 받고 라우터를 통해 가다가 ARP를 통해 MAC주소로 매칭시켜 서버와 TCP 연결을 수행하며 연결을 확정시키면 서버로부터 리소스를 받게됩니다. 브라우저는 이 리소스를 렌더트리를 생성하여 화면에 보여주게 됩니다.