[HTTP] HTTP란 무엇인가?

JJoSuk·2023년 5월 31일
0

본 자료는 김영한님 HTTP 강의 자료 참고로 제작됐음을 알립니다

HTTP의 약자부터 알아야 한다.

HyperText Transfer Protocol

HyperText

HTML (HyperText Markup Language)
HTML을 다시 짚고 넘어가 보면, 문서와 문서가 링크로 연결되도록 하는 일종 태그로 구성된 언어란 뜻이다.

Transfer

사전적 의미로 "전송하다" 라는 의미를 가지며, 우리가 만든 웹사이트를 널리 알리고 다른 사람들과 공유하기 위해서 다른 컴퓨터에게 전송해야 한다.
전송은 보내는 주체와 받는 주체가 있다는 것이 큰 특징이다.

Protocol

프로토콜은 협약, 통신 규약 이라는 의미를 가진다.
물리적으로 떨어진 컴퓨터 끼리 어떻게 HTML파일(HyperText)을 주고 받을지에 대한 약속으로, 한국어로 소통을 하듯 컴퓨터도 컴퓨터 끼리의 소통 방법이 HTTP이다.
쉽게 말해 HTTP란, 컴퓨터들끼리 HTML파일을 주고받을 수 있도록 하는 소통방식 또는 약속이다.


HTTP의 특징

  • 클라이언트 서버 구조
    • Request Response 구조
    • 클라이언트는 서버에 요청을 보내고, 응답을 대기
    • 서버가 요청에 대한 결과를 만들어서 응답


  • 상태 유지 프로토콜(Stateful)과 무상태 프로토콜(Stateless) 차이
    • 무상태 프로토콜(스테이스리스), 비연결성
      • 서버가 클라이언트의 상태를 보존X 그러다보니 아무 서버를 호출 할 수 있다
      • 장점: 서버 확장성 높음(스케일 아웃)
      • 단점: 클라이언트가 추가 데이터 전송
      • 사용되는 예) 로그인이 필요없는 단순한 서비스 소개 화면
    • 상태 유지 프로토콜(스테이스풀)
      • 서버가 클라이언트의 상태를 보존ㅇ, 다른 서버를 호출 할 경우 데이터 공유x
      • 장점 : 한번 입력된 데이터는 추가 입력x
      • 단점 : 하나의 서버로 움직이다 보니 서버가 다운되면 요청이 들어와도 응답을 못한다.
      • 사용되는 예) 로그인이 필요 없는 단순한 서비스 소개 화면

  • HTTP 메시지
    • 핵심 두가지 특징이 있다.
      • Request(요청) / Response(응답)
      • Request(요청) - HTTP 메서드
        • 종류: GET, POST, PUT, DELETE...
        • 서버가 수행해야 할 동작 지정
          • GET: 리소스 조회
            • 이름 그대로 어떤 데이터를 서버로 부터 받아(GET)올 때 주로 사용하는 메소드
            • 데이터를 받아오기만 할 때 사용된다.
            • 가장 간단하고 많이 사용되는 HTTP 메소드 (사실 우리가 웹페이지를 띄울 때 필요한 정보들을 모두 GET메소드로 요청을 보내서 받아온 응답을 화면에 띄우는 것이다)
          • POST: 요청 내역 처리
            • 데이터를 생성 / 수정 할 때 주로 사용되는 메소드
            • 데이터를 생성 및 수정 할 때 많이 사용되기 때문에 대부분의 경우 요청에 body가 포함되서 보내진다
          • DELETE: 데이터 삭제 요청
            • 메소드의 이름에서 유추 가능하듯, 특정 데이터를 서버에서 삭제 요청을 보낼때 쓰는 메소드
      • Response(응답)
      • HTTP 버전
      • HTTP 상태 코드: 요청 성공, 실패를 나타냄
        • 200: 성공
        • 400: 클라이언트 요청 오류
        • 500: 서버 내부 오류
      • 이유 문구: 사람이 이해할 수 있는 짧은 상태 코드 설명 글
    • HTTP 헤더
      • HTTP 전송에 필요한 모든 부가정보
      • 예) 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트(브라우저) 정보, 서버 애플리케이션 정보, 캐시 관리 정보 등등…
      • 표준 헤더가 너무 많으
      • 필요시 임의의 헤더 추가 가능
        • helloworld: hihi
    • HTTP 메시지 바디
      • 실제 전송할 데이터
      • HTML 문서, 이미지, 영상, JSON 등등 byte로 표현할 수 있는 모든 데이터 전송 가능

  • 단순함, 확장 가능
    • HTTP는 단순하다. 스펙도 읽어볼만...
    • HTTP 메시지도 매우 단순
    • 크게 성공하는 표준 기술은 단순하지만 확장 가능한 기술

HTTP 정리

  • HTTP 메시지에 모든 것을 전송
  • HTTP 역사 HTTP/1.1을 기준으로 학습
  • 클라이언트 서버 구조
  • 무상태 프로토콜(스테이스리스)
  • HTTP 메시지
  • 단순함, 확장 가능
profile
안녕하세요

0개의 댓글