참고자료
GDSC 모두의 네트워크 스터디
https://helloworld-88.tistory.com/215
https://ws-pace.tistory.com/104
1. Socket
- socket은
네트워크 통신의 종단점
이다.
- socket은
프로토콜, ip주소, 포트 넘버
로 이루어져 있다.
- 프로토콜: 시스템간 통신 원활히 수용하도록 해주는 일종의 약속
- ip: 컴퓨터 각각에 부여된 고유의 식별 주소
- port 번호: 한 호스트 내에서 네트워크 통신을 하고 있는 프로세스를 식별하기 위해 사용되는 값.
- socket의 종류
- TCP소켓 : 연결 지향형, 신뢰성 있는 데이터 전송
- UDP소켓 : 비연결형, 빠른 데이터 전송.
- socket 연결
TCP/IP 프로토콜
을 기반으로 맺어진 네트워크 연결방식.
- 이러한 Socket 연결 방식으로 프로그래밍을 하는 것을
소켓 프로그래밍
이라고 하며, 소켓 프로그래밍은 서버와 클라이언트가 특정 Port를 통해 연결을 유지하고 있기 때문에 실시간으로 양방향 통신을 할 수 있는 방식이다.
2. HTTP vs. WebSocket

HTTP
- 정의
- 웹 브라우저와 웹 서버 간의 통신을 위한 프로토콜
- 클라이언트가 요청을 보내고, 서버가 응답을 반환하는 방식으로 작동.
- 특징
- 반이중 통신
- 클라이언트와 서버가 양방향 통신을 할 수 있지만, 한 번에 한 방향으로만 데이터를 전송한다.
- 무전기와 같은 방식
- 상태 비저장 (Stateless)
- 각 HTTP 요청은 독립적으로 처리되며, 이전 요청의 상태를 유지하지 않는다.
- 클라이언트와 서버 간의 연결은 각 요청-응답 주기마다 새로 설정되고 종료된다.
- HTTP의 실시간 통신 방식
-
Polling

- 브라우저(클라이언트)가 정기적으로 서버에 HTTP 요청을 보내어 새로운 데이터를 확인한다.
- 실시간 데이터의 업데이트 주기는 예측 불가능하여 불필요한 요청이 발생, ⇒ 서버 및 네트워크의 부하가 늘어난다.
- 실시간 야구 문자 중계같이 5~10초 주기로 계속 업데이트를 시키는 방식
-
Long Polling

- polling의 서버 부하를 줄이면서 실시간성을 높이기 위한 방식
- 클라이언트가 서버에 요청을 보내고, 서버는 새로운 데이터가 생길 때까지 응답을 지연시킨다.
-
Streaming

- 서버가 클라이언트에게 지속적으로 데이터를 전송.
- 서버가 클라이언트의 요청에 대해 지속적인 데이터 스트림을 제공.
WebSocket
- 정의
- 웹 브라우저와 웹 서버 간의 전이중 통신을 위한 프로토콜.
- 초기에는 HTTP 요청을 사용하여 연결을 설정, 연결이 설정되면 양방향 통신이 가능.