본문 바로가기
프로그래밍

(191207) Server, Client, API, Browser

by 양털의매력 2019. 12. 7.

Client (클라이언트)

네트워크를 통하여 서버라는 다른 컴퓨터 시스템 상의 원격 서비스에 접속 할 수 있는 응용 프로그램 또는 서비스를 말한다.

즉, 클라이언트-서버 구조에서 서버가 제공하는 서비스 (정보, 리소스)를 요청하고, 서비스 요청을 위해 필요한 인자를 서버가 원하는 방식에 맞게 제공하며, 서버로부터 반환되는 응답을 사용자에게 적절한 방식으로 표현하는 프로그램이나 시스템을 말한다.

 

우리가 인터넷을 통해 사용하는 많은 것들이 클라이언트라고 볼 수 있다. 

ex. 웹 브라우저, 이메일, 채팅어플, 게임.. 등등

 

실생활에서 예를 들어보면 카페라는 서버가 있다고 할 때 카페에 가서 음료를 주문하는 고객을 클라이언트라고 생각해 볼 수 있다.

고객은 카페에서 다양한 음료를 카페에 요청을 보내고 카페는 이 요청에 대한 응답으로 커피를 주거나 혹은 커피가 떨어져서 제공할 수 없을 때 제공할 수 없다는 응답을 받을 것이다. 

 

Server (서버)

서버란 쉽게 한 마디로 정리하면 자원(resource)을 serve 하는 주체라고 할 수 있다.

 

클라이언트(client)에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 시스템으로 컴퓨터 프로그램 또는 장치를 의미한다.

 

즉, 서버의 역할을 수행하고 있다면 서버 컴퓨터라고 불릴 수 있다. 우리가 평소에 사용하는 노트북, 데스크탑 컴퓨터도 서버의 역할을 하면 서버 컴퓨터로 불릴 수 있다는 것이다. 다만 우리가 평소에 그렇게 사용을 안할 뿐이지 어떤 형태의 컴퓨터든 서비스를 제공하는 역할을 수행한다면 서버 컴퓨터로 불릴 수 있다.

 

그리고 이렇게 클라이언트 요청에 의하여 서버가 서비스를 하도록 구성된 시스템을 클라이언트-서버 시스템이라고 한다.

 

클라이언트 종류만큼 서버의 종류도 다양하다. 

ex. 웹 서버, 메일 서버, 어플리케이션 서버, 게임 서버... 등등

 

위에서 들었던 실생활 예시에서 카페가 서버의 역할을 하는 것이다. 카페(서버)는 고객(클라이언트) 요청에 따라 커피 주문을 받으면 창고 (DB, 데이터베이스)에서 커피 원두를 꺼내 커피를 만들고 고객에게 응답으로 커피를 줄 것이다. 

 

즉, 클라이언트의 요청을 받으면 리소스를 바탕으로 클라이언트에게 응답을 준다. 그리고 클라이언트는 그 응답을 받아 사용자에게 적절한 형태로 보여줄 것이다.

 

API (Application Programming Interface)

API는 위키백과에서 다음과 같이 정의되어 있다.

 

API는 응용프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다.

즉, 서버 자원을 잘 가져다 쓸 수 있도록 만들어 놓은 interface라고 할 수 있다. 어떤 응용 프로그램이 자신이 가지고 있는 정보를 제공하기 위해 어떤 방식으로 통신할 것인지에 대한 규격을 만들게 되고 이러한 규격을 API 라고 하는 것이다!!

 

API는 정보(자원, 리소스)를 가지고 있는 주체에서 만들다보니 API를 사용하는 입장에서는 어떻게 요청을 해야 정상적인 데이터를 받을 수 있을지 알 수가 없다. 그렇기 때문에 API를 제공하는 입장에서는 어떤 방식으로 요청을 해야하는지에 대한 문서를 만들게 되고 이것을 API 문서라고 표현한다!!

 

위에서 들었던 실생활 예시로 보면 카페에서 고객에게 보여주는 '메뉴판'으로 생각할 수 있다. 

고객(클라이언트)은 카페(서버)에 음료(정보,자원, 리소스)를 요청할 때 메뉴판(API)를 보고 어떻게 주문(요청)을 해야되는지 알 수 있고, 어떤 주문을 해야 어떤 음료가 나오는 지(응답으로 받는 데이터가 무엇이고, 어떻게 해야 정상적인 데이터를 받을 수 있는지) 알 수 있는 것이다. 

 

즉, 서버가 클라이언트에게 요청에 대한 응답으로 적절한 리소스를 제공할 수 있도록 하기 위해서, 클라이언트가 어떻게 서버에 리소스를 요청해야 하는지, 그리고 그 요청에 대한 응답으로 리소스를 어떻게 제공하는 지에 대해서 나타낸 것이라고 할 수 있다.

 

 

Browser (브라우저)

Web Browser(웹 브라우저)는 웹 서버의 모든 정보를 볼 수 있게 해주고, 하이퍼텍스트 문서 검색을 도와주는 응용 프로그램이다.

즉, 위에서 말한 클라이언트의 하나라고 볼 수 있다. 이때 웹 서버는 웹 브라우저와 같은 클라이언트의 HTTP 요청을 받아들이고, HTML 문서나 파일을 출력하는 그래픽 사용자 인터페이스(GUI) 기반의 응용 프로그램이다.

 

대표적인 웹 브라우저로는 모질라 파이어폭스, 구글 크롬, 인터넷 익스플로러/마이크로소프트 엣지, 오페라, 사파리가 있다.

 

웹 브라우저는 웹 페이지를 가져오기 위하여 HTTP(hyper-text transfer protocol)로 통신하고, HTTP를 이용해 웹 페이지를 가져올 뿐만 아니라, 웹 서버에 정보를 송신하기도 한다. (HTTP는 뒤에 다시 알아볼 에정이다.)

 

 

브라우저의 주요 기능

 

브라우저의 주요 기능은 사용자가 선택한 자원(리소스)를 서버에 요청하고 브라우저에 표시하는 기능이다.

이때 자원은 보통 HTML문서이지만 PDF나 이미지 또는 다른 형태가 될 수 있다. 그리고 이 자원의 주소는 URL(uniform resource identifier)에 의해 정해진다.

 

브라우저는 HTML과 CSS 명세에 따라 HTML 파일을 해석해서 표시하는데 이 명세는 웹 표준화 기구 W3C에 의해 정해진다.

(과거에는 브라우저들이 독자적인 방법으로 확장해서 심각한 호환성 문제가 있었지만, 최근에는 대부분 브라우저가 표준 명세를 따른다)

 

브라우저의 사용자 인터페이스는 대부분의 브라우저들이 서로 닮아 있다. 

(표준 명세가 없음에도 수 년간 서로의 장점을 모방하면서 비슷하게 발전)

 

- URL을 입력하는 주소 표시줄

- 이전 버튼 /다음 버튼

- 북마크

- 새로고침 버튼 / 정지 버튼

- 홈 버튼

 

 

브라우저의 기본 구조

(자세한 내용은 https://d2.naver.com/helloworld/59361 를 참고하자!!!)

 

1. 사용자 인터페이스 : 주소 표시줄, 이전/다음 버튼, 북마크 메뉴 등 요청한 페이지를 보여주는 창을 제외한 나머지 모든 부분

 

2. 브라우저 엔진 : 사용자 인터페이스와 렌더링 엔진 사이의 동작을 제어

 

3. 렌더링 엔진 : 요청한 콘텐츠를 표시 (HTML을 요청하면 HTML과 CSS를 파싱하여 화면에 표시)

 

4. 통신 : HTTP 요청와 같은 네트워크 호출에 사용. 플랫폼 독립적인 인터페이스이고 각 플랫폼 하부에서 실행됨.

 

5. UI 백엔드 : 콤보 박스와 창 같은 기본적인 장치를 그린다. 플랫폼에서 명시하지않은 일반적인 인터페이스로 OS 사용자 인터페이스 체계를 사용.

 

6. 자바스크립트 해석기 : 자바스크립트 코드를 해석하고 실행

 

7. 자료 저장소 : 자료를 저장하는 계층. 모든 종류의 자원을 하드 디스크에 저장할 필요가 있음.

 

각 구조들이 정확이 무엇이고 어떻게 작동하여 웹 브라우저가 작동되는지는 위의 링크를 참고하여 자세히 알아 볼 수 있도록 하자!!!!!!

 

 

댓글