728x90
반응형
http
- 요청은 클라이언트만 가능 (html/js)
- 한 번의 요청에는 한 번의 응답 (client 요청 server 응답)
- 응답을 기다리는 동안 다른 작업 불가
-> 게임이나 채팅과 같은 양방향 통신, 다중 통신, 실시간 통신을 위해 웹 소켓 탄생
웹소켓
- 구현이 복잡하다
- 요청한 사람에게만 응답을 보내기 어려움
- OSI7 계층에 위치하며 4계층의 TCP에 의존한다
- HTTP가 http/https를 이용하듯 웹소켓은 ws/wss를 이용(끝 s는 보안 강화)
웹소켓 연결
- http를 이용하여 연결 수립
- 응답도 http로 온다
- 웹소켓 연결 요청은 “Connection:Upgrade”와 “Upgrade:websocket” 헤더를 통해 웹소켓 요청임을 표시
- “Sec-WebSocket-Key” 헤더를 통해 핸드쉐이크 응답을 검증할 키 값을 보낸다. 그 외에 WebSocket 연결시 보조로 이용할 프로토콜 정보등의 추가적인 정보를 헤더에 담아 보낼 수 있다
- “Sec-WebSocket-Key” 헤더를 통해 받은 값에 특정 값을 붙인 후, SHA-1로 해싱하고 base64로 인코딩한 값을 “Sec-WebSocket-Accept”
헤더에 보낸다 - 정상 응답시 상태코드 101
- 위와 같은 과정을 핸드 쉐이크 과정이라고 한다 -> 응답과 요청이 여러번 이루어지면서 서로의 key 값을 확인하는 과정
핸드 쉐이크 과정이 끝나면 웹 소켓 프로토콜을 이용해 문자를 주고 받을 수 있는 연결 상태가 된다
서버 실행 listen을 app이 아닌 server로 해야함
-> 101코드를 받으면 연결 성공
연결 후
연결 후에는 메시지 주고 받아도
브라우저의 네트워크 상에서 요청과 응답을 주고받지 않는다
Headers가 아닌 Messages를 통해서 메시지를 주고 받음
-> 연결된 요청과 응답 안에서 메시지를 주고 받는 것
반응형
'Back_end > node.js' 카테고리의 다른 글
node.js) nodemon으로 서버 자동 재시작, node 디버깅 (0) | 2022.04.07 |
---|---|
node.js) 토큰 검증 sh256 (0) | 2021.05.28 |
node.js) 웹 쿠키, 스토리지 (0) | 2021.05.27 |
node.js) 토큰기반인증과 토큰의 생성(JWT), 암호화 - 2진법 (2) | 2021.05.27 |
node.js) 토큰기반인증과 토큰의 생성(JWT), 암호화, 2진법 (0) | 2021.05.27 |
댓글