HTTP & HTTPS

OwlSuri·2022년 7월 21일
1

backgroundKnowledge

목록 보기
2/8

HTTP(Hypertext Transfer Protocol)

  • 인터넷상에서 데이터를 주고 받기 위한 서버/클라이언트 모델을 따르는 프로토콜
  • HTTP는 어떤 종류의 데이터든지 전송할 수 있도록 설계돼 있다.
    (HTTP로 보낼 수 있는 데이터는 HTML문서, 이미지, 동영상, 오디오, 텍스트 문서 등)
  • 즉, 하이퍼텍스트 기반으로(Hypertext) 데이터를 전송하겠다(Transfer).
    => 링크기반으로 데이터에 접속하겠다.

HTTP의 작동 방식

  • HTTP는 서버/클라이언트 모델을 따른다.
    클라이언트에서 request(요청)을 보내면, 서버는 요청을 처리해서 response(응답)을 보낸다.
  • 웹서버는 보통 표준포트인 80번 포트로 서비스한다.

HTTP의 특징

  • HTTP는 Connectionless 방식으로 동작한다.
    기본적으로 자원 하나에 하나의 연결을 만든다.
    그래서 서버에 연결-요청-응답 후에 연결을 끊는다.
    (이를 위해 쿠키나 세션, 토큰방식의 OAuth, JWT가 사용)

  • TCP/ IP를 이용하는 응용 프로토콜이다.
    (컴퓨터와 컴퓨터간에 데이터를 전송 할 수 있도록 하는 장치로 인터넷이라는 거대한 통신망을 통해 원하는 정보(데이터)를 주고 받는 기능을 이용하는 응용 프로토콜)

HTTP의 장점

  • 불특정 다수를 대상으로 서비스 할 수 있다.
  • 수십만명이 웹 서비스를 사용하더라도 접속유지는 최소한으로 할 수 있기 때문에, 더 많은 유저의 요청을 처리할 수 있다.

HTTP의 단점

  • Connectionless 방식으로 연결을 끊으므로, 클라이언트의 이전 상태를 알 수 없다 -> stateless(Connectionless에서 파생되는 특징이다)
    클라이언트의 로그인 상태를 유지할 수 없다 -> cookie 이용

HTTP Method

요청의 종류를 서버에게 알려주기 위해 사용

  • GET : 정보를 요청하기 위해서 사용한다. (SELECT, READ, 조회)
  • POST : 정보를 밀어넣기 위해서 사용한다. (INSERT, CREATE, 생성)
  • PUT : 정보를 업데이트하기 위해서 사용한다. (UPDATE, 수정)
  • DELETE : 정보를 삭제하기 위해서 사용한다. (DELETE, 삭제)
  • PATCH : 일부만 변경
  • HEAD : (HTTP)헤더 정보만 요청한다. 해당 자원이 존재하는지 혹은 서버에 문제가 없는지를 확인하기 위해서 사용한다.
  • OPTIONS : 웹서버가 지원하는 메서드의 종류를 요청한다.
  • TRACE : 클라이언트의 요청을 그대로 반환한다. 예컨데 echo 서비스로 서버 상태를 확인하기 위한 목적으로 주로 사용한다.

HTTP 상태코드

  • 1XX (조건부 응답) : 요청을 받았으며 작업을 계속한다.
  • 2XX (성공) : 클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며 성공적으로 처리했음을 가리킨다.
  • 3XX (리다이렉션 완료) : 클라이언트는 요청을 마치기 위해 추가 동작을 취해야 한다.
  • 4XX (요청 오류) : 클라이언트에 오류가 있음을 나타낸다.
  • 5XX (서버 오류) : 서버가 유효한 요청을 명백하게 수행하지 못했음을 나타낸다.

Response HTTP 메시지 예시

HTTP/1.1 200 OK													// 시작줄
Connection: keep-alive											// 헤더
Content-Encoding: gzip												 
Content-Length: 35653
Content-Type: text/html;

<!DOCTYPE html><html lang="ko" data-reactroot=""><head><title...
  1. 첫줄 : 버전, 상태코드 메시지
  2. 헤더 : 두번째줄부터, 응답에 대한 정보 담음
  3. 본문 : 응답 메시지에 HTML이 담겨 있는데, 이 HTML을 받아 브라우저가 화면에 렌더링한다.

참고
| https://velog.io/@surim014/HTTP%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80
| https://shlee0882.tistory.com/107

HTTPS(Hypertext Transfer Protocol Secure)

  • HTTP의 보안이 강화된 버전으로 HTTP에 SSL 기술을 더해서 데이터를 암호화 하는 기술
  • 웹사이트가 SSL/TLS 인증서로 보호되는 경우 HTTPS가 URL에 표시

    참고 | TLS(Transport Layer Security)/SSL(Secure Sockets Layer, SSL) : SSL은 웹사이트와 브라우저 사이(또는 두 서버 사이)에 전송되는 데이터를 암호화하여 인터넷 연결을 보호하기 위한 표준 기술. 보안 소켓 계층 인증서(디지털 인증서)
    -> 브라우저와 서버 사이의 암호화된 연결을 수립하는데 사용

HTTPS의 작동 방식

  • HTTPS는 http 메세지(text)를 암호화하는 것이다.
  • HTTPS의 암호화 원리는 공개키 암호화 방식이다.

공개키 암호화 방식

  • 키의 분배의 편의성, 디지털 서명을 위해 비대칭키를 이용

    두개의 다른 키를 사용한다.
  • 공개키 : 모든 사람이 접근 가능한 키(공개)
  • 개인키 : 각 사용자 자신만이 소유하는 키(비공개)

B가 자신만 알고 있는 기밀을 A 에게 전달하고자 할 때 사용한다. A 를 제외한 타인은 이 내용을 알 수 없어야 한다.

1. B의 공개키와 개인키 생성
2. B의 공개키는 공개하고 개인키는 개인이 소유
3. A는 B의 공개키로 메시지를 암호화4. 
B는 자신의 개인키로 메시지 복호화(B의 개인키를 모르는 제 3자는 메시지 복호 불가능)
1) 클라이언트가 서버에게 접속요청을 하면 서버는 CA에서 발급받은 인증서를 보낸다. 
   인증서에는 CA의 비밀키로 암호화된 사이트정보와 공개키가 들어있다.
2) 클라이언트는 인증서를 받아 CA의 공개키로 복호화하여 접속요청한 서버가 신뢰할만한지 검증한다.
3) 복호화가 되면 인증서가 신뢰할 만하기 때문에 데이터를 주고받을 대칭키를 생성한다.
4) 대칭키를 서버의 공개키로 암호화하여 서버에게 전송한다.
5) 서버는 자신의 비밀키로 클라이언트가 보낸 대칭키를 복호화한 뒤 그 대칭키를 통해 데이터를 주고받는다.

HTTPS의 장점

  • 보안성이 매우 강하다.

HTTPS의 단점

  • 보안상의 장점이 있는 반면 암호화된 정보를 교환하기 때문에 서버가 과부하에 걸리는 경우가 발생하며, 접속이 끊기게 되면 다시 처음부터 시작해야 하는 불편함이 따른다.

  • http보다 느리나, 기술의 발전으로 그 차이는 점점 미미해지고 있다.

참고
| https://www.crocus.co.kr/1236
| https://jeong-pro.tistory.com/89
| https://velog.io/@acwell94/HTTP-HTTPS%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%BC%EA%B9%8C

profile
기억이 안되면, 기록을 -

0개의 댓글