일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 백준 28303번
- JavaScript
- string
- localstorage
- PROJECT
- 백준 28298번
- pm2
- ucpc 2023 예선 d번
- router
- ucpc 2023 예선 i번
- insomnia
- html5
- map
- 그리디
- Next
- ucpc 2024 예선 e번
- ERD
- Github
- HTTP
- Prisma
- ccw 알고리즘
- MySQL
- branch
- 게임 서버 아키텍처
- koi 2002 중등부 1번
- 자바스크립트
- MongoDB
- 더 흔한 색칠 타일 문제
- Express.js
- 백준 2623번
Archives
- Today
- Total
dh_0e
[Node.js] 강의 내용 정리(2) (HTTP, TCP, 웹소켓) 본문
HTTP의 특징
- Request <-> Response 구조
- 요청이 있어야만 응답이 있다.
- 비연결성 - 연결을 유지하지 않음 >> 리소스가 적다 >> 트래픽이 적으므로 처리가 빠르다
- Stateless(무상태)
- 유저의 경험을 저장하지 않는다
- 좋은 유저 경험을 위해 세션, 쿠키, DB에 저장하여 임의로 처리하긴 한다.
HTTP 메시지 구조
- HTTP 헤더 - Genereal Header, Req/Res Header, Entity Header
- 많은 양의 데이터가 key-value 형태로 헤더에 포함됨
TCP
- OSI 4 계층(transport layer)에 존재하며 HTTP로만 할 수 없는 통신을 할 수 있게 해 줌
- HTTP는 비연결성이지만 TCP는 TCP는 데이터를 교환하기 위해서 무조건 연결을 해야 하는 연결지향성임
TCP 3-way-handshake
- TCP/IP 프로토콜을 이용하여 통신을 하는 application이 정확한 전송을 보장하기 위해 데이터를 전송하기 전에 상대방 컴퓨터와 사전에 세션을 수립하는 과정
- 장치들 간의 논리적인 접속을 성립하기 위해 사용됨
- 클라이언트와 서버가 서로 데이터를 전송할 준비가 됐다는 것을 보장하며, 이를 서로에게 알려주는 역할을 함
- 양쪽 모두가 상대편에 대한 초기 순차번호(TCP 연결 설정동안 난수발생기를 이용하여 생성된 초기 순서번호)인 ISN을 얻을 수 있도록 함
과정
- 클라이언트가 서버에 접속을 요청하는 SYN 패킷을 보내고 SYN/ACK 응답을 기다리는 SYN_SENT 상태로 전환
- 서버가 SYN 요청을 받고 이를 수락한다는 ACK와 SYN flag가 설정된 패킷을 클라이언트에게 발송하고 다시 ACK로 응답하기를 기다리는 SYN_RECEIVED 상태로 전환
- 클라이언트가 서버에게 ACK를 보낸 뒤 서로를 연결하여 데이터를 주고받으며, 클라이언트, 서버 모두 ESTABLISHED 상태로 전환
HTTP 1.1
HTTP 2 / TCP 이전의 연결을 재사용 가능
HTTP 3 / UDP로 연결
TCP 통신 과정
양방향 통신(Full-Duplex) 순서
- 서버가 접속 요청을 받기 위해 소켓을 연다. - Listen
- 클라이언트는 소켓(접속을 위한)을 만들고, 서버에 접속을 요청한다. - Connect
- 서버는 접속 요청을 받아서 클라이언트와 통신할 소켓을 따로 만든다. - Accpet
- 소켓을 통해 데이터를 주고받는다. - Send & Receive 반복
- 통신을 마치면 소켓을 닫는다. - Close, 상대방은 Receive로 인지
WebSocket
- 양방향 통신(Full-Duplex)을 http에서 구현하면 되지 않나? 라는 니즈에 의해 태어난 것
주요 특징
- 실시간 통신
- 양방향 통신(Full-Duplex)
- 지속적 연결
- 낮은 오버헤드
- 데이터 패킷의 크기가 작으므로 주고받을 때 효율적으로 네트워크에서 교환이 가능하다는 의미
- http / tcp보다 작음
- HTTP와의 호환성
기존의 웹 인프라에 웹소켓을 얹어 개발할 수 있음
Websocket도 TCP처럼 handshake를 한다.
HTTP, WebSocket이 더 빠를 경우도 물론 있지만 튜터님은 이렇게 한 줄로 요약하셨다.
놀라운 "성능 최적화"로 TCP가 대부분 빠르게 보인다.
'내일배움캠프 > Node.js[심화]' 카테고리의 다른 글
[Node.js] 강의 내용 정리(4) (서버 로직 개발) + 개인 과제 (0) | 2024.06.14 |
---|---|
[Node.js] 강의 내용 정리(3) (게임 기획의 순서) (0) | 2024.06.13 |
[Node.js] 강의 내용 정리(1) (게임 개발) (0) | 2024.06.10 |