Web/Network

[Web] 웹 서버와 웹 브라우저의 통신 : HTTP, DNS, 라우터

생각많은 프로그래머 2024. 1. 28. 08:51

우리가 일상에서 가장 자주 접하는 클라이언트는

구글 크롬과 같은 웹 브라우저일 것이다.

 

정확히 말하면, 웹 서버에 접속할 수 있는 웹 브라우저로,

HTTP라는 프로토콜을 통해

클라이언트(웹 브라우저)와 웹 서버가 서로 통신한다.

 

그렇다면 구체적으로 어떻게 통신하는 것인지 살펴보자.

먼저 구글에 접속해본다고 상황을 가정해보면,

보통 www.google.com 라는 구글의 도메인 네임을 통해 접속한다.

구글 웹 서버의 IP 주소를 알아내서 접속하지 않는다.

 

하지만 서버의 위치를 정확히 알아내서 접속하려면

IP주소와 포트번호가 필수적으로 필요하다고 했었는데,

구글 도메인 네임만으로 어떻게 접속이 가능했던 걸까?

그 사이에는 DNS(Domain Name System)이 있었기에 가능했다.

 

 

클라이언트가 구글 서버에 접속하는 과정을 순서대로 정리해보자.

 

1. 클라이언트가 DNS 서버에 어떤 도메인 네임의 IP주소를 조회한다.

 

DNS는 인터넷 상에서 도메인 네임을 IP로 변경해주는 역할을 담당한다.

 

DNS도 하나의 서버이다.

클라이언트가 도메인 네임을 알려주면서

DNS에게 해당 도메인 네임의 IP주소를 요청하면, - (1)

DNS가 해당 도메인 네임의 IP주소로 응답을 하는 것이다. - (2)

 

(1) www.google.com 의 IP주소는 무엇인가?

(2) www.google.com 의 IP주소는 XXX.XXX.XXX.XXX이다.

 

2. 웹 서버의 IP주소와 함께 클라이언트의 요청이 공유기와 라우터를 거친다.

 

구글 웹 서버의 IP를 가지고 출발한 클라이언트의 요청은

PC에 연결된 랜선이나 와이파이 전파를 타고 공유기를 거쳐

인터넷 구간을 지난다. 

 

인터넷은 KT와 같은 인터넷 사업자들에 의해 관리되는 회선으로,

회선 중간마다 라우터가 존재한다. 

이 라우터는 클라이언트의 요청에 적혀 있는 IP주소를 기반으로

다음 경로를 안내한다. 보통 국내에서 서비스 중인 웹 서버에 

접근할 때는 3~15개 정도의 라우터를 거친다. 

 

**** 참고로 DNS에 요청하는 것을 포함해 클라이언트의

모든 요청은 공유기를 통해 라우터를 거친다.

DNS 역시 구글의 웹 서버처럼 공유기를 통해 접근하는 서버임을 

기억해 주시기를..!

 

3. 웹 서버 애플리케이션은 클라이언트 요청에 해당하는 HTML 문서를
최종적으로 클라이언트(웹 브라우저)에게 전달한다.

 

라우터의 안내를 받아 구글의 웹 서버에 도달한 클라이언트의 요청은

구글의 웹 서버에서 실행 중인 웹 서버 애플리케이션에게 전달된다.

그러면 웹 서버 애플리케이션은 클라이언트의 요청에 해당하는 

HTML 문서를 응답으로 준다. 

이 HTML 문서는 왔던 길을 다시 되돌아가 최종적으로 

클라이언트(웹 브라우저)에게 전달되며 통신이 끊긴다. 

 

이렇게 전달받은 HTML문서는 구글 크롬의 개발자 도구에서 확인할 수 있다.

F12 키를 눌러 개발자 도구를 키고 Network 탭에 들어간 후

주소창에 www.google.com  을 입력하여 접속해보면,

 Network탭에서 좌측 중앙쯤 Name섹션에

www.google.com  이 보이는데 이 부분을 클릭한 후에

우측 중앙에 Response탭을 클릭하면

응답 시 받은 HTML 문서를 볼 수 있다.

이 HTML문서는 jsp파일이 HTML문서로 렌더링 되어 

클라이언트에게 전해지는 것인데, 이 부분은 별도로 다뤄보겠다!