본문 바로가기

HTTP

(9)
[HTTP] HTTP 캐시 HTTP 캐시는 서버의 응답을 클라이언트(브라우저)나 중간 프록시 서버에 저장하여, 같은 요청이 반복될 때 재사용할 수 있도록 함으로써 불필요한 데이터 전송을 줄이고, 응답 속도를 높이는 기술이다.  🔷 HTTP 캐시의 기본 개념 웹 페이지를 요청할 때, 브라우저는 동일한 리소스를 여러 번 다운로드할 필요 없이 캐시된 데이터를 재사용할 수 있다.이를 통해 다음과 같은 이점을 얻을 수 있다. 서버 부하 감소: 서버가 동일한 요청을 반복적으로 처리하지 않아도 된다.네트워크 트래픽 절감: 불필요한 데이터 전송을 방지할 수 있다.페이지 로딩 속도 개선: 클라이언트에서 캐시된 데이터를 빠르게 제공할 수 있다.  🔷 HTTP 캐시의 저장 위치분류저장 주체저장 위치예시브라우저 캐시 (Private Cache)클라..
[HTTP] HTTP 쿠키 HTTP 쿠키는 클라이언트-서버 간 상태를 유지를 위해 서버가 클라이언트에 저장시키는 작은 데이터 조각이다.이후 요청마다 자동으로 서버에 전송되어, 사용자를 식별하거나 세션 관리, 광고 정보 트래킹, 사용자 맞춤 설정 등을 가능하게 한다.  🔷 쿠키의 기본 개념HTTP는 상태를 유지하지 않는(Stateless) 프로토콜 → 상태를 유지하기 위해 쿠키 사용!쿠키는 클라이언트 측(브라우저)에 저장된다. → 일반적으로 브라우저의 쿠키 저장소(DB)에 저장저장된 쿠키는 항상 서버에 전송된다. → 추가적인 네트워크 트래픽을 유발!따라서, 쿠키는 최소한의 정보만 사용해야 한다. (session ID, 인증 토큰)  🔷 쿠키의 기본 흐름 📌 서버 → 클라이언트 (Set-Cookie)HTTP/1.1 200 OKS..
[HTTP] HTTP 헤더에 따른 4가지 전송 방식 HTTP 헤더에 따른 전송 방식은 크게 단순, 압축, 분할, 범위 전송이 있다.  ✅ 1. 단순 전송: Content-Length 서버가 본문 데이터의 전체 길이를 미리 계산해 Content-Length 헤더에 명시하고, 클라이언트가 해당 길이만큼 읽도록 전송하는 방식 📜 헤더 예시Content-Length: 348 💡 동작 흐름서버는 응답 본문을 모두 구성한 뒤, 전체 크기를 계산함Content-Length를 설정하고 응답을 전송클라이언트는 정확히 해당 길이만큼 읽음 ✅ 장점가장 간단하고 보편적인 방식중간 프록시, 로드 밸런서에서 쉽게 처리 가능 ❌ 단점스트리밍 불가 (콘텐츠 전체를 알고 있어야 함)큰 파일일수록 메모리 부담이 생김   ✅ 2. 압축 전송: Content-Encoding 본문 데이터..
[HTTP] HTTP 헤더 HTTP 헤더는 클라이언트와 서버 간에 부가적인 정보를 전달하기 위한 Key: Value 형식의 데이터이다.HTTP 요청과 응답에 포함되며, 인코딩, 인증, 보안, 캐싱, 쿠키, 콘텐츠 형식 등 다양한 정보를 제공한다.  🔷 HTTP 헤더의 구조header-field = field-name ":" OWS field-value OWS OWS: 띄어쓰기 허용 (띄어쓰기해도 되고 안 해도 된다.)  ✔️ OWS 예시Content-Type: text/html;charset=UTF-8 // : 뒤에 띄어쓰기 해도 됨Content-Length:3423 // : 뒤에 띄어쓰기 안 해도 됨Host :www.google.com // : 전에 띄어쓰기 하면 안 됨!":" 는 반드시 헤더 뒤에 붙여 써야 한다!  🔷 H..
[HTTP] 클라이언트가 서버로 데이터를 전송하는 방법 HTTP에서 클라이언트가 서버로 데이터를 전송하는 방법은 데이터 전달 위치에 따라 크게 'URL을 통한 방법'과 '메시지 본문을 통한 방법' 2가지가 있다.URL을 통해 전달: Query Parameter, Path Variable메시지 본문을 통해 전달: application/x-www-form-urlencoded, multipart/form-data, application/json  ✅ 1. 쿼리 파라미터 (Query Parameter)데이터를 ?key=value 형식으로 URL에 포함하여 전송 → URL 인코딩 필수주로 GET, DELETE 요청에서 사용 🤨 1.1. GET에서 쿼리 파라미터를 사용하는 이유?GET은 리소스를 조회하기 위한 요청이다.클라이언트가 서버에 특정한 데이터를 요청할 때, ..
[HTTP] HTTP 메서드 HTTP 메서드는 클라이언트가 서버에 요청할 때 사용하는 메서드를 정의하는 요소이다.GET리소스 조회POST요청 데이터 처리, 새로운 리소스 생성PUT기존 리소스 전체 교체(대체), 없을 시 새로 생성 → 파일 붙여넣기라고 생각PATCH리소스 일부 변경DELETE리소스 삭제HEADGET과 유사하지만, 응답 본문을 제외하고 반환OPTIONS해당 리소스에 대해 서버가 지원하는 메서드 목록을 반환 (주로 CORS에서 사용)CONNECT대상 리소스로 식별되는 서버에 대한 터널을 설정TRACE대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행   ✅ 1. GET (조회)서버에서 리소스를 조회할 때 사용한다.서버에 전달하고 싶은 데이터는 query(쿼리 문자열)를 통해 전달메시지 바디를 통해서도 데이터를 ..
[HTTP] HTTP 상태 코드 HTTP 상태 코드는 클라이언트가 보낸 요청에 대한 서버의 응답 결과를 나타내는 3자리 숫자 코드다.이 코드를 통해 요청이 성공했는지, 실패했는지, 추가적인 작업이 필요한지를 알 수 있다. 1. 상태 코드 범위1xx (정보)요청이 수신되어 처리 중임.2xx (성공)요청이 정상적으로 처리됨.3xx (리다이렉션)추가 작업이 필요하거나 다른 URL로 이동됨.4xx (클라이언트 오류)클라이언트의 요청이 잘못됨.5xx (서버 오류)서버에서 요청을 처리하는 중 오류 발생. 🤨 만약 모르는 상태 코드가 나타나면?클라이언트가 모르는 상태 코드를 서버가 반환하면 어떻게 처리해야 할까?클라이언트는 상위 상태코드로 해석해서 처리하면 된다.299 → 2xx (Successful)451 → 4xx (Client Error)5..
[HTTP] HTTP 메시지 HTTP 메시지는 클라이언트와 서버 간의 데이터 교환 형식으로, 크게 요청(Request) 메시지와 응답(Response) 메시지로 구분된다.또한, 각 메시지는 시작 라인(Start Line), 헤더(Header), 본문(Body)으로 구성된다.요청 메시지의 시작 라인은 요청 라인(Request Line), 응답 메시지의 시작 라인은 상태 라인(Status Line)이라 한다.  1. HTTP 요청 메시지  ✅ 1.1. 요청 라인 (Request Line) 요청의 첫 번째 줄로, 다음과 같은 형식으로 구성된다. 메서드: 수행할 작업 (예: GET, POST, PUT, PATCH, DELETE)URI: 요청하는 리소스의 경로 → 보통은 절대 경로("/" 로 시작하는 경로)로 지정HTTP 버전: 사용되는 ..
[HTTP] HTTP의 주요 특징 HTTP(HyperText Transfer Protocol)는 웹에서 데이터를 주고받기 위한 애플리케이션 계층의 요청/응답 기반 프로토콜이다.초기에는 하이퍼텍스트, 즉 HTML을 전송하는 프로토콜로 시작했지만, 지금은 HTML 뿐만 아니라 이미지, 파일, JSON, XML, TEXT 등 거의 모든 형태의 데이터를 전송하는 프로토콜로 발전했다. 현재 가장 많이 사용되고 있는 HTTP/1.1, 성능 개선한 HTTP/2, TCP 대신 UDP를 사용한 HTTP/3 버전이 있다.HTTP/1.1, HTTP/2 → TCP 기반HTTP/3 → UDP 기반 🔷 HTTP의 주요 특징특징설명장점단점극복 방안클라이언트-서버 구조요청/응답 구조역할 분리, 독립 개발서버 의존성고가용성 아키텍처무상태상태를 저장하지 않음수평 확장..