뭐 당연히 TCP겠지만 그래도 비교했던 내용을 공유
SI 프로젝트에서 기관과 소켓 통신을 구현해야 하는 상황이 있었다.
우리는 TCP와 UDP 중 어떤 프로토콜을 사용할지 고민하고 있었는데, TCP와 UDP의 장단점을 알아보고 결정 하기로 했다.
주로 소켓 통신을 하는 프로토콜에는 2가지가 대표적이다.
하나는 TCP, 다른 하나는 UDP.
TCP는 신뢰성을 보장하는 프로토콜 이다.
데이터가 손실되거나 손상되면 재전송을 통해 복구할 수 있다.
또한, 데이터가 전송된 순서대로 도착하도록 보장하고, 에러 검출 및 수정 기능도 갖추고 있다.
통신을 시작하기 전에 연결을 설정하고, 통신이 끝나면 연결을 종료하는 연결 지향적 프로토콜이기도 하다.
하지만 이러한 기능들 때문에 오버헤드가 발생하고, 속도가 느릴 수 있다.
다른 프로토콜인 UDP에 대해 설명을 하자면. 반면에 UDP는 속도가 빠르다.
연결 설정이 필요 없고, 오류 검출 및 수정 기능이 없기 때문에 오버헤드가 적다.
또한, 브로드캐스트 및 멀티캐스트를 지원하여 여러 수신자에게 데이터를 전송할 수 있다.
하지만 UDP는 신뢰성을 보장하지 않으며, 데이터가 손실되거나 손상되면 복구되지 않는 치명적인 단점이 있다.
데이터가 전송된 순서대로 도착하지 않을 수도 있고, 오류 검출 및 수정 기능도 없다.
신중하게 고민? 한 끝에, 신뢰성과 데이터의 순서 보장이 중요한 프로젝트의 특성을 고려하여 TCP/IP를 사용하기로 결정 했다.
비록 오버헤드와 속도 면에서 단점이 있지만, 데이터의 신뢰성과 순서 보장이 더 중요하다고 판단했기 때문이다.
뭐 브로드캐스트나 멀티캐스트를 써야한다면, 그리고 순서보장 및 신뢰성이 필요 없다면 UDP를 사용.
- 끝 -
'플젝 구현내용 정리' 카테고리의 다른 글
TCP/IP 4계층 모델로 AWS 인프라를 구현 (0) | 2024.09.03 |
---|---|
PostgreSQL DB에 INDEX를 적용 했을 때 여전히 느린 경우 (1) | 2024.09.03 |
CentOS와 UbuntuOS 선정 하기 (1) | 2024.09.03 |
NoSQL관련 PoC 사례 정리 (0) | 2024.09.03 |
프로젝트에서 쿠키(Cookie)와 세션(Session)을 적용한 사례 정리 (0) | 2024.09.03 |