Socket I/O

Code_Builder·2024년 9월 13일
0

갑자기 NodeJs 벡엔드 기반 토이프로젝트 하나 만들다가 갑자기 궁금해져서 정리...

소켓 통신이란?

소켓(인터페이스)은 IP 주소와 포트 번호로 구성되며, 소켓 통신은 일반적으로 TCP(느리지만 신뢰성 높음) 또는 UDP(빠르지만 신뢰성 낮음)와 같은 전송 프로토콜을 사용하여 데이터를 송수신

  • 인터페이스: 두 개체가 상호작용하기 위해 정의된 규칙이나 경계


출처: https://sendbird.com/developer/tutorials/websocket-vs-http-communication-protocols


HTTP , Socket 비교

소켓 통신은 초기 연결 후 지속적인 양방향 통신(=한번 통신이 연결되면 대기및 데이터 오면 처리)
HTTP 통신은 요청-응답 모델로써 데이터 요청 시마다 통신 발생


HTTP 과 소켓 통신의 관계

  • 기본적으로 Http통신은 TCP 소켓 위에서 작동
  • 클라이언트(프론트에서)가 HTTP 요청(GET,POST 등)을 보내면, TCP 소켓이 이를 네트워크를 통해 전송

-> HTTP는 클라이언트와 서버 간의 데이터 요청 및 응답을 위한 프로토콜이며, 소켓 통신은 이러한 데이터를 안전하게 전송하기 위한 연결 방식을 제공합니다.

  • 프로토콜: 통신 규약(약속)

소켓 통신의 특징

  • 양방향 통신: 클라이언트와 서버가 동시에 데이터를 송수신 가능

  • 상태 유지: 연결이 유지되는 동안 클라이언트와 서버는 서로의 상태를 기억

  • TCP/IP 프로토콜: 주로 TCP(신뢰성 있는 연결) 또는 UDP(빠른 전송, 신뢰성 없음)를 사용

  • 실시간 데이터 전송: 즉시 데이터를 주고받을 수 있어, 채팅, 온라인 게임 등에서 사용


작동 방식

  • 서버 소켓 생성: 서버는 소켓을 생성하고 특정 포트에서 클라이언트의 연결 요청 대기

  • 클라이언트 소켓 생성: 클라이언트는 서버의 IP 주소와 포트 번호를 사용하여 서버에 연결 요청 보냄

  • 연결 확립: 서버가 클라이언트의 요청을 수락하면, 양쪽 모두 소켓을 통해 데이터 전송을 시작

  • 데이터 전송: 클라이언트와 서버 간에 데이터를 주고받음, 이때 소켓이 데이터를 패킷으로 나누어 전송

  • 연결 종료: 데이터 전송이 완료되면 소켓 연결을 종료


솔직히 소켓 통신이 뭔지는 아직 잘 모르겠다

profile
사소한일에도 최선을 다하기

0개의 댓글

관련 채용 정보