📍 HTTP (Hyper Text Transfer Protocol)

텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고받을 수 있는 프로토콜이다. HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 하다. 보통 웹 브라우저에서 클라이언트-서버 프로토콜이란 수신자 측에 의해 요청이 초기화되는 프로토콜을 말한다.


📍 HTTP의 동작과 구조

클라이언트 즉, 사용자가 브라우저를 통해서 어떠한 서비스를 url을 통하거나 다른 것을 통해서 요청(request)을 하면 서버에서는 해당 요청사항에 맞는 결과를 찾아서 사용자에게 응답(response)하는 형태로 동작한다.HTTP 메세지의 두 가지 타입인 요청(Requests)와 응답(Responses)은 각자의 특성있는 구조를 가지고 있다.

📍 요청 (Requests) : Client -> Server

메서드 : 클라이언트가 수행하고자 하는 동작을 정의

  • GET : 자료를 요청할때 사용
  • POST : 자료의 생성을 요청할때 사용
  • PUT : 자료의 수정을 요청할때 사용
  • DELETE : 자료의 삭제를 요청할때 사용

PATH : 가져오려는 리소스의 경로

HTTP프로토콜의 버전

Headers : 서버에 대한 추가 정보를 전달

📍 응답 (Responses) : Server -> Client

  • 프로토콜의 버전

  • Status Code : 요청의 성공 여부와 그 이유를 나타내는 코드

  • Headers : 요청 헤더와 비슷한 추가 정보 본문


📍 HTTPS (Hyper Text Transfer Protocol Secure)

HTTP에 데이터 암호화가 추가된 프로토콜. HTTP는 정보를 텍스트로 주고 받기 때문에 네트워크에서 전송 신호를 인터셉트 하는 경우 원하지 않는 데이터 유출이 발생할 수 있다. HTTPS는 네트워크 상에서 중간에 제3자가 정보를 볼 수 없도록 암호화를 지원한다.


📍 HTTPS 암호화 방식

공개키 암호화 방식과 느리다는 단점을 보안한 대칭키 암호화 방식을 둘 다 사용한다. 공개키 방식으로 대칭키를 전달하고, 서로 공유된 대칭키를 가지고 통신하게 된다.

대칭키 암호화

  • 동일한 키로 암호화,복호화가 가능하다.

  • 대칭키는 매번 랜덤으로 생성되어 누출되어도 다음에 사용할때는 다른 키가 사용되므로 안전하다.

  • 공개키보다 빠르게 통신이 가능하다.

공개키 암호화

  • A키로 암호화하면 B키로 복호화할 수 있다.

  • B키로 암호화하면 A키로 복호할 수 있다.

  • 둘중 하나를 개인키 혹인 비공개키라 하며, 이는 자신만이 가지고, 공개되지 않는다.

  • 나머지 하나를 공개키라 하며, 공개키는 유출되도 비공개키를 모르면 복호화할 수 없어 안전하다.


📍 HTTPS 연결 과정

  1. 클라이언트(브라우저)가 서버로 최초 연결 시도
  2. 서버는 공개키 (인증서)를 브라우저에게 넘겨줌
  3. 브라우저는 인증성의 유효성을 검사하고 세션키를 발급함
  4. 브라우저는 세션키를 보관하며, 추가로 서버의 공개키로 세션키를 암호화하여 서버로 전송
  5. 서버는 개인키로 암호화된 세션키를 복호화하여 세션키를 얻음
  6. 클라이언트와 서버는 동일한 세션키를 공유하므로 데이터를 전달할 때 세션키로 복호화/암호화를 진행함

📍 참고

https://developer.mozilla.org/ko/docs/Web/HTTP/Overview
https://mangkyu.tistory.com/98
https://velog.io/@surim014/HTTP%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

profile
프론트엔드 개발자가 되겠습니다🔥

0개의 댓글