Socket
Unix Socket (a.k.a. Domain Socket)
IPC Socket이라고도 불리는 유닉스 소켓은 네트워크가 아닌, 호스트 시스템의 프로세스간 통신에 사용된다. 유닉스 소켓은 파일 시스템(ex. /var/run/docker.sock)에 존재하는데, 파일이 소켓으로 동작한다. 당연히 네트워크를 거치지 않기 때문에, 보다 빠르고 호스트 머신 내에 존재해 외부에 노출 될 위험이 적다.
Web Socket
TCP 프로토콜(주로
80
또는443
포트)을 기반으로, 네트워크에서 실시간 양방향 통신에 사용된다. 한 번의 handshake 과정을 통해 연결이 되면, 브라우저를 종료할 때까지 연결이 지속된다. 웹 소켓을 연결하려는 경우, Request Header에Connection: upgrade
를 추가해 프로토콜을 업그레이드한다. 그런 다음 서버에서 프로토콜을 업그레이드하려는 경우,101 Switching Protocols
Response를 반환함으로써 프로토콜이 전환된다.
Request Header
GET wss://<DOMAIN_NAME>/socket.io/?EIO=4&transport=websocket&sid=<SID> HTTP/1.1
Connection: Upgrade
Upgrade: websocket
...
Response Header
HTTP/1.1 101 Switching Protocols
Connection: upgrade
Upgrade: websocket
...