브라우저에 www.google.com을 입력하게 된다면??

2023. 6. 2. 10:39CS/네트워크

한줄 요약 : 사용자 컴퓨터에서 실행되는 브라우저가 www.google.com 이라는 집주소(IP)를 찾아가서 문서(HTML)를 가져오고, 그 문서를 사용자 모니터에 보여준다.

1. 브라우저 주소창www.google.com을 입력한다.

브라우저 창에 주소를 입력해본다.


브라우저 캐시 뒤져보기

캐시 저장소.

브라우저가 google.com의 IP 주소를 찾기 위해 캐시에서 DNS 기록을 확인한다.

  • DNS는 웹사이트의 IP주소와 도메인 주소를 연결해주는 시스템이다.
  • 모든 URL에는 고유한 IP 주소가 할당되어 있다.
  • ( IP 주소 : 각각 컴퓨터의 주소 ) : 000.000.000.000
  • IP주소는 액세스의 요청 웹사이트의 서버를 호스트하는 컴퓨터에 속한다.

예를 들어,google.com의 IP 주소는 142.250.196.110이다.

따라서 원하는 경우 브라우저에서 https://142.250.196.110 를 입력하여 www.google.com에 접속할 수 있다.

 

DNS란? DNS(Domain Name Server) 서버

할당된 도메인 영역에 대한 정보를 가지고 있는 서버로, 주로 도메인을 IP주소로 변환하는 역할을 한다.

DNS의 주요목적인 사람들이 쉽게 사이트 주소를 찾을 수 있도록 도와주는것이다. IP주소를 이용해도 사람들은 서버의 컴퓨터를 잘 찾아갈 수 있지만, 우리 유저들이 일일히 치기 힘들고, 알아보기 힘들기 때문에 DNS를 이용해 142.250.196.110 → www.google.com 으로 매핑해주면 편하다.

 

캐시를 찾는 과정

DNS 기록을 찾기 위해서 브라우저는 4개의 캐시를 확인한다.

  1. DNS 쿼리 : 브라우저 캐시 확인 → 이전에 방문한 웹사이트의 DNS 기록을 일정기간 동안 저장
  2. OS 캐시 : 브라우저 캐시에서 데이터가 없다면, 내 컴퓨터 OS에 시스템 호출 → DNS기록을 가져옴
  3. 라우터 캐시 : OS 캐시에도 없다면 라우터에서 DNS 기록을 확인
  4. ISP : 위의 모든 과정에 없다면 ISP에서 기록을 찾음

라우터 : 컴퓨팅 디바이스와 네트워크를 다른 네트워크에 연결하는 네트워킹 디바이스 : 공유기.

ISP : 인터넷 서비스 제공자 : KT… SK… U+…

 

😒 왜이렇게 많은 캐시를 유지하냐 의문을 가진다면..

→ 캐싱된 정보가 개인정보 보호에는 위험할 수 있지만, 캐시는 네트워크 트래픽을 규제하고 데이터 전송 시간을 개선하는데 필수적이다.


서버의 IP 주소 찾기

만약 요청한 URL(google.com)이 캐시에 없다면, ISP의 DNS 서버가 DNS 쿼리로 google.com을 호스팅하는 서버의 IP 주소를 찾는다.

😒 DNS 쿼리란?

  • 웹 사이트에 대한 올바른 IP 주소를 찾을 때까지 인터넷에서 여러 DNS 서버를 검색
  • 필요한 IP 주소를 찾거나, 찾을 수 없다는 오류 응답을 반환할 때까지 한 DNS 서버에서 다른 DNS 서버로 검색이 반복적으로 계속되기 때문에 이 유형의 검색을 재귀적 질의(Recursive Query)라고 한다.

웹사이트 도메인 아키텍쳐

  • 적절한 IP를 찾아 가는 과정위와 같은 요청(Request)은 내용 및 IP 주소(DNS 리커서의 IP 주소)와 같은 정보를 작은 데이터 패킷에 담겨 전송된다. 이 패킷은 올바른 DNS 서버에 도달하기 전에 클라이언트와 서버 사이의 여러 네트워킹 장비를 통해 이동한다. 이 장비는 라우팅 테이블을 사용하여 패킷이 목적지에 도달할 수 있는 가장 빠른 방법을 알아낸다. 만약 이동 도중에 패킷이 손실되면, 요청 실패 오류가 발생한다. 그렇지 않으면 올바른 DNS 서버에 도달하여 IP 주소를 가져온 후 브라우저로 돌아간다.
  • 그렇다면 다시 google.com 으로 돌아와보자. google.com의 경우 먼저 DNS 리커서가 루트 네임 서버(Root Name Server)에 연결한다. 루트 이름 서버는 리커서를 .com 도메인 네임 서버로 리디렉션한다. .com 네임 서버는 google.com 네임 서버로 리디렉션한다. google.com 네임 서버는 DNS 기록에서 maps.google.com과 일치하는 IP 주소를 찾아 DNS 리커서로 반환하고, 리커서는 이를 브라우저로 다시 보낸다.

서버와 TCP 연결 시작

이제 올바론 서버의 IP 주소를 알았으니, 브라우저가 해당 서버와 TCP 연결을 시작한다.

브라우저가 올바른 IP 주소를 수신하면 IP 주소와 일치하는 서버와 연결해 정보를 전송한다.

브라우저는 인터넷 프로토콜(IP, Internet Protocol)을 사용하여 이러한 연결을 구축한다. 사용할 수 있는 여러가지 인터넷 프로토콜이 있지만, 일반적으로 HTTP 요청에서는 TCP(Transmission Control Protocol) 라는 전송 제어 프로토콜을 사용한다.

TCP 통신

내 컴퓨터(클라이언트)와 서버 간에 데이터 패킷을 전송하려면 TCP 연결을 해야 한다. 이 연결은 TCP/IP 3-way handshake라는 연결 과정을 통해 이뤄진다. 클라이언트와 서버가 SYN(synchronize: 연결 요청) 및 ACK(acknowledgement: 승인) 메시지를 교환하여 연결을 설정하는 3단계 프로세스이다.

  1. 클라이언트는 인터넷을 통해 서버에 SYN 패킷을 보내 새 연결이 가능한지 여부를 묻는다.
  2. 서버에 새 연결을 수락할 수 있는 열린 포트가 있는 경우, SYN/ACK 패킷을 사용하여 SYN 패킷의 ACK(승인)으로 응답한다.
  3. 클라이언트는 서버로부터 SYN/ACK 패킷을 수신하고 ACK 패킷을 전송하여 승인한다.

내 컴퓨터( IP )와 서버 컴퓨터( DNS → IP )에 대한 터널(TCP 연결) 이 생겼으니 이제 남은것은?


브라우저가 웹서버에 HTTP 요청 보냄

출처 : 생활코딩

 

TCP 연결이 설정 되면 데이터 전송을 요청할 수 있다. 브라우저는 google.com 웹 페이지를 요청하는 GET 요청을 보낼 것이다.


서버가 요청을 처리 하고 응답을 보냄

서버에는 웹 서버(예: Apache, IIS)가 포함되어 있는데, 이는 브라우저로부터 요청을 수신하고, 해당 내용을 request handler에 전달하여 응답을 읽고 생성하는 역할을 한다.

😒 Request handler ?

요청, 요청의 헤더 및 쿠키를 읽고 필요한 경우 서버의 정보를 업데이트하는 프로그램이다(NET, PHP, Ruby, ASP 등으로 작성됨). 그런 다음 response를 특정 포맷으로(JSON, XML, HTML)으로 작성한다.


HTTP 응답을 보낸다.

서버 응답에는 요청한 웹 페이지와 함께 상태 코드(status code), 압축 유형(Content-Encoding), 페이지 캐싱 방법(Cache-Control), 설정할 쿠키, 개인 정보 등이 포함 된다.

  • HTTP 응답
    • 1xx (Information Response): 정보 메시지만을 나타낸다. 서버가 요청을 받았으며 서버에 연결된 클라이언트는 계속해서 작업을 하라는 뜻.
    • 2xx (Successful Response): 서버와의 요청이 성공함을 나타냄
    • 3xx (Redirection Message) : 요청 완료를 위해 추가 작업 조치가 필요함을 의미함. 위 사진의 301(Moved Permantly)는 요청한 리소스의 URI가 변경 되었음을 뜻한다.
    • 4xx (Client Error Response) : 클라이언트의 Request에 에러가 있음을 의미함.
    • 5xx (Server Error) : 서버 측의 오류로 request를 수행할 수 없음.
    • 따라서 오류가 발생한 경우 HTTP 응답을 확인하여 수신한 상태 코드의 유형을 확인할 수 있다.
  • 위의 응답을 보면 'Status Code' 헤더에 상태 코드가 숫자로 표시된다. 이것은 우리에게 response의 상태를 알려주기 때문에 매우 중요하다. 숫자 코드를 사용하여 HTTP 응답 결과를 다섯 가지 상태로 나타낸다.

브라우저가 HTML 컨텐츠를 보여줌

브라우저는 응답 받은 HTML 문서를 화면에 단계별로 표시한다. 이는 아래의 링크를 참고하길 바란다.

그런 다음 HTML 태그를 확인하고 이미지, CSS 스타일시트, 자바스크립트 파일 등과 같은 웹 페이지의 추가 요소에 대한 GET 요청을 보낸다.

정적 파일(Static File)은 브라우저에서 캐싱되므로 다음에 페이지를 방문할 때 다시 가져올 필요가 없다. 그리고 마지막으로, google.com 페이지가 브라우저에 나타난다.

 

[참고자료]

브라우저 렌더링은 어떻게 이루어지는가 : https://d2.naver.com/helloworld/59361

 

 

출처:

https://velog.io/@khy226/브라우저에-url을-입력하면-어떤일이-벌어질까

https://blog.naver.com/wngjs3/222061315403

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

브라우저 렌더링부터 CSR,SSR,SPA,MPA 정리 까지  (0) 2023.01.16
간단한 프로토콜 HTTP  (0) 2022.03.11
웹과 네트워크 계층  (0) 2022.03.04