web의 동작 원리
- 내가 웹 브라우저를 통해 특정 사이트에 접속하였을 때,
웹 페이지가 가져와지는 과정에 대해 알아보자.
- 웹의 동작 방식은 클라이언트가 서버에 요청을 보내면 서버는 요청에 대한 응답을 주는 과정이다.
- 즉, 클라이언트가 서버에게 request 요청을 보내면, 서버는 해당 요청에 대해 reponse 응답한다.
- 우선, 클라이언트-서버 간의 웹이 동작되는데에 필요한 요소들의 각 개념부터 알아보자.
용어 정리
- Client
- 사용자가 웹에 접근하는 프로그램을 말한다.
예를들어 크롬이나 파이어 폭스같은 웹 브라우저이다.
- 클라이언트는 사용자로부터 받은 URL 에 대한 정보를 찾아 HTTP 메시지 형태로 서버에게 요청(Request)한다.
- Server
- 웹 서버는 웹 페이지, 사이트 또는 앱을 저장하는 프로그램이다.
- 서버는 클라이언트에서 요청한 HTTP 메시지를 확인한 후, HTML, CSS, Image 등의 데이터를 처리하여 클라이언트에게 응답한다.
- WAS(Web Application Server)
- 사용자 컴퓨터나 장치에 웹 어플리케이션을 수행해주는 미들웨어이다.
(종류로는 아파치 톰캣, 레진 등이 있다.)
- 클라이언트에게 메시지를 받으면 서버는 요청에 필요한 로직이나 데이터 베이스의 연동을 위해 WAS 에게 요청한다. 그럼 WAS 는 요청을 받아와 DB 에서 데이터 정보를 받아온다.
이렇게 연동하여 얻은 데이터를 다시 서버에게 반환한다.
- 서버를 돕는 조력자라고 생각하면 된다.
- 만약, 서버 혼자서 모든 로직을 수행하고 데이터를 관리한다면 간단하겠지만
서버에서 모든일을 처리하게 되면 과부화가 일어날 가능성이 크다. 따라서 서버의 일을 돕는 조력자라고 불리는 것이다.
- DB
- 데이터를 저장하는 공간이며 WAS 에서 데이터를 요청하면 필요한 데이터를 응답한다.
- WAS 에서 로직을 수행하다가 데이터를 받아와야하는 작업이 필요하면, SQL 질의를 통해 DB에 접근한다.
브라우저에 출력되는 과정
- 우리가 브라우저에 네이버나 구글 같은 웹 주소를 입력했을 때 발생하는 과정이다.
1,2 - 사용자가 웹 브라우저를 통해 찾고 싶은 웹 페이지의 URL 주소를 입력한다.
3 - 사용자가 입력한 URL 주소 중에서 도메인 네임 부분을 DNS 서버에서 검색한다.
4 - DNS 서버에서 해당 도메인 네임에 해당하는 IP 주소를 URL 과 함께 전달한다.
5,6 - 웹 페이지의 URL 정보와 전달받은 IP 주소는 HTTP 프로토콜을 사용하여 HTTP 요청 메시지를 생성한다.
이렇게 생성된 HTTP 요청 메시지는 TCP 프로토콜을 사용하여 인터넷을 거쳐 해당 IP 주소의 컴퓨터로 전송된다.
7 - 도착한 HTTP 요청 메시지는 HTTP 프로토콜을 사용하여 웹 페이지 URL 정보로 변환됨
8 - 웹 서버는 도착한 URL 정보에 해당하는 데이터를 검색
9,10 - 검색된 웹 페이지 데이터는 또 다시 HTTP 프로토콜을 사용하여 HTTP 응답 메시지를 생성한다.
이렇게 생성된 HTTP 응답 메시지는 TCP 프로토콜을 사용하여 인터넷을 거쳐 원래 컴퓨터로 전송된다.
11 - 도착한 HTTP 응답은 HTTP 프로토콜을 사용하여 웹 페이지 데이터로 변환된다.
12 - 변환된 웹 페이지 데이터는 웹 브라우저에 의해 출력되어 사용자가 볼 수 있게 된다.
용어 정리
- TCP/IP 란?
- TCP(전송 제어 규약)과 IP(인터넷 규약)은 데이터를 전송하기 위한 프로토콜이다.
- TCP
- IP 프로토콜을 기반으로하며, 데이터를 안정적으로 전송하기 위한 프로토콜이다.
- 데이터를 전송하기 전에 연결을 맺고, 연결을 유지하며 데이터를 전송한다.
- IP
- 컴퓨터간에 데이터를 전송하기 위한 프로토콜이다.
- 각 패킷에 출발지 IP 주소와 목적지 IP 주소를 포함하여 전송된다.
- 또한 패킷을 전달하는 경로를 결정하기 위한 라우팅 기능을 제공한다.
DNS 란?
- 도메인 이름과 IP 주소를 매핑하기 위한 시스템(주소록 이라 생각하면 쉽다)
- 사용자가 도메인 이름을 입력하면, 해당 도메인 이름에 대한 IP 주소를 찾기 위해 로컬 DNS 서버에 요청을 보낸다.
- DNS 서버는 요청된 도메인 이름에 대한 IP 주소를 찾고 확인하고,
정보를 가지고 있지 않으면 다른 DNS 서버에서도 찾아 확인하여 IP 주소를 응답에 담아 보낸다.
HTTP 란?
- 인터넷 상에서 웹 페이지와 같은 하이퍼 텍스트 문서를 전송하기 위한 프로토콜이다.( 요청과 응답 메시지는 아스키 문자열이다)
- 웹 브라우저와 서버간의 통신에서 주로 사용된다.
- HTTP 는 클라이언트와 서버간의 요청(request)과 응답(response)를 주고받는 방식으로 동작한다.
패킷이란?
- 컴퓨터 네트워크에서 데이터를 전송할 때 사용되는 작은 단위의 데이터 덩어리로, 데이터 전송의 기본 단위이다.
- 데이터의 일부분을 포함하고 있으며, 이를 다른 컴퓨터나 장치로 전송하여 전체 데이터를 완전히 전달할 수 있다.
- '헤더'와 '데이터' 부분으로 구성되며, 출발지와 목적지 ip 주소, 포트 번호 등이 담겨있다.
참조한 사이트
참고자료_1
참고자료_2
참고자료_3
참고자료_4