본문 바로가기
프로그래밍/네트워크

HTTP란 무엇인가?

by bantomak 2024. 10. 8.

웹 서버 방식에서는 기본적으로 HTTP 프로토콜을 사용하여 통신을 진행한다.

따라서 우선적으로 HTTP 프로토콜이 무엇이고, 어떤 식으로 동작하는지 알아야 할 필요가 있음

HTTP

HyperText Transfer Protocol의 약자로 TCP/IP 프로토콜 집합에 속함

HTTP 통신은 크게 리퀘스트(Request)와 리스폰스(Response)로 이루어짐

  • 클라이언트에서 서버로 보내는 요청이 리퀘스트
  • 클라이언트의 요청에 대한 서버의 응답이 리스폰스

HTTP 통신은 상태를 유지하지 않는 무상태(Stateless) 프로토콜

  • 무상태(Stateless) : 서버가 각 세션에 대한 값을 메모리에 저장하지 않기 때문에 클라이언트의 상태를 기억하지 못함 따라서 서버가 유지해야 하는 자원의 양이 줄어듦
  • 단, 이전의 리퀘스트 및 리스폰스 정보를 기억하지 못하기 때문에 새 리퀘스트가 부여될 때마다 매번 새로운 리스폰스를 생성하는 오버헤드가 발생
  • 쿠키(Cookie)를 사용할 경우 이러한 단점을 어느 정도 해소할 수 있음

HTTP 메서드(method)

GET : 서버로부터 정보를 조회하기 위해 설계된 메서드

GET www.example-url.com/resources?name1=value1&name2=value2
  • 요청 전송 시 필요한 데이터를 Body에 담는 대신 쿼리 스트링을 통해 전송
  • 쿼리 스트링 : URL 끝에 '?' 뒤에 존재하는 '이름=값&이름=값...'의 형태를 지닌 파라미터
  • 쿼리 스트링의 값들이 그대로 노출되기 때문에 보안이 필요한 경우에는 사용할 수 없음
  • 동일 요청 발생 시 캐싱을 사용하기 때문에 상대적으로 전송 속도가 빠름
  • 애플리케이션이나 브라우저에 따라 일반적으로 헤더 큰 키에 제한이 걸려있기 때문에 간단한 데이터 요청 시에만 주로 사용

POST : 리소스를 생성 / 변경하기 위해 설계된 메서드

POST www.example-url.com/resource
Host: ...				
Content-Type: ...
...
  • 전송해야 할 데이터를 Body에 담아서 전송하기 때문에 데이터 크기의 제한이 없다.
  • Content-Type에 요청할 데이터의 타입을 표기, 해당 표기가 존재하지 않을 시 서버에서 데이터 타입을 유추한다.
  • GET과 달리 데이터가 직접적으로 표시되지 않지만 여러 툴로 내용을 확인할 수 있기 때문에 보안이 필요한 경우 암호화 작업을 거쳐야 한다.

GET vs POST

멱등성(Idempotent) 여부에 따른 성질의 차이가 존재

 

GET : 멱등성(Idempotent)

  • 동일한 연산을 여러 번 수행하더라도 매번 반드시 동일한 결과가 나타나야 함
  • 즉, 서버에게 동일한 요청을 전송 시 동일한 응답이 반환되어야 함
  • 따라서 서버의 데이터나 상태가 변경되지 않는 요청에 사용

POST : 비멱등성(Non-Idempotent)

  • 동일한 연산을 여러 번 수행할 시 서로 다른 결과가 나타날 수 있음
  • 즉, 서버에게 동일한 요청을 전달하더라도 응답은 항상 다를 수 있음
  • 따라서 서버의 데이터나 상태가 변경되는 요청에 사용

HTTPS

HTTP에 데이터 암호화가 추가된 프로토콜

대칭키 암호화와 비대칭키 암호화를 모두 사용하여 빠른 연산 속도와 안정성을 모두 획득함

  • 대칭키 암호화
    • 클라이언트와 서버가 동일한 키로 암호화 및 복호화를 진행
    • 연산 속도가 빠르지만 키가 노출될 시 보안이 깨질 위험이 존재
  • 비대칭키 암호화
    • 한 쌍으로 구성된 공개키와 개인키로 암호화 및 복호화를 진행
    • 연산속도가 느리지만 키가 노출되어도 비교적 안전함

HTTPS 연결 과정은 다음과 같음

  1. 클라이언트가 서버로 연결 시도
  2. 서버는 공개키(인증서)를 클라이언트에 넘겨줌
  3. 클라이언트는 공개키의 유효성을 검사(개인키로 복호화)하여 세션키(대칭키) 발급
  4. 클라이언트는 세션키를 보관하며 서버의 공개키로 세션키를 암호화하여 서버로 전송
  5. 서버는 개인키로 암호화된 세션키를 복호화하여 획득
  6. 따라서 클라이언트와 서버가 동일한 세션키를 공유하므로 데이터 전달 시 세션키로 암호화 및 복호화를 진행

함께 읽으면 좋은 글

 

HTTPS의 동작 원리에 대해서

HTTPS (HTTP over SSL)HTTPS(HyperText Transfer Protocol Secure)는 HTTP 프로토콜에 암호화 프로토콜을 사용하여 통신을 암호화한 HTTP의 보안 버전이다. HTTPS는 데이터 전송의 보안을 강화하기 위해 사용한다. 모

jettstream.tistory.com

참고 사이트

 

배경지식 - HTTP

웹 서버 방식에서는 기본적으로 HTTP 프로토콜을 사용하여 통신을 함 따라서 우선적으로 HTTP 프로토콜이 어떤 것이고, 어떤 식으로 작동하는지 알아야 할 필요가 있음 HTTP Hyper Transfer Protocol의 약

sueshin.tistory.com

댓글