본문 바로가기
Study

HTTP 통신과 TCP 통신의 차이와 이해

by Client. DJ 2022. 2. 10.
반응형

HTTP 통신

HTTP통신은 Question을 물어보면 반드시 Answer이 돌아오는 비연결지향적인 단방향 통신입니다. 언제든 요청을 하면 그에 해당하는 값으로 답을 줍니다. HTTP라는 말에서 보셨듯이, 주로 인터넷 페이지를 예로 들 수 있습니다. 우리는 현재 보고 있는 페이지를 요청해서 받아서 결과로 처리받을 화면을 보고 있으며, 단방향 통신으로 현재는 항시 연결되어 있다고 보지 않습니다. 단순하게 요청에 대한 응답을 받았으면 이미 끝난 것이기 때문입니다.

(클라이언트가 요청 -> 서버에서 응답)

언제든 물어보면 반드시 답이 돌아온다.

TCP통신 (socket 통신)

TCP통신은 Handshake라는 과정으로 서로가 통신을 할 수 있는 상태를 먼저 인증을 하고 나서 통신을 하는 연결지향적인 양방향 통신입니다. 이는 서로에게 언제든 실시간으로 상태를 보낼 수 있으며, 받을 수도 있습니다. HTTP통신도 기본적으로 TCP 위에서 작동이 되는 구조이며, Handshake라는 과정을 거치며 소켓을 각자 생성하여 서로가 연결되었음을 알게 되고 이후 서로 실시간 통신을 할 수 있게 됩니다. 클라이언트가 데이터를 서버에 보내기도 하며, 서버가 먼저 데이터를 클라이언트에 보내기도 합니다. 이는 보통 실시간 처리에서 많이 사용이 됩니다. 예로 들어서 실시간 게임으로 예를 들 수 있습니다. 또 다른 비슷한 예가 있지만, 방송과 라디오, 음성 통신 등은 TCP 통신에 해당되지 않습니다. 이는 UDP 통신이라고 이야기합니다.

(클라이언트에서 발신 또는 수신 <-> 서버에서 발신 또는 수신)

서로 연결이 됐는지 확인하고, 양방향성 통신을 한다.

UDP통신? TCP 통신과 차이점

UDP 통신과 TCP 통신의 차이를 아래에서 확인하면 이해할 수 있습니다.

  1. UDP 통신은 1:N의 통신으로 TCP 통신의 1:1 소켓 통신과는 다르다. 이 부분을 예로 대상이 정해지지 않은 통신에서 사용이 된다.
  2. UDP는 통신 패킷의 순서가 보장되지 않는다. 통신 개념상 데이터 메세지를 잘게 쪼개어 각자 따로 여러개의 라우터를 거쳐서 이동하여, 물리적인 여건으로 인해(통신 선 길이, 라우터 기계의 성능 등) 쪼개어진 메세지가 도착하는 순서가 다르다. 하지만 반면에 TCP 통신은 정해진(또는 선정된) 라우터들로 이동하기 때문에 쪼개어진 메세지가 순서대로 도착을 한다. 이는 UDP 통신은 오류가 날 수 있으며, 반면 TCP 통신은 UDP 통신에 비해 느릴 수 있다.
  3. 예로 들면, 대상이 정해지지 않은 라디오 또는 방송에서 사용된다. 순간의 통신 오류 정도야 큰 문제가 없으며, 대상이 정해지지 않으므로 중요하지 않은 데이터들을 전송할 때 사용된다.

HTTP통신, TCP통신 둘 중 필요한 경우는?

  • HTTP통신은 실시간이 아닌 요청에 응답을 주는 단방향성인 경우, 예를 들어 웹 페이지 처럼 단순한 데이터들로만 구성이 되어 있는 경우가 되겠습니다.
  • TCP통신은 실시간으로 확인이 필요하는 상황에서 사용되며, 양방향성인 경우에 사용되며,  위와 같은 예시로 사용할 수 있지만, 이는 서버에 소켓 연결로써 계속 언제든 통신을 주고 받을 준비를 하기 때문에 여러 Client가 붙으면 그만큼 서버에 부담이 됩니다. 하지만 실시간 통신이 필요하다면 사용할 수 있겠습니다.

마무리

개념상 TCP 안에서 HTTP를 작동하고 있기 때문에 사실 둘은 다르다고 할 수도 있고, 비슷하다고 할 수 있지만, 개념적으로는 분리되어있습니다. 좀 더 정확히 이야기하자면, HTTP는 단기적인 TCP 커넥션을 하고 종료한다고 할 수 있겠습니다.

 

이 글을 요약하자면 비연결지향적인 단방향성 통신(HTTP)연결지향적인 양방향성 통신(TCP)에 대한 구분이라고 할 수 있겠습니다. 이번 글은 TCP/IP 계층 또는 OSI 계층 구조에 대한 설명이 아닌 개념적인 접근을 위한 글로 작성되었기 때문에 계층구조에 대해서는 아래의 그림을 참고하시면 좋겠습니다.

 

반응형

댓글