TIL(20.04.06)클라이언트와 서버

이민택·2020년 4월 6일
0

TIL

목록 보기
36/44

browser와 server의 개념

Browser

Browser란 웹서버에서 이동하며 쌍방향으로 통신하고 HTML문서나 파일을 출력하는 GUI기반의 응용소프트트웨어이다

대표적인 브라우저로 크롬,파이어폭스,사파리,엣지

최초의 브라우져는 팀버너스리의 의해 발명되었고 그 이름은 월드 와이드 앱이었다 이후 넥서스로 바뀌었고 최초의 GUI를 갖춘 브라우저는 Erwise이다

Server

서버란 클라이언트에게 네트워크를 통해 정보를 제공하는 컴퓨터 시스템이다(컴퓨터 프로그램,장치)

클라이언트 서버 구조

클라이언트 서버 모델은 서비스 요청자인 클라이언트와 서비스 자원의 제공자인 서버간에 작업을 분리해주는 분산 애플리케이션 구조이자 네트워크 아키텍처를 난타낸다. 웹시스템도 확장된 클라이언트 서버시스템 구조이다

클라이언트는 서비스를 사용하는 사용자,사용자단말기를 가리키는 말이다.

서버는 서비스를 제공하는 컴퓨터

대표적인 클라이언트 서버 구조가 월드와이드웹이다 여기서는 웹 브라우저가 클라이언트 프로그램이 된다.웹 서버가 서버역할을 한다

HTTP

HTTP는 WWW상에서 정보를 주고받을 수 있는 전송 규칙과 같은 것이다 주로 HTML문서를 주고 받을 때 사용한다 TCP,UDP를 사용하고 80번 포트를 사용한다. HTTP로 전달되는 자료는 http: 로 시작하는 url로 접근이 가능하다

http는 여러 통신 설계 위에서 독립적으로 데이터를 담아 전송되기 때문에 네트워크의 문제는 http와 상관이 없다

  • 작동방식 : 클라이언트의 요청을 통하고 서버는 이에 대한 응답을 한다
  • 구성
    • 헤더 : 어떤 요청인가 ,타입, 어떤 클라이언트인가?
    • 바디 : 서버에 데이터를 보내기 위해 사용한다
  • Stateless,connectionless
    • Stateless :http의 모든 요청은 독립적이다
    • Connectionless: 한번에 요청에 한번에 응답을한다 응답이후에는 요청이 끊어진다
  • method
    • GET - 서버에 자원 요청
    • POST - 서버에 자원을 생서
    • PUT - 서버의 자원을 수정.
    • DELETE - 서버의 자원을 제거

Fetch API

Fetch API는 네트워크 통신을 포함한 리소스 취득을 위한 인터페이스가 정의되어 있다 ajax를 구현하기 위해 사용하기도 한다.

서버는 왜 필요할가?

우리는 피시나 스마트폰에서 여러가지 프로그램을 사용한다 여기 이 프로그램을 어플리케이션이라고 부르며 스마트폰에서는 앱이라고 부른다.

API란?

API (Application Programming Interface) 란 프로그램을 쉽게 제작할 수 있게 미리 만들어 놓은 것들의 모음이라고 할 수 있다. 예를 들어 윈도우 프로그램을 만들 때 이 API 를 이용하여 버튼을 코드 몇줄로 구현이 가능하다.

또 다른 예로 카카오 맵 api가 있다 방대한 지도 데이터를 다루기 위해서 개발을 좀 더 수월하게 하기 위해서 인터페이스를 제공한다

비유적으로 비유하면 카페가 서버라고 할 때 메뉴판을 API라고 할 수 있다

클라이언트와 서버

요즘에는 인터넷만 연결되어 있으면 어느 곳에서도 주소만 알고 있다면 똑같은 정보를 얻을 수 있다 이를 가능하게 해주는 것이 클라이언트와 서버이다

어떤 곳에서도 똑같은 데이터를 보여주기 위해서는 언제나 똑같은 데이터를 가지고 있어야 하고 또 이를 보내줄 곳이 필요하다 이 곳이 서버이다

클라이언트는 정보를 요청하는 유저가 된다 그래서 정리를 하면 클라이언트가 요청을 보내서 서버가 이에 응답해서 클라이언트에게 다시 보내주는 것이 기본적인 구조이다.


서버의 역할과 클라이언트의 역할은 인터넷의 연결할 수 있는 하드웨어만 존재하면 그 역할을 할 수 있다 일반적으로 데스크탑에서는 네트워크 카드를 이용해서 클라이언트의 역할과 서버의 역할을 수행한다.

포트

위와 같이 서버의 역할을 할 때 접속하는 클라이언트를 논리적으로 구분하기 위해 포트를 사용한다 일반적인 포트번호 유형은 아래와 같다

일반적으로 os가 시작될 때 잘알려진 포트(0~1023)를 사용하고 일반적으로 개발자들이 개발하는 서버프로그램은 보통 1024 이상으로 할당된다. 우리가 많이 사용하는 웹 브라우저에서 접속하는 모든 서버들을 웹서버라고 한다. 이 서버에서 HTTP프로토콜을 사용한다.

프로토콜

프로토콜이란 데이터를 어떻게 주고 받을 지 형태를 정한 것이다 그래서 클라이언트에서 HTTP의 형식으로 요청을 보내면 서버는 다시 HTTP의 형식으로 응답을 보낸다.

Ajax

에이잭스는 비동기식 자바스크립트 XML(Asynchronous Javascript XML)의 약자로 웹서버에서 웹문서를 받아오는 것이 아니라 데이터를 받아오기 위한 방법과 기술을 말한다. 쉽게 말하면 웹문서에 대한 정보를 단말 내부에 저장했다가 화면에 띄운후 웹서버로는 필요한 정보만을 요청하는 것이다. 이름른 XML이지만 더 가변운 용량과 javascript의 일부라는 장점으로 JSON을 더 많이 사용한다

추천검색어 기능

XMLHttpRequest 는 자바스크립트가 http가 요청가능하도록 하는 것이다

대표적인 서버 유형은 어떤 것이 있을까?

대표적인 서버 유형에는 채팅서버, 위치 기반 서비스 서버, 모바일 서버, JSON-RPC 서버 그리고 모든 서버의 기초인 웹서버가 있다 일반적으로 HTTP 프로토콜로 데이터를 주고받을 수 있는 웹서버를 만들고 나서 그 위에 위에 대표적인 서버들을 구현하는 과정으로 서버를 구현한다.

웹 서버의 기능은 무엇일까?

node.js 로 구현한 웹서버의 기초적인 구조로는 위 그림과 같이 익스프레스,몽고디비, 뷰 템플릿, 패스포트가 있다 대략적으로 설명하면 익스프레스는 기본적은 구조를 잡고 몽고디비를 이용해서 데이터를 조회하고 뷰템플릿은 클라이언트에 응답을 보낼 때 사용하기 위해 미리 템플릿을 만들어 놓것이고 패스포트는 사용자의 로그인이나 회원가입을 위해 사용한다.

기본적인 기능

웹서버의 기본적인 기능으로는 아래와 같은 것이 있다

  • 웹문서 조회
  • 파일 업로드 / 다운로드
  • 로그인/ 회원가입

참조 :
(서적) Do it! Node.js 프로그래밍 http://www.yes24.com/Product/Goods/36886447
(위키피디아)https://ko.wikipedia.org/wiki/%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8_%EC%84%9C%EB%B2%84_%EB%AA%A8%EB%8D%B8
(mdn) https://developer.mozilla.org/ko/docs/Web/HTTP/Overview

profile
데이터에 소외된 계층을 위해 일을 하는 개발자를 꿈꾸는 학생입니다

0개의 댓글