자라나라 개발머리

[HTTP] TCP 통신과 HTTP 통신의 특징과 차이 본문

HTTP

[HTTP] TCP 통신과 HTTP 통신의 특징과 차이

iammindy 2024. 4. 22. 02:23

오늘은 네트워크 통신의 기본적인 지식인 TCP와 HTTP의 특징과 차이에 대해 알아보려고 합니다.

 

TCP 통신 특징

우선 TCP의 기본적인 특징에 대해서 간단히 알아보면,

 

1. 연결지향: 3way handshake (syn-> syn+ack -> ack)

2. 데이터 전달 보증 (전송 후 잘받았다고 신호)

3. 순서 보장 (순서 안 맞으면 다시 보냄)

이 있습니다.

 

TCP와 HTTP의 차이

그럼 HTTP 통신은 TCP 통신과 어떤 차이가 있을까요?

 

1. 계층 위치 차이

OSI 7계층에서, TCP는 4계층인 전송계층, HTTP는 7계층인 응용계층에 있습니다.

HTTP 통신은 HTTP는 TCP/IP 스택에 의존하여 통신합니다.

따라서, TCP통신이 가지고 있는 연결지향, 데이터 전달 보증, 순서 보장 특징을 모두 가지고 있습니다.

(TCP 기반으로 만들어져있는 http/1.1, http/2 버전에 한함)

 

2. 프로토콜 특징

TCP는 연결 지향이지만, HTTP는 비연결성의 특징을 갖고 있습니다.

이것이 TCP 통신과 HTTP 통신의 가장 큰 차이점입니다.

 

HTTP 통신 특징

그럼 TCP와의 차이점인 비연결성의 의미와, HTTP 통신의 가장 큰 특징인 Stateless에 대해 알아보겠습니다.

 

1. 비연결성: 연결을 유지하지 않음

TCP 통신은 한 번 연결하면 계속 그 연결이 유지되어 서버 자원이 소모가 되지만, HTTP는 한 번 통신이 완료되면 연결을 끊어버립니다. 따라서 서버 자원을 효율적으로 사용할 수 있게 됩니다.

 

2. 무상태 프로토콜(stateless)

stateless는 HTTP의 가장 큰 특징이자 HTTP 통신이 널리 쓰이는 이유입니다.

무상태의 뜻은 서버가 클라이언트의 상태를 보존하지 않는다는 의미입니다.

반의어로는 stateful, 상태유지가 있습니다.

 

stateful vs stateless

stateful 서버는, 클라이언트의 상태를 보존합니다.

따라서 중간에 서버가 다른 서버로 바뀌면 클라이언트 데이터가 손실됩니다. (바뀐다면 상태 정보를 다른 서버에게 미리 알려줘야함)

stateless 서버는, 클라이언트 상태를 보존하지 않습니다.

따라서, 중간에 다른 서버로 얼마든지 대체가 가능합니다. 이는 갑자기 클라이언트 요청이 증가해도 서버를 대거 투입할 수 있다는 큰 장점이 있습니다.

따라서 서버를 설계할 땐, 최대한 stateless하게 설계하는 것이 수평 확장을 하는 것에 큰 도움이 됩니다.

 

현재 대부분의 통신에 HTTP 통신이 쓰이고 있는 이유가 위 비연결성과, 무상태를 HTTP 통신으로 구현할 수 있기 때문이라고 합니다.

이러한 특징을 알고 HTTP를 다루면, 더욱 정교한 설계를 할 수 있을거라 생각합니다. 읽어주셔서 감사합니다. 😄

'HTTP' 카테고리의 다른 글

[HTTP/header] X-Forwarded-For(XFF)  (0) 2024.03.25
[HTTP 웹 기본 지식] 인터넷 통신(internet network)  (0) 2023.04.28