[Web] TCP는 연결지향인데 HTTP는 비연결성이라고?

Euiyeon Park·2025년 2월 11일

Web

목록 보기
13/13
post-thumbnail

HTTPTCP를 기반으로 동작한다.
그런데 TCP는 연결지향적이고, HTTP의 특징은 비연결성이라고 .. ?..!!

🫧 TCP의 연결 지향

  • TCP는 3-way handshake를 통해 연결을 설정한 후, 신뢰성 있는 데이터를 전송하는 프로토콜이다.
  • 따라서 TCP연결이 유지되는 동안 데이터가 안정적으로 주고받을 수 있다.

🫧 HTTP의 비연결성

  • HTTP는 기본적으로 요청(Request)-응답(Response) 모델을 따르는 프로토콜로,
    각 요청이 독립적이다.
  • 따라서 클라이언트가 서버에 요청을 보내고 응답을 받으면 연결이 해제된다. - 비연결성 프로토콜

📍 TCP는 연결을 유지하는데, HTTP는 왜 연결을 해제하는가?

  • 웹에서 여러 사용자가 동시에 서버에 접속하기 때문에,
    모든 연결을 유지하면 서버 부하가 심해지기 때문에 요청-응답이 끝나면 바로 연결을 끊는다.

🫧 HTTP 요청마다 TCP 연결을 새로 맺어야 할까?

  • HTTP/1.0에서는 요청마다 TCP연결을 새로 맺었으나,
    매 요청마다 3-way handshake가 반복되어 속도가 느려지는 단점이 있다.
  • 이를 개선하기 위해 HTTP/1.1의 Keep-Alive와 이후에 나온 HTTP/2, HTTP/3가 등장했다.

📍 Connection: Keep-Alive

  • HTTP/1.1부터는 기본적으로 TCP 연결을 유지할 수 있다. - Keep Alive
  • 클라이언트가 여러 개의 요청을 보낼 경우, 같은 TCP 연결을 재사용해서 성능을 개선한다.
  • 그러나 여전히 요청은 개별적으로 처리되고,
    클라이언트가 요청을 안하면 일정시간 이후 연결이 해제된다.

📍 HTTP/2와 HTTP/3

  • HTTP/2는 멀티플렉싱(Multiplexing) 기능을 추가해,
    하나의 TCP 연결에서 여러 개의 요청을 동시에 처리할 수 있다.
  • HTTP/3은 TCP 대신 QUIC(UDP 기반 프로토콜)을 사용해 더 빠르게 데이터를 주고 받는다.

🫧 정리

  • TCP는 연결을 유지하는 연결지향적 프로토콜
  • HTTP는 TCP 위에서 동작하지만,
    기본적으로 요청-응답 단위로 연결을 끊는 비연결성 프로토콜
  • HTTP/1.1 부터 Keep-Alive 기능이 추가되어 TCP 연결을 유지할 수 있지만,
    개별 요청은 여전히 독립적
  • HTTP/2, HTTP/3에서는 멀티플렉싱과 QUIC를 활용하여 더 효율적인 연결 관리가 가능

ref

https://easy-code-yo.tistory.com/80

profile
"개발자는 해결사이자 발견자이다✨" - Michael C. Feathers

0개의 댓글