본문 바로가기

개발/Network

[Network] TCP & HTTP 비교

사람은 망각의 동물이다. 극복하는 방법은 반복밖에 없는 것 같다.

왜 이런 이야기를 하냐하면, 블로그에 포스팅까지 했던 내용으로 면접에서 털렸기 때문인데..

다시금 기억을 되새기고 조금 더 자세하게 남겨보고자 이번 글을 적는다.

OSI 7 Layer flow

다들 알다시피 TCP와 HTTP는 모두 통신 프로토콜이고, ISO 7 Layer를 기준으로

TCP는 4계층인 전송(Transfort)계층 , HTTP는 7계층인 응용(Application) 계층이다.

이 말인 즉, HTTP는 결국 TCP기반 위에서 동작하는 프로토콜이라는 것이다.

그럼에도 불구하고 이 둘의 차이를 물어보는 것은 왜일까?.

 

가장 큰 차이는 "연결 지향적인 통신" 여부이다.

HTTP는 비연결지향적인 단방향 통신인데, Client의 Request가 있을 경우, 서버는 Response를 주고 연결이 종료된다.

반면 TCP는 서로가 통신을 하기위해 Handshake 과정을 거친 후 양방향으로 연결된다.

따라서 언제든지 실시간으로 서버와 클라이언트가 상태를 주고받을 수 있게 된다. HTTP와 마찬가지로 요청을 하고 결과를 받을수도 있고, 아무런 요청 없이도 Response를 받을 수도 있는 것이다.

 

TCP는 Socket 통신을 생각하면 된다. 물론 HTTP 통신으로 Socket 통신이 가능한 WebSocket도 존재한다.


TCP는 신뢰성 보장, 순서 보장과 같은 특징들이 더 있으며,

사실 UDP와 비교하는것이 더 차이를 확실히 구분지을 수 있다. 

내가 받은 질문은 결국 연결 지향성에 관한 내용을 묻는 부분이었다고 생각할 수 있을 것이다.

 

참고 : https://hwan-shell.tistory.com/271

 

http와 tcp/ip의 이해

1. Http? tcp/ip? 네트워크 전공이신 분들은 이 두개가 서로 상호작용 한다는 것을 알고 있을 것입니다. 문제는 방대한 양의 정보와 잘못된 지식인데, http와 tcp/ip를 완전 다른놈 취급한다는 사실입니

hwan-shell.tistory.com

 

'개발 > Network' 카테고리의 다른 글

[Network] HTTP 버전별 특징  (0) 2023.10.29
[HTTP] 비연결성  (0) 2022.05.02
[HTTP] TCP : 3way handshake  (0) 2022.03.24
[Network]로드밸런싱(Load Balancing)  (0) 2022.03.14