HTTP 통신과 TCP통신의 차이점
HTTP 통신
HTTP통신은 요청을 하면 반드시 응답이 돌아오는 비연결지향적인 단방향 통신이다. 언제든 요청을 하면 그에 해당하는
값을 서버에서 보내준다. 인터넷 페이지를 예시로 들어보자. 우리가 보고 있는 페이지는 모두 클라이언트 측에서 받아서 결과로 처리받을 화면을 보고있다. 단방향 통신이기 때문에 항상 연결되어 있는 건 아니다. 요청에 대한 응답을 받았으면 이미 통신은 끝난 것이다.
(클라이언트 요청 -> 서버에서 응답) 무조건 클라이언트에서 요청을 해야 한다.
TCP통신 (socket 통신)
TCP통신은 Handshake라는 과정으로 서로가 통신이 가능한지 인증 후 통신을 하는 연결지향적 양방향 통신이다.
양방향이란 즉 요청을 보내거나 받을 수도 있다는 말이다. HTTP통신도 기본적으로 TCP 위에서 작동되는 구조이며, Handshake라는 과정을 거치며 서로가 연결되었다면 이후 서로 실시간 통신을 할 수 있게 된다. 이는 보통 실시간 처리에서 많이 사용된다. 예를 들면 게임을 하다가 적이 공격했을 때 실시간으로 내 피가 줄어드는 걸 생각하면 이해하기 쉬울 것이다. 방송과 라디오, 음성 통신 등은 TCP 통신이 아닌 UDP통신이다. Handshake와 UDP통신은 따로 다뤄보도록 하겠다.
(클라이언트에서 응답 또는 요청 <-> 서버에서 응답 또는 요청)
UDP 통신과 TCP통신의 차이점
UDP 통신과 TCP 통신의 차이를 알아보자
- UDP 통신은 1:N의 통신으로 TCP 통신의 1:1 소켓 통신과는 다르다. 이 부분을 예로 대상이 정해지지 않은 통신에서 사용된다.
- UDP 통신은 패킷의 순서가 보장되지 않는다. 메시지가 여러개의 라우터를 거쳐 이동하면 물리적인 여건으로 인해 메세지가 도착하는순서가 다르다. 반면 TCP 통신은 정해진 라우터들로 이동하기 때문에 메세지가 순서대로 도착한다. 이는 UDP 통신은 오류가 날 수 있으며, 반면 TCP 통신은 UDP 통신에 비해 느릴 수 있다.
- 예로 들면, 대상이 정해지지 않은 라디오의 경우 순간의 통신 오류는 큰 문제가 없을 것이다. 이처럼 대상이 정해지지 않기 때문에 중요하지 않은 데이터들을 전송할 때 사용된다.
HTTP 통신, TCP 통신 사용 예시
- HTTP 실시간이 아닌 요청에 응답을 주는 단방향성 통신인 경우 웹페이지처럼 단순한 데이터들로만 구성이 되어있는 경우 사용된다.
- TCP 실시간으로 확인이 필요한 상황에서 양방향성인 경우에 사용되며, 위에서 언급한 상황일 떼 사용된다. 이는 서버에 소켓 연결로 계속 언제든 통신을 주고받을 준비를 해야 하기 때문에 여러 개의 클라이언트가 붙으면 그만큼 서버는 부하될 수밖에 없다.
마무리
개념상 TCP 안에서 HTTP를 작동하고 있기 때문에 사실 둘은 다르지만 비슷하다.
하지만 개념은 완전히 다르니 잘 파악해야 할 필요가 있을 것 같다!