일반 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개
저도 똑같은 질문을 하니 chatgpt가 유사한 답변을 해주긴하네요.
웹소켓은 그냥 TCP 소켓 하위 계층의 프로토콜입니다.
잘모르면 그냥 쓰지 마세요.
https://medium.com/kifi-engineering/websockets-vs-regular-sockets-b3b8e7ea0708
https://stackoverflow.com/questions/16945345/differences-between-tcp-sockets-and-web-sockets-one-more-time
https://velog.io/@rhdmstj17/%EC%86%8C%EC%BC%93%EA%B3%BC-%EC%9B%B9%EC%86%8C%EC%BC%93-%ED%95%9C-%EB%B2%88%EC%97%90-%EC%A0%95%EB%A6%AC-2
https://sooolog.dev/HTTP-%ED%86%B5%EC%8B%A0%EA%B3%BC-TCP-%ED%86%B5%EC%8B%A0-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EC%9B%B9-%EC%86%8C%EC%BC%93%EC%97%90-%EB%8C%80%ED%95%9C-%EA%B8%B0%EB%B3%B8-%EA%B0%9C%EB%85%90-%EC%A0%95%EB%A6%AC/
혹 stackoverflow보다 더 잘 아시는 경험 계시면 정확한 내용 부탁드립니다.
님이 쓸려고 한 글 ==> 브라우저에서 구현하는 tcp 소켓 vs websocket
챗gpt 가 쓴 내용
http vs tcp vs websocket 짬뽕
그냥 본인이 개발하면서 경험한 내용중에서 다른 사람에게 도움되는 내용을 적으세요.
아무글이나 번역하고 chatgpt가 써준글, github에서 복붙하지 마시구요.
복붙하면 원본글이라도 남기시고, 전체 내용을 다 넣으세요. 부분만 잘라서 글쓰지 말고.