HTTP란?

DY·2022년 8월 4일
0

CS

목록 보기
4/10
post-thumbnail

3티어 아키텍처

  • 클라이언트 - 서버 - 데이터베이스
  • 데이터베이스는 리소스 저장 공간이다.

프로토콜

  • 서버와 클라이언트간이나 다른 프로그램간 사전에 만든 지켜야할 통신 규약
  • 웹에서는 HTTP 프로토콜을 이용해서 HTTP메세지를 주고 받는다.
  • 통신을 원하는 당사자간 신뢰성있고 원할한 통신을 수행하기위해 서로 합의에 의해 설정한 통신 규약

OSI 7 Layers

HTTP

  • Hypertext Transfer Protocol

  • 웹서버와 웹브라우저의 소통을 위해 디자인 되었다.

  • HTTP message를 통해 서버-클라이언트간 요청과 응답을 하면서 데이터를 교환한다.

    1. start line : start line에는 요청이나 응답의 상태를 나타냅니다. 항상 첫 번째 줄에 위치합니다. 응답에서는 status line이라고 부릅니다.
    2. HTTP headers : 요청을 지정하거나, 메시지에 포함된 본문을 설명하는 헤더의 집합.
    3. empty line : 헤더와 본문을 구분하는 빈 줄
    4. body : 요청과 관련된 데이터나 응답과 관련된 데이터 또는 문서를 포함. Request나 Response의 유형에 따라 선택적으로 사용한다.
  • 이 중 start line과 HTTP headers를 묶어 요청이나 응답의 head라고 하고, bodypayload(전송되는 데이터 헤더와 메타데이터는 제외)라고 이야기한다.

  • HTTP/1.1, HTTP/2는 TCP 기반이며 HTTP/3(현재)UDP 기반 프로토콜로 발전하고 있다.

특징

  • 클라이언트 서버 구조

    • Request Response형태. 클라이언트가 연결을 해야 서버가 응답한다.
  • 무상태 프로토콜 (Stateless), 무상태성

    • 서버가 클라이언트 정보를 가지고 있지 않는 상태.
    • 무한한 서버 증설 가능
    • 반대되는 말로는 Stateful(상태유지)가 있다.
    • 로그인이 없는 서비스에는 무상태로 설계가 가능하지만 있는경우라면 브라우저 쿠키, 서버 세션, 토큰 등을 이용해 상태를 유지해야 한다.
  • 비연결성(Connectionless)

    • 소켓통신시 연결을 유지 하지 않고 필요한 데이터들만 주고 받은 뒤 연결을 끊고, 추후에 데이터를 주고받을 일이 있을 때 다시 연결한다.
      • 즉 최소한의 자원으로 서버를 유지 가능하다.
      • HTTP/1.0 HTTP/3과 비연결성 방식은 조금 다르다.
  • HTTP 메세지

  • 단순함, 확장 가능

HTTP 상태코드

  • 200번대 : 성공
  • 300번대 : redirection
  • 400번대 : 클라이언트에서 실패
  • 500번대 : 서버에서 실패

API

  • Application Programming Interface
  • 클라이언트가 서버에 데이터를 보낼때 서버에서 제공하는 양식대로 전송할 수 있게 제공하는 Interface(의사소통이 가능) 반대의 경우도 해당.
  • 가게의 메뉴판 역할이라고 보면 이해하기 쉽다.
  • 인터넷에 데이터를 요청할 때는 HTTP 프로토콜을 사용하며 URL,URI로 접근이 가능하다.

HTTP 메서드

  • HTTP 요청에는 성격과 맞는 메서드들이 존재한다. 각각의 CRUD행동에 따른 내용은 아래와 같다.
  • CRUD목적에 따라 맞게 써야한다.

URL, URI

  • URI는 URL을 포함한다.

URL

  • Uniform Resource Locator의 약자

  • 인터넷 브라우저 창에서 주소를 입력할때의 주소는 URL

  • 서버가 제공하는 환경에 존재하는 파일의 위치

  • 예를들면 https://velog.io:443/ 사이트에 접속하게 되면, velog.io 주소가 가리키는 서버의 기본 폴더를 뜻한다.

  • 로컬스토리지의 경로에 '/'를 이용하여 경로를 찾아가는 것처럼 인터넷 주소도 '/'를 이용하여 서버의 폴더에 진입하거나 파일을 요청할 수 있다.(물론 보안을 위해 보통 전부 오픈하지는 않는다.)

  • 네트워크 상에서 웹 페이지, 이미지, 동영상 등의 파일이 위치한 정보를 나타낸다.

    • scheme(통신 방식(프로토콜)을 결정),
    • hosts(웹 서버의 이름이나 도메인, IP를 사용하며 주소),
    • url-path(웹 서버의 루트 디렉토리부터 시작하여(host) 웹 페이지, 이미지, 동영상 등이 위치한 경로와 파일명)

URI

  • Uniform Resource Identifier의 약자
  • 브라우저 검색창을 클릭했을 때 나타나는 주소.
  • URL의 기본 요소인 scheme, hosts, url-path을 포함하고 추가로 아래 요소를 포함한다.
    • query(웹 서버에 보내는 추가적인 질문)
    • fragment(일종의 북마크 기능을 수행. ex) URL에 fragment(#)와 특정 HTML 요소의 id를 전달하면 해당 요소가 있는 곳으로 스크롤을 이동할 수 있다.)

IP address

  • 특정 장소는 고유한 주소들을 가지고 있다. 마찬가지로 특정 PC에 접속을 하려면 주소를 알아야한다. 네트워크에 연결된 특정 PC의 주소를 나타내는 체계를 IP address(Internet Protocol address, IP 주소)라고 한다.

  • IPv4(Ip version 4)주소는 보통 xxx.xxx.xxx.xxx로 구성되어 있다.

  • localhost, 127.0.0.1 : 현재 사용 중인 로컬 PC를 지칭합니다.

  • 0.0.0.0, 255.255.255.255 : broadcast address, 로컬 네트워크에 접속된 모든 장치와 소통하는 주소입니다. 서버에서 접근 가능 IP 주소를 broadcast address 로 지정하면, 모든 기기에서 서버에 접근할 수 있습니다.

Port

  • IP주소가 가리키는 PC에 접근 할수 있는 통로(채널)을 의미한다.

  • 사용중인 포트는 중복해서 쓸수 없다.

  • 포트 번호는 0~ 65535 까지 사용할 수 있다.

  • 0 ~ 1024번 까지의 포트 번호는 주요 통신을 위한 규약에 따라 역할이 이미 정해져있다.

    • 22 : SSH
    • 80 : HTTP
    • 443: HTTPS
  • 역할이 정해진 포트는 URI를 쓸때 생략이 가능하다.

Domain name

  • 외우기 힘든 긴 IP 주소를 대신하여 특정한 이름이나 의미있는 이름으로 사용하는 주소
  • localhost는 ip주소 127.0.0.1을 나타내는 도메인이름이다.
  • 도메인이름은 일정기간 대여해서 쓰는 형식이다.
  • 해당 도메인이 나타내는 IP주소를 알고싶으면 nslookup명령어를 터미널에 입력하여 알수 있다.
  • DNS(Domain Name System)서버는 중간에서 Domain name을 IP주소로 변환시켜주는 역할을 한다.
profile
화면에 보이는 모든것에 관심이 있습니다. 개발하면서 고민했던것들, 공부했던걸 기록하는 저장소입니다.

0개의 댓글