기존 HTTP 요청은 클라이언트에서 서버로 요청을 보내고 응답을 받는 프로토콜 서버에서 요청없이 응답을 보낼 수가 없었다. 또한 실시간 데이터 전송이 가능하다. 이를 웹소켓은 가능하게 할 수 있다. socket.html socket.js const http = require('http'); const { WebSocketServer } = require('ws'); const fs = require('fs').promises; const path = require('path'); const server = http.createServer(async (req, res) => { const data = await fs.readFile(path.join(__dirname, 'socket.html')); res..
HTTP / 1.1Text 기반 => 시간이 갈 수록 텍스트 보다는 이미지 동영상 같은 것들을 더 많이 전송하게 되었다.3way handshake 비효율 => 요청보내고 응답받기 위해서는 커넥션을 맺어야 하는데 이를 매번 반복해야 한다.(keep alive 옵션을 통해 일정시간 동안 커넥션 유지가 가능하긴 함)pipelining 실패(HOL블로킹) => 요청만 여러개 보내고 이후 응답 받기를 통해 개선하고자 하였으나 특정 요청에서 응답 시간이 길어지는 현상 및 버그 때문에 개선 불가능해졌다.여러 커넥션 제한 => 브라우저마다 최대 컨넥션의 갯수가 정해져있는데 요청이 매우 많을 경우 느려지게된다. HTTP / 2Text => 바이너리 기반(010101)단위로 변경(분석하기 어려움)하나의 커넥션에서 여러 요..
HTTP란?텍스트 기반으로 데이터를 주고 받는 일종의 통신 약속이다. 프로그램들이 이 약속에 맞춰서 데이터를 서로 주고 받게 된다. URL 구성도 Request 및 Response Accpet Accpet: 컨텐츠 협상(Content negotiation) 서버와 어떤 데이터를 주고 받을지 명시 Cache-Control Cookiehttp는 stateless하다. 상태를 가지고 있지 않는다.앞에 있는 http 요청이 성공해도 뒤에 있는 http요청이 실패할 수있고 앞에 있는 http 요청이 실패해도 뒤에있는 http요청은 성공 할 수도 있다. 따라서 내가 누군지를 알려줘야하는데 이때 사용할 수 있는 것이 쿠키이다.쿠키는 일련의 문자열로 되어있으며 서버에서 먼저 보내주고 이후 클라이언트에서 해당 쿠..
OSI 7 계층네트워크에서 일어나는 일련의 통신 과정을 계층으로 나타낸것물리계층전기신호를 0과 1 혹은 0과 1을 전기신호로 바꿔주는 행위가 물리계층에서 일어난다.랜카드 : 전기신호를 0과 1 혹은 0과 1을 전기신호로 바꿔주는 역할데이터 링크 계층0101110100110011100과 같이 구성된 데이터가 누구한테 가는지 정해진다. MAC주소 : 한자리씩 4bit 총 48bit로 구성된 기기의 주소 (= 랜카드 ID) Q: 출발지의 MAC주소는 내기기니까 알 수있는데 목적지의 MAC주소는 어떻게 알아낼까?A: 옆에 장치에게 물어보고 또 옆에 장치에게 물어보고 해서 알아낸다. 스위치 또는 허브를 통해 목적지에 해당하는 기기에 도착한다. 프레임 : 데이터링크에서 전송 및 받은 데이터를 의미한다.프로토콜 :..