https://www.google.com/을 접속하면 일어나는 일에 대해 설명해보세요

Kimseongeun·2022년 10월 13일
0

CS공부

목록 보기
5/9
post-thumbnail
post-custom-banner

https://www.google.com/을 접속하면 일어나는 일에 대해 설명해보세요

1. 브라우저는 자신의 로컬 hosts 파일과 DNS 캐시에 www.google.com 에 해당되는 IP 주소가 있는지 확인한다.

  • 그냥 도메인 주소로는 컴퓨터끼리 통신을 할 수가 없기 때문에 컴퓨터가 읽을 수 있는 IP주소로 변환해줘야합니다.

  • 웹 브라우저는 먼저 캐시 계층에서 도메인에 해당하는 IP 주소가 존재하는지 확인

2. 요청한 URL이 캐시에 없으면, ISP의 DNS 서버가 www.google.com을 호스팅하고 있는 서버의 IP 주소를 찾기 위해 DNS query를 날린다.

  • DNS 서버로 요청하는 과정
    1. 미리 설정 된 Local DNS에 해당 URL 주소의 IP주소를 요청합니다.
    2. Local DNS에 해당 IP주소가 존재한다면 이를 응답하고, 없다면 다른 DNS 서버와 통신합니다. root DNS 서버에 해당 URL의 IP주소를 요청합니다.
    3. root DNS서버에 해당 IP주소가 없다면 하위 DNS 서버에 요청하라고 응답합니다. 이 응답을 받은 Local DNS는. net 도메인을 관리하는 DNS 서버에  같은 내용을 요청합니다.
    4. .net DNS 서버에 해당 IP주소가 없다면 하위 DNS 서버에 요청하라고 응답합니다. 이 응답을 받은 Local DNS는 daum.net 도메인을 관리하는 DNS 서버에 같은 내용을 요청합니다.
    5. daum.net DNS 서버에서 IP주소를 응답받은 Local DNS는 해당 IP주소를 캐싱하고 응답합니다.

3. DNS서버에게 IP주소를 받았으니 라우터를 통해 해당 서버의 게이트웨이까지 이동

  • 이 IP주소로 가야 하는 것은 알지만 어떻게 가야 할지 경로는 알 수 없습니다. 이 요청이 네트워크를 타고 어떻게 이동할지는 네트워크 장비인 라우터의 라우팅을 통해 이루어집니다.

  • 라우터에서는 라우팅 테이블을 통해 해당 요청이 어떤 경로를 통해 가야할지 경로를 지정해줍니다

4. ARP를 통해 IP주소를 MAC주소로 변환

  • 실질적인 통신을 하기 위해서는 논리 주소인 IP주소를 물리 주소인 MAC 주소로 변환해야 합니다. 이를 위해 해당 네트워크 내에서 ARP를 브로드 캐스팅합니다. 해당 IP주소를 가지고 있는 노드는 자신의 MAC 주소를 응답합니다.

5. Browser가 구글서버와 TCP connection 을 한다.

  • 소켓 연결은 3-way-handshake라는 과정을 통해 이루어집니다. 이 과정은 마치 전화를 거는 것과 유사합니다. 서버에게 전화를 걸고, 서버는 해당 전화를 확인하고 전화를 받습니다. 그리고 전화를 건 사람은 말합니다. "여보세요"라고 하는 것처럼요.

  • HTTPS일 경우 서로 암호화 통신을 위한 TLS 핸드쉐이킹이 추가됩니다. 이를 통해 서버와 클라이언트는 암호화 통신을 진행할 수 있습니다.

6. 브라우저가 구글서버에 HTTP 프로토콜에 따른 요청을 한다.

  • 이제 연결이 확정되었으니 드디어 해당 페이지 www.google.com/
    를 달라고 서버에게 요청합니다. 서버에서 해당 요청을 받고, 이 요청을 수락할 수 있는지 검사합니다. 그리고 서버는 이 요청에 대한 응답을 생성하여 브라우저에게 전달합니다.

7. 브라우저가 HTML content를 보여준다.

  • 웹 브라우저가 서버로부터 받은 응답의 헤더를 검사하여 리소스의 타입을 알아낸 후, 해당 타입의 리소스를 렌더링하는 방법을 확인합니다. 응답 처리 방법을 알려주는 응답 헤더인 Content-Type은 이러한 리소스의 타입을 나타냅니다. Content-Type을 보고 웹 브라우저가 어떤 방식으로 렌더링을 할지 정하게 됩니다.

  • 받아온 리소스 파일을 브라우저가 렌더링하여 사용자에게 보여주고 이때, 브라우저가 html 파일을 파싱하여 DOM 트리를 구성합니다. css 파일 또한 파싱하여 CSSOM 트리를 구성하고, 이 두 트리를 합쳐 렌더 트리를 구성합니다. 이 렌더 트리를 기반으로 렌더링하게 됩니다.

✅정리

브라우저가 자신의 hosts 파일과 DNS 캐시에 도메인에 해당하는 IP주소를 찾고 만약 없을 경우에는 DNS 서버에 구글 주소를 호스팅하고 있는 ip주소를 찾기 위해서 dns 쿼리를 보냅니다. 그렇게 DNS서버에서 IP 주소를 받고 라우터를 통해 가다가 ARP를 통해 MAC주소로 매칭시켜 서버와 TCP 연결을 수행하며 연결을 확정시키면 서버로부터 리소스를 받게됩니다. 브라우저는 이 리소스를 렌더트리를 생성하여 화면에 보여주게 됩니다.

profile
김성은입니다.
post-custom-banner

0개의 댓글