클라이언트-서버 모델
HTML, CSS, jQuery, Ajax, HTTP, 웹 프레임워크 등과 같은 웹 기술은 클라이언트-서버 모델을 중심으로 구축된다.
이 아키텍처에서는 클라이언트(웹 브라우저)와 서버(웹 애플리케이션의 호스트)가 인터넷에 연결되어 있다.
클라이언트는 항상 웹 서버에서 호스팅 되는 웹 페이지에 대한 액세스를 요청(request)하여 통신을 시작한다.
모든 요청에 대해 웹 서버는 요청된 웹 페이지의 사본으로 응답(response)하고 이미지, 음악, 비디오, Word 문서, PDF 등과 같은 리소스가 서버에서 웹 브라우저 상에서 출력될 클라이언트 컴퓨터로 다운로드된다.
대개 웹 페이지는 마크 업 언어(HTML/XML) 중 하나로 작성된다. 브라우저와 웹 서버 외에도 인터넷 연결, TCP/IP, DNS, HTTP 등과 같은 통신을 가능케 하는 여러 요소가 있다.
HTTP 프로토콜
HTTP은 이러한 클라이언트-서버 모델 상에서 작동하는 요청-응답 프로토콜(Request-Response Protocol)이다. 예를 들어, 클라이언트인 웹 브라우저가 HTTP를 통하여 서버로부터 웹페이지(HTML)나 그림 정보를 요청하면, 서버는 이 요청에 응답하여 필요한 정보를 해당 사용자에게 전달하게 된다. 이 정보가 모니터와 같은 출력 장치를 통해 사용자에게 나타나는 것이다.
또한, HTTP는 TCP/IP 내에서 브라우저와 웹 서버 간에 이루어지는 계층 통신 중 하나이며, 클라이언트와 서버가 웹에서 서로를 이해할 수 있는 방식으로 요청 메시지와 응답 메시지를 구성하는 데 도움을 준다. 이 메시지에 대한 자세한 내용은 다음 포스팅에서 다룰 예정이다.
클라이언트와 서버간에 전송되는 리소스는 URL로 식별되는 정보의 덩어리이며, 일반적으로 리소스는 파일 또는 동적으로 생성된 쿼리 결과나 스크립트, 혹은 웹 문서이다.
HTTP에 대해 알아야 할 중요하면서도 기본적인 것은 HTTP는 상태 비 저장 프로토콜이라는 것이다. 다시 말해, 서버와 브라우저는 현재 요청 및 응답주기(request and response cycle) 동안에만 서로를 알고 있다. 그 후 서버와 클라이언트 서로를 잊게 된다. 이러한 특성으로 인해 브라우저나 서버는 통신주기의 서로 다른 요청 간에 정보를 유지할 수 없다. 쉽게 말하자면 HTTP에서 요청과 응답을 하는 주체는 서로를 기억하지 못한다는 말이며, 이러한 특성 때문에 HTTP에서는 양방향 통신이 불가능하다. 이는 추후 쿠키와 세션, 웹소켓 등의 개념이 등장하는 계기가 된다.
참고
sasi-kala.com/blog/rails-internals-series-1
www.joinc.co.kr/w/Site/Network_Programing/Documents/IntroTCPIP
'CS > 네트워크' 카테고리의 다른 글
[네트워크] HTTP의 이해3: HTTP Terminologies (0) | 2021.02.14 |
---|---|
[네트워크] HTTP의 이해2: HTTP Request-Response Messages (0) | 2021.02.06 |
[네트워크] TCP/IP (0) | 2021.02.06 |
[네트워크] URL의 이해 - protocol, host, port, path, query (0) | 2021.01.29 |