• 웹의 동작 원리(feat.인터넷 주소창에 www.google.com을 치면 어떤 동작 과정이 일어날까?)

    2022. 9. 23.

    by. 개발도비

    www으로 시작하는 주소를 치고 들어가면 어떤 과정을 거쳐서 페이지를 보여주게 될까?  www.google.com 을 입력하면 어떤 동작 과정이 일어나나요?와 같은 질문이 면접 질문으로 자주 나온다고 한다. 이는 내가 실제로 면접에서 들었던 질문이기도 한데, 대답을 제대로 못 했던 것이 생각나서 웹의 동작 원리에 대해 한 번 정리해보려고 한다.

     

     

    일단 Web의 동작 원리에 대해 알아보자. 웹의 동작 방식은 간단하게 이렇게 표현할 수 있다.

    : 클라이언트가 서버에 요청(request)을 보내면 서버는 요청에 대한 응답(response)을 해준다. 

     

    클라이언트와 서버 외에도 여러 가지 다른 요소들의 요청과 응답이 이루어지면서 데이터를 받아온다. 

     

    Web Client

    : 사용자가 웹에 접근하는 프로그램(ex.크롬같은 웹 브라우저). 클라이언트는 사용자로부터 받은 URL에 대한 정보를 찾아 HTTP 메시지 형태로 서버에 요청한다

     

    Web Server

    : 웹 페이지를 저장하는 프로그램으로 Apache Web Server가 있다. 서버는 클라이언트에서 요청한 HTTP 메시지를 확인한 후, HTML,CSS, Image 등의 데이터를 처리하여 클라이언트에 응답한다.

     

    WAS(Web Application Server)

    : 앞에 말한 서버로 모든 로직을 수행하면 과부하가 일어날 수 있기 때문에 서버를 돕는 조력자 역할을 한다. 서버는 DB의 연동을 위해 WAS에게 처리를 요청하기도 한다. 사용자 컴퓨터나 장치에 웹 어플리케이션을 수행해주는 미들웨어로 Apache Tomcat이 있다. 

     

    DB(DataBase)

    : 데이터의 정보를 저장하는 곳으로 WAS에서 데이터를 요청하면 필요한 데이터를 응답한다. WAS에서 로직을 수행하다가 데이터를 저장하거나 받아오는 작업이 필요하면 SQL 질의를 통해 DB에 접근한다. 요청받은 DB는 동적인 페이지 처리를 담당하고, 다시 WAS에 데이터를 보내는 응답을 한다. 즉, WAS는 DB와 연동하여 데이터를 처리하고 생성한 파일을 다시 서버에게 반환한다. 

     

     

    웹사이트가 브라우저에 출력되는 과정

    요청(Request) 

    1. 사용자가 브라우저에 입력한 URL은 DNS(Domain Name System)서버를 통해 도메인이 IP주소로 변환된다. 

    2. 브라우저(송신자)는 IP주소로 서버에 요청하는데 HTTP(HyperText Transfer Protocol)를 통해 데이터가 전송된다. 

    3. HTTP 요청메시지는 요청 방식, 송신자/수신자에 대한 데이터 등을 담고 TCP프로토콜을 사용해 서버(수신자)로 전송된다.

     

     

    응답(Response)

    4. 서버는 HTTP메시지를 받고 요청 URL에 대한 데이터를 찾는다.

    5. 서버가 브라우저에게 응답할 때도 HTTP 메시지가 전송된다.

    6. HTTP 응답 메시지에는 응답 상태 코드, 데이터 유형, 페이지를 화면에 렌더링하는데 필요한 코드 등을 포함하여 TCP프로토콜을 통해 브라우저로 전송한다

    7. 도착하면 브라우저가 파싱 및 렌더링 과정을 거쳐 최종적으로 화면에 표시된다.

     

     

    웹의 동작 원리는 OSI 7계층 관점으로 설명할 수도 있고 TCP/IP 4계층 관점으로 설명할 수도 있고 DNS에 더 중점을 두고 설명할 수도 있다. 아래의 그림과 설명을 참고해도 좋을 것 같다. 

    ww

    ①② 사용자가 웹 브라우저를 통해 찾고 싶은 웹 페이지의 URL 주소를 입력함.

    ③ 사용자가 입력한 URL 주소 중에서 도메인 네임(domain name) 부분을 DNS 서버에서 검색함.

    ④ DNS 서버에서 해당 도메인 네임에 해당하는 IP 주소를 찾아 사용자가 입력한 URL 정보와 함께 전달함.

    ⑤⑥ 웹 페이지 URL 정보와 전달받은 IP 주소는 HTTP 프로토콜을 사용하여 HTTP 요청 메시지를 생성함.

    이렇게 생성된 HTTP 요청 메시지는 TCP 프로토콜을 사용하여 인터넷을 거쳐 해당 IP 주소의 컴퓨터로 전송됨.

    ⑦ 이렇게 도착한 HTTP 요청 메시지는 HTTP 프로토콜을 사용하여 웹 페이지 URL 정보로 변환됨.

    ⑧ 웹 서버는 도착한 웹 페이지 URL 정보에 해당하는 데이터를 검색함.

     

    ⑨⑩ 검색된 웹 페이지 데이터는 또 다시 HTTP 프로토콜을 사용하여 HTTP 응답 메시지를 생성함.

    이렇게 생성된 HTTP 응답 메시지는 TCP 프로토콜을 사용하여 인터넷을 거쳐 원래 컴퓨터로 전송됨.

     

    ⑪ 도착한 HTTP 응답 메시지는 HTTP 프로토콜을 사용하여 웹 페이지 데이터로 변환됨.

    ⑫ 변환된 웹 페이지 데이터는 웹 브라우저에 의해 출력되어 사용자가 볼 수 있게 됨.

     

    References

    http://tcpschool.com/webbasic/works

    https://d2.naver.com/helloworld/59361

    https://swimjiy.github.io/2020-04-04-web-http

    댓글