ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • www.google.com을 검색하면 어떤일이 발생할까
    CS/컴퓨터네트워크 2022. 5. 4. 00:21
    728x90

    1. 사용자는 브라우저 주소창에 www.google.com을  을 친다.

    2. DNS lookup을 통해 해당 domain의 server IP 주소를 알아냅니다.

    *DNS(Domain Name System) : 도메인 이름 시스템(DNS)은 사람이 읽을 수 있는 도메인 이름(예: www.google.com)을 머신이 읽을 수 있는 IP 주소(예: 192.0.2.44)로 변환합니다. 웹사이트를 위한 전화번호부 같은 존재라고 생각하면 됩니다.

    *DNS lookup : DNS정보를 조회하는 명령어로 서버, 주소등을 알 수 있다.

    2-1) DNS의 동작 과정

    https://www.netmanias.com /ko/post/blog/5353/dns/dns -basic-operation

    1. 우선 www.google.com을 검색하면 우선 Local DNS에서 구글의 IP주소를 물어본다.

    2. 만약 구글의 IP주소가 Local DNS에 존재하지 않는다면 해당 주소를 찾아내기 위해 다른 DNS 서버와 통신해야 한다.

    3. Root DNS에게 네이버의 IP주소를 물어본다. (Root DNS는 전 세계에 13대가 존재하고, 우리나라엔 존재하지 않음)

    4. Root DNS에도 존재하지 않으면 Root DNS가 추천해준 com DNS에 가서 물어보고 com DNS에도 존재하지 않으면  com DNS가 추천해준 google.com DNS에 물어봅니다.

    5. 만약 google.com DNS에 구글의 IP주소가 존재한다면 해당 주소를 반환하며 Local DNS에 해당 주소를 캐싱합니다.

    (우리 전화번호부에 google.com IP주소를 기입해 둔다고 생각하면 좋습니다.)

    이와 같이 Local DNS -> Root DNS -> com DNS -> google.com DNS로 이동하며 IP주소를 찾는 과정이 발생하고 발견하면 언제든 return합니다.

    3) 브라우저가 서버와 TCP 연결을 합니다.

    인터넷 프로토콜의 종류는 여러가지가 있지만, 웹사이트의 HTTP 요청의 경우에는 일반적으로 TCP를 사용한다.

    클라이언트와 서버간 데이터 패킷들이 오가려면 TCP/IP three-way handshake라는 프로세스를 통해서 클라이언트와 서버의 connection이 이루어진다.

    *TCP/IP three-way handshake

    https://bangu4.tistory.com/74

    1. 클라이언트 머신이 SYN 패킷을 서버에 보내고 connection을 열어달라고 물어본다
    2. 서버가 새로운 connection을 시작할 수 있는 포트가 있다면 SYN/ACK 패킷으로 대답을 한다
    3. 클라이언트는 SYN/ACK 패킷을 서버로부터 받으면 서버에게 ACK 패킷을 보낸다

       * SYN : "동시에 발생하다의 줄임말" 다른 컴퓨터로 전송 된 TCP 패킷으로 연결이 이루어 지도록 요청합니다.

       * ACK : "승인의 줄임말"

    4) 브라우저가 웹 서버에 HTTP 요청을 합니다.

    TCP로 연결이 되었으므로 이제 데이터를 전송하면 됩니다.

    클라이언트의 브라우저는 GET 요청을 통해 www.google.com  웹 페이지를 요청한다.

    요청할 때 비밀 자료나, form을 제출해야하 하는 상황에선 POST 요청을 할 수도 있다.

    아래는 sample입니다.

    https://devjin-blog.com/what-happen-browser-search/

    5) 서버가 request를 처리하고 response를 생성한다.

    서버는 브라우저로부터 request를 받아 처리한다. 그리고 response를 생성해서 보내준다. request에서는 http 요청을 통해 받아온 다양한 헤더 정보와 데이터들로 요청을 처리하고 response를 생성한다. 이때 response는 특정한 포멧 (JSON, XML, HTML ) 등으로 작성합니다.

    6) 서버가 HTTP response를 보낸다.

    서버의 response에는 HTTP 프로토콜에 따른 헤더 정보와 데이터들 보냅니다. 이때 status code로 response 상태를 표현하고, 어떻게 인코딩 되어 있는지, 어떻게 페이지를 캐싱할지, 설정할 쿠키가 있다면 쿠키, 개인정보 등을 포함한다.

    샘플 HTTP서버 response는 다음과 같다.

     - 2xx response가 성공적

    https://devjin-blog.com/what-happen-browser-search/

    7) 브라우저가 HTML 렌더링을 통해 HTML content를 보여준다.

    브라우저는 HTML content를 단계별로 보여줍니다.

    1. HTML의 기본 틀을 렌더링한다.

    2. HTML tag들을 체크하고 추가적으로 필요한 웹페이지 요소(img, css, stylesheet, js등) 들을 GET으로 요청한다.

    3. 정적인 파일들은 브라우저에 의해 캐싱 되어 나중에 해당 페이지를 방문할 때 다시 서버로부터 불러와지지 않도록 한다.

     

    참고)

    https://velog.io/@eassy/www.google.com%EC%9D%84-%EC%A3%BC%EC%86%8C%EC%B0%BD%EC%97%90%EC%84%9C-%EC%9E%85%EB%A0%A5%ED%95%98%EB%A9%B4-%EC%9D%BC%EC%96%B4%EB%82%98%EB%8A%94-%EC%9D%BC

    https://devjin-blog.com/what-happen-browser-search/

    728x90

    'CS > 컴퓨터네트워크' 카테고리의 다른 글

    HTTP vs HTTPS  (0) 2022.06.13

    댓글

Designed by Tistory.