소켓, 웹소켓 그리고 TCP
2024. 10. 21. 22:02ㆍ[Node.js_6기 본캠프 TIL]
웹소켓을 활용하는 프로젝트에 이어, TCP를 활용한 프로젝트를 시작하려고 하니 개념이 헷갈리기 시작했다. 이 소켓이 그 소켓인가. 이 양방향 통신과 저 양방향 통신은 무엇이 다른가. 따로따로 정리한 글들을 봐도 이게 그거 같고, 저게 그거 같았다.
이 소켓이 그 소켓인가요?
프로그램이 네트워크 상에서 데이터를 송신과 수신을 하기 위한 연결부를 소켓이라고 한다. 서버와 클라이언트의 IP 주소, 포트 번호, 연결 상태 등을 기록해놓은 하나의 파일이기도 하다. 일반적으로 TCP/IP 프로토콜을 이용하거나 WebScoket을 이용한다. 웹소켓 프로젝트에서 socket.io를 사용하며 질리도록 봤던 socket.on의 소켓과 TCP 프로젝트에서 다시 만나게 된 socket.on의 소켓은 같지만 다른 방식으로 구현되고 작동하고 있었다.
웹소켓과 TCP/IP 소켓의 차이점은?
TCP 소켓이 4계층(전송계층)에서 동작하고, 웹소켓은 HTTP에 기반하는 만큼 7계층(애플리케이션 계층)에서 동작한다는 점에서 가장 큰 차이를 보인다. 이 차이 때문에 데이터를 주고 받을 때 Buffer를 꼭 활용해야 한다는 것만은 알 것 같다. 그 외의 차이점은 하기와 같다.
- 웹 소켓은 HTTP 레이어에서 작동하는 소켓으로 TCP/IP 소켓의 레이어가 다르다.
- IP, PORT를 통해서 통신한다는 점에서는 비슷하다.
- 추상화 정도
- TCP Socket은 저수준이다.
- 웹소켓은 추상화되어있다.
- protocol
- TCP Socket은 4 계층(전송계층)에 위치에서 위치하여 동작한다.
- WebSocket은 HTTP에 기반하므로 7 계층(애플리케이션 계층)에서 동작한다.
- Data 전송방법
- TCP Socket은 바이트스트림을 통한 데이터 전송을 사용한다.
- WebSocket은 구조화된 메시지 형식의 데이터를 다루게 된다.
- 방화벽
- TCP Socket은 방화벽에 의해 차단될 수 있는 새 TCP 포트를 열어야 한다.
- 웹소켓 통신은 TCP 포트 번호 80(또는 TLS 암호화 연결의 경우 443)을 통해 이루어지므로 방화벽을 사용하여 웹이 아닌 인터넷 연결을 차단하는 환경에 유용하다.
참고자료:
https://jerecord.tistory.com/155
https://on1ystar.github.io/socket%20programming/2021/03/16/socket-1/
'[Node.js_6기 본캠프 TIL]' 카테고리의 다른 글
전송계층 프로토콜, 대칭키/비대칭키 암호화 방식 그리고 로드밸런싱에 대하여 (0) | 2024.10.31 |
---|---|
Protocol Buffers란? (0) | 2024.10.25 |
[CH 4 타워 디펜스 게임 프로젝트] 트러블슈팅 1016 (0) | 2024.10.16 |
[CH 4 타워 디펜스 게임 프로젝트] 트러블슈팅 1014 (0) | 2024.10.15 |
[CH 4 리얼 타임 과제] 트러블슈팅 - 1007 (0) | 2024.10.07 |