[ 2022.12.05 TIL-HTTP와 HTTPS ]

Coosla·2022년 12월 5일
0

TIL

목록 보기
25/29
post-thumbnail

HTTP

✏️ HTTP란?

  • HyperText Transfer Protocol의 약자로 하이퍼텍스트 문서를 교환하기 위해 사용된 통신규약
  • 웹 서버와 클라이언트 간의 통신을 위한 통신규약
  • 웹에서만 사용하는 프로토콜로 TCP/IP 기반으로 한 지점에서 다른 지점으로 요청과 응답을 전송

✏️ HTTP 역사

  • HTTP/0.9 : GET 메서드만 지원, HTTP 헤더 없음
  • HTTP/1.0 : 메서드, 헤더 추가(⇒ HTML 이외 다른 파일 전송 가능)
  • HTTP/1.1 : 현재 HTTP/1.1 주로 사용, 우리에게 가장 중요한 버전
  • HTTP/2 : 성능 개선
  • HTTP/3 : 진행중, TCP 대신에 UDP 사용, 성능 개선
  • HTTP/1.1, HTTP/2는 TCP 기반이며 HTTP/3는 UDP 기반 프로토콜이다.

✏️ HTTP 특징

  • 서버와 클라이언트 구조
    • 클라이언트가 서버에 요청을 보내면 서버는 그에 대한 응답을 보냄
  • 무상태 프로토콜 (Stateless)
    • 서버가 클라이언트 상태를 보존하지 않음
    • 장점 : 서버 확장성이 높음
    • 단점 : 클라이언트가 추가 데이터 전송
  • 비연결성 프로토콜 (쿠키와 세션을 통해 단점 해결)
    • 실제 요청을 주고 받을 때만 연결을 유지, 응답하고 나면 연결을 끊음
    • 최소한의 자원으로 서버 유지 가능
  • 요청/응답 방식으로 동작

✏️ HTTP 약점

  • 평문 통신이기 때문에 도청 가능
  • 통신 상대를 확인하지 않기 때문에 위장 가능
  • 완전성을 증명할 수 없기 때문에 변조 가능

✏️ HTTP Request

  • Request란?
    • 클라이언트가 서버에게 연락하는 것
    • 요청에 대한 정보를 담아 서버로 전달
  • Request 메소드 종류
    • GET : 서버에게 데이터를 달라는 요청을 할 때 사용
    • HEAD : GET과 동일, 응답할 때 Header만 리턴
    • POST : 서버에게 데이터를 전송하는 요청할 때 사용
    • PUT : 서버에서 요청 URI의 데이터를 수정하거나 새로 추가하도록 요청할 때 사용
    • PATCH : 서버의 데이터를 일부 수정할 때 사용
    • DELETE : 서버에서 요청 URI의 데이터를 삭제하도록 요청할 때 사용
    • TRACE : 클라이언트로부터 수신한 요청을 응답에 포함시켜서 전달
    • OPTIONS : 서버에서 특정 데이터가 어던 Method를 지원하는지 알아볼때 사용
  • HTTP Request 구조
    • Start Line
      • [HTTP Method][Request target(주소)] [HTTP version]
      • HTTP Method : GET,POST 등과 같은 HTTP Method
      • Request target : HTTP Request가 전송되는 목표 주소
      • HTTP version : version에 따라 Request 메시지 구조나 데이터가 다를 수 있어서 version을 명시
    • Headers
      • 해당 Request에 대한 추가 정보를 담고 있는 부분
      • 참고
    • Body
      • HTTP Request가 전송하는 데이터를 담고있는 부분
      • 데이터가 없으면 비어있음
      • POST 요청일 경우, HTML 폼 데이터가 포함

✏️ HTTP Response

  • Response란?
    • 서버가 요청에 대한 답변을 클라이언트에게 보냄
  • HTTP 상태 코드
    • 1XX - 정보 응답
      • 100 Continue : 현재 요청이 진행중이며 문제없다는 것을 의미
    • 2XX - 성공 응답
      • 200 OK : 요청이 성공적으로 완료되었음을 의미
      • 201 Created : 요청이 성공적으로 완료, 새로운 리소스가 생성되었음을 의미, POST/PUT 요청 뒤에 따라옴
    • 3XX - 리다이렉션 메시지
      • 300 Multiple Choice : 요청에 대해 하나 이상의 응답이 가능함을 의미
      • 301 Moved Permanently : 요청한 리소스의 URI가 변경되었음을 의미
    • 4XX - 클라이언트 에러 응답
      • 400 Bad Request : 잘못된 문법으로 인해 서버가 요청을 이해하지 못했음을 의미
      • 401 Unauthorized : 요청을 보낸 클라이언트가 인증되지 않았음을 의미
      • 403 Forbidden : 요청을 보낸 클라이언트가 리소스에 접근할 권리가 없음을 의미
      • 404 Not Found : 서버가 요청받은 리소스를 찾을 수 없음을 의미
      • 408 Request Timeout : 요청 중 시간이 초과되었음을 의미
    • 5XX - 서버 에러 응답
      • 500 Internal Server Error : 서버에 문제가 있지만 서버가 해당 문제를 처리할 줄 모름을 의미
      • 502 Bad Gateway : 서버가 게이트웨이로부터 잘못된 응답을 받았음을 의미
      • 503 Service Temporarily Unavailable : 일시적으로 서버를 이용할 수 없음을 의미, 보통 유지보수를 위해 서버를 잠시 중단시켰거나 과부하로 인한 다운이 원인
      • 504 Gateway Timeout : 서버가 게이트웨이 역할을 하고 있으며 다른 서버로부터 적시에 응답을 받지 못했음을 의미
  • HTTP Response 구조
    • Status Line
      • [HTTP version][Status Code] [Status Text]
    • Headers
    • Body
      • Response의 body와 일반적으로 동일
      • Request와 마찬가지로 모든 response가 body가 있지는 않음
      • 데이터를 전송할 필요가 없을경우 body가 비어있게 됨

HTTPS

✏️ HTTPS란?

  • HTTP의 치명적인 단점
    • 브라우저와 웹서버가 통신함에 있어서 주고 받는 데이터가 암호화 되지 않고 생 날것 그대로 전송 되어진다는 점
  • 데이터가 암호화 되지 않는 HTTP의 단점을 극복하고자 HTTP에 SSL이라는 기술을 더한 것
  • 인터넷 상에서 정보를 암호화하는 SSL(Secure Socket Layer)프로토콜을 이용하여 웹브라우저(클라이언트)와 서버가 데이터를 주고 받는 통신 규약

✏️ HTTPS 특징

  • HTTP에 Secure Socket가 추가된 형태
  • 기존의 HTTP 통신이 SSL 혹은 TLS 프로토콜을 조합하여 세션 데이터를 암호화
  • 공개키 암호화 방식 사용

✏️ HTTPS 동작과정

  1. 클라이언트는 서버에 접속하면, 서버인증서(CA)를 받는다.
  2. 서버인증서 신뢰 여부 체크 후, 공개키를 추출한다.
  3. 클라이언트는 서버와 통신하는 동안만 사용할 대칭키를 임의로 만들고, 해당 대칭키를 공개키로 암호화 후 전송 한다.
  4. 서버는 개인키로 클라이언트가 보낸 메시지를 복호화하여 대칭키를 추출하고, 해당 대칭키를 이용하여 클라이언트와 통신한다.
  • 위 동작과정을 이용하면 서로 각자 통신 대상이 누구인지 확인 가능, 정보의 정확성과 안정성이 높아짐
  • HTTP -> SSL -> TCP 순서로 통신

HTTP와 HTTPS

✏️ HTTP와 HTTPS 차이점

  • 웹 페이지를 통해 전송되는 모든 데이터는 추가적인 보안 계층이 존재
  • 모든 유형의 데이터는 변경되거나 손상될 수 없는 HTTPS 사이트를 통해 전달되며 제3자로부터 보호

참고

profile
프로그래밍 언어 공부 정리

0개의 댓글