본문 바로가기

IT193

[http] If-Modified-Since, If-None-Match 개념캐시된 데이터를 사용해도 되는지 확인 하는 작업 어떻게?서버에 재검사 요청을 보내고, 서버는 캐시를 써도 되면 304 Not Modified로 응답, 캐시를 쓰면 안될 경우 200 OK 와 함께 새로운 값 반환 (서버에 요청을 보내야 하니 느리다.) If-Modified-Since, GET 요청에 이 해더를 추가하면 캐시된 시간 이후에 변경된 경우에만 사본을 보낸다. 응답에 Last-Modifed와 같이 쓰일 수 있다. 응답에서 최근 변경된 날짜를 내려주면 해당 값으로 만료여부를 판단 할 수 있다.시간단위로 검사하다보니 특정상황에서는 이 방법이 적절하지 않다. - 1초 미만으로 캐쉬할 경우 (요청 응답 딜레이로 적절히 캐쉬가 안됨) - 클라이언트나 서버가 시간 계산을 정확히 못할 경우 (GMT를 로컬.. 2024. 5. 13.
[tcp] connection 개론 커넥션 만드는 기준src ip, src port, dest ip, dest port 성능구조적 성능저하커넥션 맺기 위하여 핸드세이크시 패킷을 주고받는 과정 slow start네트워크가 감당할 수 있는 수준보다 더 많은 데이터를 보내는걸 피하는 노력1,2,4 또는 10 window size로 시작해서 ack를 받을 떄 마다 1MSS(maximum segment size)씩 window size를 증가시킨다. RTT마다 window size가 2배되는 셈마냥 무한으로 제한되지 않고 아래의 조건에 해당할경우 제한된다. - packet loss가 감지 될때 - 받는 쪽에서 제한 - slow start threshold 도달하기 전까지 확인 응답 지연프로토콜 부하를 줄이기 위해 N개의 ack 응답을 하나의 응답으.. 2024. 5. 10.
[http] turnnel https://en.wikipedia.org/wiki/HTTP_tunnel 페이지를 의역한 글입니다. 개념방화벽이 포함된 제한된 네트워크 사이에 두대의 컴퓨터가 네트워크 링크를 만드는데 사용터널은 프록시 처럼 중재자 역활이였다. 설명터널링은 제한된 네트워크에서 지원되지 않는 프로토콜을 이용하여 통신할 수 있도록 해주었다.터널링은 http connect method를 이용한다. 어떻게 동작하냐면, 클라이언트는 http proxy server에게 도착지점과 tcp 커넥션을 연결하라고 부탁한다. 그 서버는 클라이언트 자격으로 커넥션을 만든다. 커넥션이 맺어지면, 프록시 서버는 클라이언트로 부터 tcp stream을 교환한다. 첫 요청은 http였지만, 추후 서버는 tcp connection을 프록시 하게된다... 2024. 5. 10.
[http] MIME 개념통신 시 데이터 종류를 명시 특징모든 http 객체에 mime이 포함웹브라우저는 응답을 받으면 해당 응답에서 mime을 통해 데이터 종류 확인특별한 포맷일 경우 외부 플러그인을 실행 포맷response header에 content-type과 content-lengh를 확인 html 문서일 경우Content-Type: text/html; charset=UTF-8Content-Length: 8235 js file일 경우Content-Type: application/javascriptContent-Length: 8235 2024. 5. 10.
[node.js] stream - three states (5) https://nodejs.org/api/stream.html#three-states 을 참고한 글입니다.'flowing, paused mode' 이 두가지 운영방식은 Readable stream 구현체 안에서 발생하는 다양한 내부 상태를 간소화하여 추상화된 것이다. 모든 Readable 은 3가지 중 하나의 상태를 갖게 된다. readable.readableFlowing == nullreadable.readableFlowing == falsereadable.readableFlowing == true제공받은 데이터를 소비할 로직이 없을 경우 null 상태를 갖는다. 그러므로 스트림은 데이터를 생성하지 않을 것입니다. readable.pipe(), redable.resume() 중 하나를 실행해야 'rea.. 2024. 5. 5.
[node.js] readable stream - two modes (4) https://nodejs.org/api/stream.html#two-reading-modes 를 참고한 글입니다.object mode와 연관없는 읽기 모드를 설명한다.flowing mode와 paused mode가 있다. flowing mode은 시스템으로부터 자동으로 데이터를 읽고 EventEmitter interface에서 발생하는 이벤트를 이용하여 최대한 빠르게 앱에 데이터를 제공한다.const fs = require('fs')const rs = fs.createReadStream('lowercase.txt');rs.on('data', (chunk) => { console.log(chunk)}); paused mode는 stream.read()를 명시적으로 반드시 호출해서 stream에 있는 d.. 2024. 5. 5.