일반 tcp소켓과 웹소켓의 비교 > 개발자팁

개발자팁

개발과 관련된 유용한 정보를 공유하세요.
질문은 QA에서 해주시기 바랍니다.

일반 tcp소켓과 웹소켓의 비교 정보

기타 일반 tcp소켓과 웹소켓의 비교

본문

일반 TCP 소켓과 웹소켓은 네트워크 통신을 위한 프로토콜입니다. 그러나 두 프로토콜은 목적과 사용 방식에 차이가 있습니다.

1. 목적:
- 일반 TCP 소켓: TCP는 신뢰성 있는 연결 지향형 프로토콜로, 양방향 데이터 스트림을 제공합니다. 주로 서버와 클라이언트간의 연결을 설정하고 데이터를 안정적으로 교환하기 위해 사용됩니다.
- 웹소켓: 웹소켓은 HTML5에서 도입된 양방향 통신 프로토콜로, 웹 애플리케이션과 서버 간의 실시간 통신을 위해 설계되었습니다.

2. 연결 방식:
- 일반 TCP 소켓: TCP는 서버와 클라이언트 사이에 연결을 설정한 후 데이터를 주고받기 위해 '3-way handshake'를 사용합니다. 연결이 설정된 후에도 항상 연결을 유지하며, 클라이언트나 서버가 연결을 종료할 때까지 데이터를 교환할 수 있습니다.
- 웹소켓: 웹소켓은 HTTP 프로토콜을 기반으로 연결을 설정한 후에는 지속적인 양방향 통신을 제공합니다. 웹소켓 연결은 'Handshake'를 통해 시작되며, 한 번 연결된 후에는 클라이언트나 서버가 종료하지 않는 한 계속해서 데이터를 주고받을 수 있습니다.

3. 프로토콜 구조:
- 일반 TCP 소켓: TCP 프로토콜은 네트워크 계층의 TCP/IP 스택에서 사용됩니다. TCP 헤더와 패킷 구조에 따라 신뢰성 있는 데이터 전송을 보장합니다.
- 웹소켓: 웹소켓 프로토콜은 HTTP/1.1을 기반으로 하며, 추가적인 프로토콜 헤더가 포함됩니다. 웹소켓 헤더는 초기 연결 설정 후에는 각 메시지마다 전송되지 않으므로, 오버헤드가 적습니다.

4. 데이터 교환 방식:
- 일반 TCP 소켓: TCP는 스트림 기반 프로토콜로, 데이터를 바이트 단위로 주고받습니다. 양방향으로 동작하며, 전송 순서를 보장하고 중복 데이터나 손실을 방지합니다.
- 웹소켓: 웹소켓은 메시지 기반 프로토콜로, 데이터를 메시지 단위로 주고받습니다. 중복 데이터나 손실을 방지하기 위한 재전송 기능이 내장되어 있으며, 메시지 기반 구조 때문에 웹 애플리케이션에서 더 쉽게 처리할 수 있습니다.

5. 프로토콜 호환성:
- 일반 TCP 소켓: TCP는 네트워크 계층에서 동작하기 때문에 다양한 응용 프로토콜과 호환될 수 있습니다. 다른 응용 프로토콜에 대한 커스터마이징이 가능하며, 주로 컴퓨터 간의 통신에 사용됩니다.
- 웹소켓: 웹소켓은 HTML5와 관련된 웹 기술에 특화되어 있으며, 웹 애플리케이션에서 널리 사용됩니다. HTTP/1.1과 호환되지만, 일반 TCP 소켓과는 다른 프로토콜입니다.

6. 포트 번호:
- 일반 TCP 소켓: TCP 연결에 사용되는 일반적인 포트 번호는 예약되어 있지 않으며, 애플리케이션에 따라 다르게 할당됩니다. 예를 들면, HTTP의 경우 80번 포트가 일반적으로 사용됩니다.
- 웹소켓: 웹소켓 연결은 보통 HTTP 프로토콜을 통해 시작되므로, 일반적으로 80번 포트(HTTP)나 443번 포트(HTTPS)를 사용합니다. 그러나 다른 포트 번호로도 연결이 가능합니다.

7. 지원하는 플랫폼:
- 일반 TCP 소켓: TCP는 네트워크 계층에서 작동하며, 다양한 운영 체제와 플랫폼에서 호환됩니다. TCP/IP 스택을 지원하는 모든 기기와 통신할 수 있습니다.
- 웹소켓: 웹소켓은 주로 웹 브라우저와 서버 간의 통신을 위해 설계되었습니다. 따라서 웹 브라우저 및 웹 서버 환경에서 가장 자연스럽게 사용할 수 있습니다.

요약하면, 일반 TCP 소켓과 웹소켓은 프로토콜 호환성, 포트 번호, 지원하는 플랫폼 등에서 차이가 있습니다. TCP는 네트워크 계층에서 동작하며 다양한 응용 프로토콜과 호환됩니다. 반면 웹소켓은 HTML5와 관련된 웹 기술에 특화되어 있으며, 웹 애플리케이션에서 실시간 통신을 위해 사용됩니다.

추천
0

댓글 5개

tcp소켓과 웹소켓은 비교 대상이 아닌것 같아서 본문을 잘 살펴보니, chatgpt 답변 내용이었군요.
저도 똑같은 질문을 하니 chatgpt가 유사한 답변을 해주긴하네요.
@라엘 좋은 내용, 알고 싶었던 문제를 공유하면 좋을것이 생각했을뿐입니다. 여기는 혼자 알고있는곳이 아닌 팁을 공유하는 곳이라서.
내용중에 일부는 엉터리인데, 잘 모르는 사람에겐 잘못된 지식을 전달하겠군요.
웹소켓은 그냥 TCP 소켓 하위 계층의 프로토콜입니다.

잘모르면 그냥 쓰지 마세요.
웹소켓하고 소켓하고, HTTP 하고 구분도 못하면서 글을 왜 링크해서 가져오시는지 모르겠네요.

님이  쓸려고 한 글 ==>  브라우저에서 구현하는 tcp 소켓 vs  websocket

챗gpt 가 쓴 내용
 http vs tcp vs websocket 짬뽕


그냥 본인이 개발하면서 경험한 내용중에서  다른 사람에게 도움되는 내용을 적으세요.
아무글이나 번역하고 chatgpt가 써준글, github에서 복붙하지 마시구요.

복붙하면 원본글이라도 남기시고, 전체 내용을 다 넣으세요. 부분만 잘라서 글쓰지 말고.
전체 1,263
개발자팁 내용 검색 기타에서

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT