본문 바로가기
CS 지식/네트워크

[네트워크] HTTP 프로토콜 개요 & HTTPS

by CSEGR 2024. 9. 4.
728x90

✔️ HTTP 프로토콜이란?

HTTP(Hypertext Transfer Protocol)는 인터넷 상에서 데이터를 주고 받기 위해 서버/클라이언트 모델을 따르는 프로토콜이다. 

✔️ HTTP 프로토콜의 특징

  • TCP/IP 기반에서 동작하는 응용 프로토콜이다. 
  • 연결 상태를 유지하지 않는 비연결성(connectionless) 프로토콜이다. 
  • 상태가 없는 무상태(stateless) 프로토콜이다. 
  • 요청/응답 방식으로 동작한다. 

    ➕ 비연결성(Connectionless) 

  • 클라이언트와 서버가 한 번 연결을 맺은 후, 클라이언트 요청에 대해 서버가 응답을 마치면 맺었던 연결을 끊는다. 
  • 장점
    • 불특정 다수를 대상으로 하는 서비스에 적합한 방식이다. 
    • 수십 만 명이 웹 서비스를 사용하더라도 접속 유지는 최소한으로 할 수 있기 때문에 더 많은 유저의 요청을 처리할 수 있다. 
  • 단점 
    • 연결을 끊어버리기 때문에 클라이언트의 이전 상태를 알 수 없다.(= Stateless 특성)
    • 클라이언트의 이전 상태 정보를 알 수 없으면, 가령 클라이언트가 과거에 로그인을 성공하더라도 로그 정보를 유지할 수 없는 문제점이 있다. 

     ➕ 무상태(Stateless)

  • 클라이언트가 이전 요청과 같은 데이터를 원하더라도 다시 서버에 연결을 하여 동일한 요청을 시도해야한다.
  • 즉, 연결이 해제됨과 동시에 서버와 클라이언트는 이전에 요청한 결과에 대해서 잊어버린다. 
  • 쿠키(Cookie), 세션(Session), 토큰(Token) 등의 방식을 통해 무상태 문제점을 해결한다.

 

✔️ HTTP 프로토콜의 동작 방식

 

HTTP 프로토콜은 클라이언트(브라우저)와 서버 간의 통신에 사용되며, 요청(request)과 응답(response)으로 구성된다. 이때, HTML 문서 외에도 JSON 데이터나 XML 데이터 등의 정보를 주고 받을 수 있다. 

애플리케이션 계층에서 동작하며, TCP/IP를 기반으로 한다. 

HTTP 동작 방식 : 클라이언트/서버

  • 클라이언트
    • 데이터를 요청하는 쪽
    • 웹 브라우저와 같은 소프트웨어이며, 대표적인 클라이언트 소프트웨어에는 Chrome, Firefox 등이 있다. 
  • 서버 
    • 데이터를 제공하는 쪽 
    • 웹 서버는 보통 표준 포트인 80번 포트로 서비스를 한다. 
  • 예시
    • 클라이언트 프로그램에서 사용자가 회원가입을 요청하게 되면, 서버로 회원 정보를 보내게 되고 서버는 회원 정보를 저장한 후 잘 저장했다고 클라이언트에 응답한다. 이 과정에서 클라이언트와 서버 간의 교류에서 HTTP 프로토콜을 이용한다. 

✔️ HTTP 프로토콜의 요청과 응답

➕ Request Method (요청 메소드)

  요청의 종류
GET 자료 조회를 위한 요청 
POST 자료의 생성을 요청
PUT 자료의 모든 부분 대체(수정) 요청
PATCH 자료의 일부분에 대해 수정 요청
DELETE 자료의 삭제 요청

 

  • request HTTP 메시지 예시 
GET /members/100 HTTP/1.1
Host: localhost:8080

 

 

➕ Status Code (상태 코드) - Response 

  응답의 종류(상태 코드)
1xx (Informational) 요청이 수신되어 처리중
2xx (Successful) 요청 정상 처리
3xx (Redirection) 요청을 완료하려면 추가 행동이 필요
4xx (Client Error) 클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없음
5xx (Server Error) 서버 오류, 서버가 정상 요청을 처리하지 못 함

 

  • response HTTP 메시지 예시 
HTTP/1.1 200 OK 
<html>주문완료</html>

✔️ HTTPS 프로토콜의 등장 배경

HTTP 프로토콜은 Method, Path, Version, Headers, Body 등으로 구성된다. 

출처 : https://mangkyu.tistory.com/98

하지만 HTTP는 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜이기 때문에, 서버와 클라이언트가 주고 받는 메시지를 외부에서 볼 수 있어 보안에 취약하다. 이러한 문제를 해결하기 위해 HTTPS가 등장하게 되었다. 

 

 

 

다음 포스팅에서 HTTPS 프로토콜에 대해서 알아보자 !!

 

#참고 자료

https://mangkyu.tistory.com/98

https://steady-coding.tistory.com/search/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC?page=3

728x90