Websocket
- TCP 기반인 동시 양방향 통신 채널을 제공하는 통신 프로토콜
- 주로 Web에서 사용
- 일반적으로 443, 89 포트 사용
- TCP 핸드셰이크와 HTTP 헤더 오버헤드로 인해 작은 패킷 통신에는 비효율적
- Fragmentation를 사용하지 않을 시 TCP와 같이 패킷의 전체 크기 바이트를 보낼 헤더가 필요
- OSI 7 Layer에서 응용 계층에 속함
TCP Socket
- Translation Control Protocol(TCP)
- Internet Protocol(IP)를 보완하는 초기 네트워크 구현에서 유래되었기에 TCP/IP 라고 부름
- 애플리케이션간 스트림을 안정적이고 순서대로, 오류가 검사된 방식으로 전달
- OSI7 Layer에서 전송 계층에 속함
- 손실될 수 있는 데이터의 재전송 요청, 순서 재정렬하며 네티워크 혼잡 최소화
차이점
- TCP/IP는 OSI 7 Layer에서 전송 계층, WebSocket은 응용 계층
- WebSocket은 TCP Socket과 동일하게 3-Way Handshake를 이룬 후 추가로 HTTP 헤더 오버헤드가 있기에 성능적으로 TCP에 밀림, 대신 통신 구현이 더 쉬움
- TCP는 커스텀하여 보낼 수 있지만 WebSocket은 항상 보내기 전 모든 준비를 맞춰야함
(대충 TCP가 C언어고 WebSocket이 Python 같은 느낌? WebSocket은 세부적으로 개발자 입맛대로 바꿀 수 없음) - TCP Socket 통신 방식
- 데이터가 여러번에 나눠서 전달될 수 있음
- Send : 항상 보낸 바이트 수를 반환
- SendAsync : 보낸 바이트 수 보다 적은 값을 반환할 수 있음
- Recv : 상대방이 보낸 Send 반환값과 불일치 할 수 있음(Send의 반환값 보다 더 적을 수도, 더 많을 수도 있음)
- Sengment 형식으로 통신하기에 메시지 기반 통신을 하기 위해서는 Segment에서 다시 Message 형태로 조립할 수 있도록 프레이밍 / 메시지 경계 데이터(패킷 헤더)를 추가 캡슐화 해야함
- WebSocket 통신 방식
- 항상 데이터가 한번에 보내지거나 아예 안보내짐
- Recv : 항상 Send의 반환값과 같음
- 일반 TCP 소켓을 기반으로 하며 각 프레임의 크기를 포함하고 어떤 프레임이 메시지의 일부인지 나타내닌 프레임 헤더를 사용하기에 TCP 처럼 번거롭게 패킷 헤더를 추가할 필요가 없음
참고 자료
https://en.wikipedia.org/wiki/WebSocket#Frame-based_message
WebSocket - Wikipedia
From Wikipedia, the free encyclopedia Computer network protocol WebSocket is a computer communications protocol, providing a simultaneous two-way communication channel over a single Transmission Control Protocol (TCP) connection. The WebSocket protocol was
en.wikipedia.org
https://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structure
Transmission Control Protocol - Wikipedia
From Wikipedia, the free encyclopedia Principal protocol used to stream data across an IP network The Transmission Control Protocol (TCP) is one of the main protocols of the Internet protocol suite. It originated in the initial network implementation in wh
en.wikipedia.org
Differences between TCP sockets and web sockets, one more time
Trying to understand as best as I can the differences between TCP socket and websocket, I've already found a lot of useful information within these questions: fundamental difference between websoc...
stackoverflow.com
'cs' 카테고리의 다른 글
[CS] 식사하는 철학자 C언어로 해결하기 (0) | 2024.03.03 |
---|
Websocket
- TCP 기반인 동시 양방향 통신 채널을 제공하는 통신 프로토콜
- 주로 Web에서 사용
- 일반적으로 443, 89 포트 사용
- TCP 핸드셰이크와 HTTP 헤더 오버헤드로 인해 작은 패킷 통신에는 비효율적
- Fragmentation를 사용하지 않을 시 TCP와 같이 패킷의 전체 크기 바이트를 보낼 헤더가 필요
- OSI 7 Layer에서 응용 계층에 속함
TCP Socket
- Translation Control Protocol(TCP)
- Internet Protocol(IP)를 보완하는 초기 네트워크 구현에서 유래되었기에 TCP/IP 라고 부름
- 애플리케이션간 스트림을 안정적이고 순서대로, 오류가 검사된 방식으로 전달
- OSI7 Layer에서 전송 계층에 속함
- 손실될 수 있는 데이터의 재전송 요청, 순서 재정렬하며 네티워크 혼잡 최소화
차이점
- TCP/IP는 OSI 7 Layer에서 전송 계층, WebSocket은 응용 계층
- WebSocket은 TCP Socket과 동일하게 3-Way Handshake를 이룬 후 추가로 HTTP 헤더 오버헤드가 있기에 성능적으로 TCP에 밀림, 대신 통신 구현이 더 쉬움
- TCP는 커스텀하여 보낼 수 있지만 WebSocket은 항상 보내기 전 모든 준비를 맞춰야함
(대충 TCP가 C언어고 WebSocket이 Python 같은 느낌? WebSocket은 세부적으로 개발자 입맛대로 바꿀 수 없음) - TCP Socket 통신 방식
- 데이터가 여러번에 나눠서 전달될 수 있음
- Send : 항상 보낸 바이트 수를 반환
- SendAsync : 보낸 바이트 수 보다 적은 값을 반환할 수 있음
- Recv : 상대방이 보낸 Send 반환값과 불일치 할 수 있음(Send의 반환값 보다 더 적을 수도, 더 많을 수도 있음)
- Sengment 형식으로 통신하기에 메시지 기반 통신을 하기 위해서는 Segment에서 다시 Message 형태로 조립할 수 있도록 프레이밍 / 메시지 경계 데이터(패킷 헤더)를 추가 캡슐화 해야함
- WebSocket 통신 방식
- 항상 데이터가 한번에 보내지거나 아예 안보내짐
- Recv : 항상 Send의 반환값과 같음
- 일반 TCP 소켓을 기반으로 하며 각 프레임의 크기를 포함하고 어떤 프레임이 메시지의 일부인지 나타내닌 프레임 헤더를 사용하기에 TCP 처럼 번거롭게 패킷 헤더를 추가할 필요가 없음
참고 자료
https://en.wikipedia.org/wiki/WebSocket#Frame-based_message
WebSocket - Wikipedia
From Wikipedia, the free encyclopedia Computer network protocol WebSocket is a computer communications protocol, providing a simultaneous two-way communication channel over a single Transmission Control Protocol (TCP) connection. The WebSocket protocol was
en.wikipedia.org
https://en.wikipedia.org/wiki/Transmission_Control_Protocol#TCP_segment_structure
Transmission Control Protocol - Wikipedia
From Wikipedia, the free encyclopedia Principal protocol used to stream data across an IP network The Transmission Control Protocol (TCP) is one of the main protocols of the Internet protocol suite. It originated in the initial network implementation in wh
en.wikipedia.org
Differences between TCP sockets and web sockets, one more time
Trying to understand as best as I can the differences between TCP socket and websocket, I've already found a lot of useful information within these questions: fundamental difference between websoc...
stackoverflow.com
'cs' 카테고리의 다른 글
[CS] 식사하는 철학자 C언어로 해결하기 (0) | 2024.03.03 |
---|