HTTP 개념, HTTP와 HTTPS 차이

내가해냄·2022년 8월 25일
0

강의를 듣다가 http와 관련된 내용이 나왔는데 http와 https의 차이점이 궁금하여 정리하려고 한다.

HTTP란?


HyperText Transfer Protocol(HTTP)는 W3상에서 정보를 주고받을 수 있는 프로토콜로 말그대로 통신규약이다.

HTML문서와 같은 리소스들을 가져올 수 있도록 해준다.(이미지, 텍스트, 음성, 영상, 파일 등 모든 데이터)

HTTP 메시지


클라이언트와 서버는 개별적인 메시지 교환에 의해 통신을 한다. 클라이언트가 서버에게 전송하는 메시지를 요청(request), 서버가 클라이언트에게 응답하는 메시지를 응답(respond)이라고 한다.

서버란? 정보를 보관하고 전송해주는 컴퓨터
클라이언트란? 서버로부터 정보를 제공받는 컴퓨터(노트북, 데스크탑, 휴대폰 등)

HTTP 요청

  1. start line
  • HTTP 메서드(method) - GET, PUT, POST, HEAD, OPTIONS를 사용해 서버에게 요청
    GET 리소스를 클라이언트로 가져다 달라는 것을 의미
    가져오고자하는 정보를 접근할 때 주로 사용
    POST 데이터가 서버로 들어가야함을 의미
    서버 쪽에 데이터 기록, 삭제, 수정 등 어떤 작업을 명령할 때 사용
    https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods
  • Request Target : HTTP 메소드에 따라 달라짐.
    • origin 형식 : 끝에 '?'와 쿼리 문자열이 붙는 절대 경로로 가장 일반적인 형식
      GET, POST, HEAD, OPTIONS 메서드와 함께 사용.

      POST / HTTP 1.1
      GET /background.png HTTP/1.0
      HEAD /test.html?query=alibaba HTTP/1.1
      OPTIONS /anypage.html HTTP/1.0

    • absolute 형식 : 완전한 URL 형식, 프록시에 연결하는 경우 대부분 GET과 함께 사용
      GET http://developer.mozilla.org/en-US/docs/Web/HTTP/Messages HTTP/1.1

    • authority 형식 : 도메인 이름 및 옵션 포트(:)로 이루어진 URL의 authority component

    • asterisk 형식 : OPTIONS + 별표(*) 하나로 간단하게 서버 전체를 나타냄
      OPTIONS * HTTP/1.1
      https://developer.mozilla.org/ko/docs/Web/HTTP/Messages

  • HTTP 버전
  1. header
    요청 HTTP 헤더는 HTTP 헤더의 기본 구조를 따른다.
    대소문자 구분없는 문자열 다음에 콜론(:)이 붙으며, 그 뒤에 오는 값은 헤더에 따라 달라진다.
  • General 헤더 : 메시지 전체에 적용
  • request 헤더 : 요청의 내용을 좀 더 구체화 시키고, 컨텍스를 제공하거나 조건에 따른 제약 사항을 가하기도 하면서 요청 내용을 수정한다.
  • Entity 헤더 : 요청 body에 적용. 요청 내 body가 없는 경우 entity 헤더는 전송되지 않는다.
  1. body
    body가 없을 수도 있다. GET, HEAD, DELETE, OPTIONS와 같이 리소스를 가져오는 요청은 보통 본문이 필요 없음.
  • 단일-리소스 본문(single-resource bodies) : 헤더 두 개(Content-Type와 Content-Length)로 정의된 단일 파일로 구성
  • 다중-리소스 본문(multiple-resource bodies) : 멀티파트 본문으로 구성되는 다중 리소스 본문에서는 파트마다 다른 정보를 지니게 된다. HTML 폼과 관련이 있다.

HTTP 응답

  1. status line
  • 프로토콜 버전
  • 상태 코드: 요청의 성공 여부를 나타낸다.

200 요청 성공
404 요청받은 리소스를 찾을 수 없음 의미
302 요청한 리소스가 Location 헤더에 주어진 URL에 일시적, 임시적으로 이동됨을 의미. 즉 요청한 리소스가 새로운 URL로 이동했음을 의미

  1. header
    응답에 들어가는 HTTP 헤더는 다른 헤더와 동일한 구조를 따른다.
    대소문자를 구분하지 않는 문자열 다음에 콜론(:)이 오며, 그 뒤에 오는 값은 구조가 헤더에 따라 달라집니다.
  • General 헤더 : 메세지 전체에 적용
  • Response 헤더 : 상태 줄에 미처 들어가지 못했던 서버에 대한 추가 정보 제공
  • Entity 헤더 : 요청 body에 적용. 요청 내 body가 없는 경우 entity 헤더는 전송되지 않는다.
  1. body
    본문은 응답의 마지막 부분에 들어간다.
    모든 응답에 본문이 들어가지는 않는다.
    201, 204과 같은 상태 코드를 가진 응답에는 보통 본문이 없다.

201 요청이 성공적으로 처리되었으며, 자원이 생성되었음을 나타내는 성공 상태 응답 코드
204 성공 상태 응답 코드는 요청이 성공했으나 클라이언트가 현재 페이지에서 벗어나지 않아도 된다는 것을 나타냄

  • 이미 길이가 알려진 단일 파일로 구성된 단일-리소스 본문 : 헤더 두개(Content-Type와 Content-Length)로 정의
  • 길이를 모르는 단일 파일로 구성된 단일-리소스 본문 : Transfer-Encoding가 chunked로 설정되어 있으며, 파일은 청크로 나뉘어 인코딩 되어 있다.
  • 서로 다른 정보를 담고 있는 멀티파트로 이루어진 다중 리소스 본문

HTTP의 특징

  • connectionless(비연결성) : 클라이언트가 서버에 정보를 요청하면 응답 코드와 내용을 전송하고 클라이언트와 연결을 종료한다. (연결성으로는 FTP, Telnet이 있다. )
  • stateless(무상태) : 서버가 클라이언트가 이전에 요청한 결과, 클라이언트 상태에 대해서 기억하지 않는다. 따라서 이전 요청과 동일한 요청을 하더라고 서버에 연결을 하여 동일한 요청을 시도해야한다.

HTTPS와의 차이점

HTTP는 서버에서부터 브라우저로 전송되는 정보가 암호화되지 않는 다는 문제가 있다.
이를 해결하기 위해 나타난게 HTTPS 프로토콜이다.
SSL을 사용하여 보안 문제를 해결했다.

SSL(Secure Socket Layer) : 웹사이트와 브라우저 사이(두 서버 사이)에 전송되는 데이터를 암호화하여 인터넷 연결을 보호하기 위한 표준 기술

참고 :
https://namu.wiki/w/HTTP#s-5.1
https://developer.mozilla.org/ko/docs/Web/HTTP/Overview
https://developer.mozilla.org/ko/docs/Web/HTTP/Messages

profile
노션으로 갈아탐

0개의 댓글