HTTP

이승현·2022년 11월 14일

웹 개발

목록 보기
20/20

클라이언트 서버 아키텍처 - 2티어 아키텍처

서버의 필요성

  • 빈번한 데이터 업데이트가 필요한 경우 ‘리소스가 존재하는 곳’과 ‘리소스를 사용하는 앱’을 분리시키는 것이 유리하다. 그렇지 않다면 데이터가 바뀔 때 마다 앱 자체를 업데이트 해야 한다. 이렇게 둘을 불리시킨 것을 ‘2-Tier architecture’ 혹은 ‘client-server architecture’라 명명한다.
  • 클라이언트와 서버는 요청과 응답을 주고받는 관계

클라이언트 → 요청 → 서버

서버 → 응답 → 클라이언트

요청이 선행될 경우에만 응답이 발생

  • 여기서 발전된게 서버는 리소스를 전달해주는 역할만 하고 리소스를 저장하는 데이터베이스를 따로두는 3티어 아키텍처(클라이언트-서버-데이터베이스) 구조 이다. 여기서 클라이언트에 보여주는 부분을 맡는 것이 프론트엔드, 서버와 데이터베이스를 설계, 관리하는 것이 백엔드이다

클라이언트와 서버의 종류

  • 클라이언트는 보통 플랫폼에 따라 구분된다.
    • 웹 플랫폼에서의 클라이언트 : 웹사이트, 웹 앱
    • ios, 안드로이드 등의 스마트폰, 태블릿 플랫폼, 데스크탑 플랫폼의 앱도 클라이언트 - 서버는 용도에 다라 종류가 달라진다.
    • 파일을 제공하는 앱 : 파일 서버
    • 웹사이트 에서 필요로 하는 정보들을 제공하는 앱 : 웹 서버
    • 메일을 주고받을 수 있도록 도와주는 앱 : 메일 서버
    • 데이터베이스도 데이터 제공자로서 존재하기에 일종의 서버이다.

통신 규약

서버와 클라이언트 사이에는 통신 규약이 필요하다. 대표적인것이 http, https가 있고(7layer) 데이터 전송에서의 규약은 TCP, UDP가 있다.(4layler)

API(Application Programming Interface)

클라이언트에서 서버의 사용 가능한 자원을 알 수 있게 하기 위한 리소스 활용 인터페이스. 카페에서 손님이 주문할 때 보는 메뉴판을 API에 비유할 수 있다.

인터넷에서 데이터 요청하기

HTTP API 디자인에서는 Best Practice가 존재한다.

HTTP 요청시 메소드를 지정해서 리소스와 관련된 행동(CRUD crate/read/update/delete)을 할 수 있다.

조회(Read) → GET

추가(Create) → POST

갱신(Update) → PUT (교체)또는 PATCH(삽입)

삭제(Delete) → Delete

  • URL 과 URI 브라우저의 주소창에 입력한 URL은 서버가 제공되는 환경에 존재하는 파일의 위치를 의미한다.
  • URL은 Uniform Resource Locator 의 줄임말로 네트워크 상에서 웹 페이지, 이미지, 동영상 등의 파일이 위치한 정보를 나타낸다.

구성

URL은 scheme, hosts, url-path로 구성된다.

  • scheme

통신방식(프로토콜) 결정, 일반적인 웹에서는 http, https를 사용

  • hosts

웹 서버의 이름이나 도메인, ip를 사용하며 주소를 나타낸다.

  • url-path는 웹 서버에서 지정한 루트 디렉토리부터 시작하여 웹 페이지, 이미지, 동영상 등이 위치한 경로와 파일명을 나타낸다.

URI 는 Uniform Resource Identifier 의 줄임말로 일반적으로 URL의 기본 요소인 cheme, hosts, url-path에 더해 query, bookmark를 포함 URL은 URI가 맞지만 URI는 URL이 아니다.

  • query

웹 서버에 추가적으로 보내는 질문

브라우저의 주소창을 클릭하면 나타나는 주소가 URI이다.

  • IP address(Internet Protocol address)

네트워크에 연결된 특정 pc의 주소를 나타내는 체계

용도가 정해진 ip주소도 있음

기억해야할
ex)

  • localhost127.0.0.1 : 현재 사용 중인 로컬 PC 를 지칭합니다.
  • 0.0.0.0255.255.255.255 : broadcast address, 로컬 네트워크에 접속된 모든 장치와 소통하는 주소입니다. 서버에서 접근 가능한 IP 주소를 broadcast address 로 지정하면, 모든 기기에서 서버에 접근할 수 있습니다.

Ipv4, ipv6 로 종류가 있음 ipv4가 꽉차서 ipv6를 씀

  • Port

IP 주소에 진입할 수 있는 정해진 통로

리액트를 실행하면 127.0.0.1:3000 과 같이 뜨는데 127.0.0.1 은 localhost ip주소이고
3000이 그 ip주소 pc에 접속하는 통로, 즉 port이다. 다른 프로그램이 3000을 쓰고 있으면 3001이 된다.

포트번호의 범위는 0~65535인데 0~1024는 주요 통신 규약에 따라 이미 정해져있어서 따로 쓰면 안됨

기억해야할 ex)

22 : SSH

80 : HTTP

443: HTTPS

  • Domain Name

ip주소 기억하기 쉽게 만든 별명

  • DNS(Domain Name System)

호스트의 도메인 이름을 IP주소로 변환하거나 반대의 경우를 수행할 수 있도록 개발된
데이터베이스 시스템

profile
매일 꾸준히

0개의 댓글