TIL💡/Network(24)
-
[HTTP] HTTP 쿠키 🍪
HTTP 쿠키(웹 쿠키, 브라우저 쿠키)는 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각이다. 브라우저는 그 데이터 조각들을 저장해 놓았다가, 동일한 서버에 재요청 시 저장된 데이터를 함께 전송한다. 쿠키는 두 요청이 동일한 브라우저에서 들어왔는지 아닌지를 판단할 때 주로 사용한다. 이를 사용하면 사용자의 로그인 상태를 유지할 수 있다. 상태가 없는 HTTP 프로토콜에서 상태 정보를 기억시켜주기 때문이다. 쿠키는 주로 세 가지 목적을 위해 사용된다. 세션 관리(Session Management) 서버에 저장해야 할 로그인, 장바구니, 게임 스코어 등의 정보 관리 개인화(Personalization) 사용자 선호, 테마 등의 세팅 트래킹(Tracking) 사용자 행동을 기록하고 분석하는 용도 과..
2022.10.27 -
[HTTP] HTTP/1.x의 커넥션 관리
HTTP/1.x의 커넥션 유형 단기 커넥션 영속적인 커넥션: Keep-Alive 헤더 이용 → 연속적인 요청 사이에 커넥션 유지하여 새 커넥션을 여는 데 필요한 시간 줄인다. HTTP 파이프라인: 한 단계 더 나악, 응답조차도 기다리지 않고 연속적인 요청을 보내서 네트워크 지연 더욱 줄인다. 영속적인 커넥션 영속적인 커넥션은 얼마간 연결을 열어놓고 여러 요청에 재사용함으로써, 새로운 TCP 핸드셰이크를 하는 비용을 아끼고, TCP 성능 향상 기능을 활용할 수 있다. 커넥션은 영원히 열려있지는 않으며, 유휴 커넥션들은 얼마 후에 닫힌다. Keep-Alive 헤더를 사용해서 연결이 최소한 얼마나 열려있어야 할지를 설정할 수 있다. 물론 영속적인 커넥션을 단점을 가지고 있다. 유휴 상태일 때에도 서버 리소스를..
2022.10.26 -
[HTTP] 전형적인 HTTP 세션
HTTP와 같은 클라이언트-서버 프로토콜에서, 세션은 다음의 세 가지 과정으로 이루어진다. 1. 클라이언트가 TCP 연결을 수립한다.(3 Way Handshake로 할 것 같다.) 2. 클라이언트는 요청을 전송한 뒤 응답을 기다린다. 3. 서버는 요청에 대해 처리하고 그에 대한 응답을 상태 코드 그리고 요청에 부합하는 데이터와 함께 돌려보낸다. HTTP/1.1부터는 세번째 과정 이후 클라이언트가 해당 시점에 또 다른 요청을 보낼 수 있도록 연결을 닫지 않는다. 그러므로 두번째, 세번째 과정이 몇 번에 걸쳐 일어날 수 있다. 요청 전송 첫번째 줄은 파라메터가 따르는 요청 메서드를 포함합니다: The first line contains a request method followed by its paramet..
2022.10.26 -
[HTTP] HTTP/2.0 프레임
HTTP/1.x 메시지는 성능상의 결함을 몇가지 내포하고 있다. 본문은 압축이 되지만 헤더는 압축이 되지 않는다. 연속된 메시지들은 비슷한 헤더 구조를 띄기 마련인데, 그럼에도 불구하고 메시지마다 반복되어 전송되고 있다. 다중전송(multiplexing)이 불가능하다. 서버 하나에 연결을 여러 개 열어야 한다. 적극적인(warm) TCP 연결이 소극적인(cold) TCP 연결보다 효율적인데 말이죠. HTTP/2에서는 추가적인 단계가 도입되었다. HTTP/1.x 메시지를 프레임으로 나누어 스트림에 끼워넣는다. 데이터와 헤더 프레임이 분리되었기 때문에 헤더를 압축할 수 있다. 스트림 여러 개를 하나로 묶을 수 있어서(이러한 과정을 멀티플렉시이라 한다.), 기저에서 수행되는 TCP 연결이 좀 더 효율적이게 된..
2022.10.26 -
[HTTP] HTTP 진화 과정
HTTP/0.9 - 원-라인 프로토콜 요청은 단일 라인으로 구성되며 리소스에 대한 경로로 가능한 메서드는 GET이 유일했다. 응답 또한 극도로 단순하다. 오로지 파일 내용 자체로 구성된다. 상태, 오류 코드도 없었다. 문제가 발생한 경우, 특정 HTML 파일이 사람이 처리할 수 있도록, 해당 파일 내부에 문제에 대한 설명과 함께 되돌려 보내졌다. HTTP/1.0 - 확장성 만들기 HTTP/0.9는 매우 제한적이었으며 브라우저와 서버 모두 좀 더 융통성을 가지도록 빠르게 확장되었다. 버전 정보가 각 요청 사이내로 전송되기 시작(HTTP/1.0이 GET 라인에 붙은 형태로) 상태 코드 라인 또한 응답의 시작 부분에 붙어 전송되어, 브라우저가 요청에 대한 성공과 실패를 알 수 있고 그 결과에 대한 동작(특정 ..
2022.10.26 -
[HTTP] HTTP 개념 정리 💡
HTTP는 상당히 확장 가능한 프로토콜이다. 자원의 URI의 개념, 메시지의 단순한 구조, 통신 흐름을 위한 클라이언트 서버 구조와 같은 몇 가지 기본 개념에 의존한다. 이렇나 기본 개념을 토대로 새로운 HTTP 메서드나 헤더의 생성을 통해 새로운 기능과 새로운 의미를 더하는 수많은 확장들이 수년간 생겨났다. HTTP 개요 HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜이다.(최상층인 Application Layer에 해당된다.) HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 하다. 클라이언트-서버 프로토콜이란, (보통 웹브라우저인) 클라이언트 측에 의해 요청이 초기화되는 프로토콜을 의미한다. 하나의 완전한 문서는 텍스트, 레이아웃..
2022.10.26