본문 바로가기
반응형

전체 글129

HTTP 클라이언트와 식별쿠키 & 기본 인증 보호되어 있는 글 입니다. 2025. 11. 7.
HTTP 캐시 💡 캐시란?캐시는 자주 쓰이는 웹 리소스(문서, 이미지 등)의 사본을 자동으로 보관하는 HTTP 장치웹 브라우저나 프락시 서버 같은 중간 지점에서 사본을 저장했다가, 이후 같은 요청이 들어왔을 때 원 서버 대신 응답을 제공하는 역할을 함 캐시의 역할?1. 불필요한 데이터 전송을 줄여서, 네트워크 요금을 절약2. 대역폭을 늘리지 않고도 페이지를 빨리 불러올 수 있게 하여 네트워크 병목을 줄여줌3. 원 서버에 대한 요청을 줄여서 부하를 줄이고, 더 빠른 응답처리가 가능하게 해줌4. 거리로 인한 지연을 줄여줌 캐시가 성능을 개선하고 비용을 줄이는 방법7.1 불필요한 데이터 전송 최소화다수의 클라이언트가 같은 문서에 접근할 때, 캐시가 없다면 서버는 모든 클라이언트에게 동일 문서를 각각 전송해야 함캐시를 이용.. 2025. 10. 31.
HTTP 웹 서버 1. 웹 서버란웹 서버(Web Server)는 HTTP 요청을 처리하고 응답을 반환하는 프로그램클라이언트(브라우저)의 요청을 받아 HTML, 이미지, JSON 등 콘텐츠를 전달 웹 서버의 핵심 기능- 요청(Request)을 수신- 리소스(Resource)를 탐색하고 처리- 응답(Response)을 반환모든 웹 서버는 이 세 단계를 중심으로 작동 웹 애플리케이션 서버와의 차이?웹 서버가 처리하지 못하는 동적인 요청을 처리하는 서버데이터베이스 연결, 비즈니스 로직 수행, 세션 관리 등을 담당 핵심 역할- Java, Python, Node.js 등으로 작성된 코드 실행- 요청에 따라 동적 페이지 생성 (예: JSP, Servlet, Flask, Spring)- DB와 연동하여 데이터를 조회하거나 수정- 세션 .. 2025. 10. 16.
HTTP 커넥션 관리 (TCP/IP) 1. TCP와 HTTP 관계1. TCP: HTTP의 신뢰성을 책임HTTP는 애플리케이션 계층 프로토콜로서, 데이터 전송의 신뢰성 문제를 전적으로 TCP (Transmission Control Protocol)에 의존. TCP의 핵심 역할- TCP는 메시지를 작은 단위로 나누어(세그먼트) 전송하고, 네트워크를 통해 이 바이트들이 순서에 맞게 정확히 목적지에 전달되도록 보장.프로토콜 스택- HTTP 통신은 일반적으로 IP (네트워크 계층) → TCP (전송 계층) → HTTP (애플리케이션 계층)의 계층 구조를 따름.- HTTPS는 이 사이에 TLS/SSL (보안 계층)이 추가되어 암호화 기능을 제공. 2. 데이터 전달의 메커니즘: 세그먼트와 패킷HTTP 메시지는 네트워크를 통해 전달될 때 여러 계층을 거치.. 2025. 10. 10.
HTTP와 URL, 그리고 앱 커스텀 스킴 경험 1. HTTP란?Hypertext Transfer Protocol의 약자로 웹 상에서 데이터를 주고받기 위한 프로토콜TCP/IP 통신 프로토콜을 기반으로 신뢰성 있는 전송요청과 응답을 통해 작동을 함다양한 종류의 데이터를 전달할 수 있도록 설계 (html, css, javascript, jpg, mp4, gif ..)클라이언트 - 서버 구조에서 통신을 진행2. HTTP 기본 요소리소스 : http로 전송할 수 있는 어떠한 종류의 콘텐츠 소스.트랜잭션 : HTTP 트랜잭션 = 요청 명령 + 응답 결과- HTTP 메시지라고 불리는 정형화된 데이터 덩어리를 이용해 이루어짐HTTP 메서드 : 모든 요청 메시지는 한 개의 메서드를 가짐. 서버에게 어떤 동작을 취해야하는지 알려줌.- (GET,POST,PUT,DEL.. 2025. 9. 15.
[프로그래머스 JS] 우박수열 정적분 📌 문제 요약프로그래머스의 "우박수열 정적분" 문제는 우박수열을 구성한 뒤, 정적분 값을 계산하는 문제입니다. 우박수열은 특정 수가 1이 될 때까지 홀수면 3배 + 1, 짝수면 2로 나누는 방식으로 계산합니다.이 문제에서는 우박수열이 만들어내는 계단식 그래프 아래 넓이를 계산해야 합니다.🧠 핵심 개념우박수열 구하기좌표 범위(ranges)마다 면적(정적분 값) 계산삼각형이 아닌 사다리꼴의 넓이 공식 사용💡 풀이 접근우박수열을 배열로 구한다 (예: [k, ..., 1])range 배열을 순회하면서, 각 구간에 대해 넓이를 계산한다넓이는 사다리꼴 넓이 공식: (윗변 + 아랫변) / 2시작 인덱스가 끝 인덱스보다 크면 -1을 반환💻 자바스크립트 풀이function solution(k, ranges) { .. 2025. 4. 6.
[Django linux-redhat 배포 시] mysqlclient 2.2.4 ver 설치 에러 subprocess-excited-with-error / mysql-devel 설치 시 mariadb-devel로 인식되는 오류 해결 Django 프로젝트를 ec2 서버에 배포를 하는 도중 에러가 발생했다. 아무리 구글링을 해봐도 해결법이 나오지 않던 중 3일만에 해결을 하여 기록한다. 설치한 라이브러리 - asgiref 3.7.2 - Django 4.2.10 - Djangorestframework 3.1.4 - Mysqlclient 2.2.3 - sqlparse 0.4.4 먼저 ec2 서버에 접속 후 git, python3 버전을 설치했다. 그리고 git에 올라가있는 django프로젝트 gitlab 소스코드를 clone 하였고, requirements.py에 저장해둔 내 라이브러리 설치 버전들을 install 하려고 했다. Django 등 다른 라이브러리들은 설치가 잘 되었으나 mysqlclient가 subprocess-excited.. 2024. 2. 20.
[JSP / FileUpload / AJAX] 파일 다운로드 + 다운로드 수 실시간 올리기 JSP를 활용하여 파일 업로드를 하고 조회수와 다운수를 실시간으로 업데이트 시켜주는 기능을 구현하려고 하였다. 기존 JSP의 동작은 새로고침이 되야 데이터가 업데이트 되는 방식이였다. 하지만 나는 SPA처럼 다운 수 부분만 업데이트 시켜주고 싶었다. 로직은 "다운로드 버튼 클릭" -> "ajax에서 FileDownload 서블릿 url로 요청" -> FileDownload 서블릿에서 "파일다운로직, ajax response로 업데이트 된 다운 수 전달" 로 생각하여 개발을 진행하였다. 하지만 ajax 응답이 계속해서 오지 않았고, 성공 시 응답이 오더라도 file안의 data가 byte값으로 찍혔다. 이를 해결하기 위해 여러명이 머리를 싸매서 고민했고, 정답을 알아냈다. 일단은 간단한 UI와 파일들을 먼.. 2022. 7. 7.
Web의 변천사 (HTML -> Servlet -> JSP -> MVC -> Spring) 자바 서블릿이란 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램. 쉽게 이야기하면, 클라이언트가 서버에 요청을 보낼 때와 응답을 받을 때 필요한 HTTP 작업을 도와주는 것. Web HTML -> Servlet -> JSP -> MVC -> Spring 1. Web HTML - 기존의 웹은 위의 사진처럼 HTML / CSS / JS를 활용한 하나의 페이지만 보여주는 정적 페이지였다. - 동적 프로그래밍에 대한 희망 그로인해 Servlet, JSP가 나오게 됨 (Dynamic Web Project 생성) - 브라우저의 요청에 따라 항상 다른 페이지를 보여주는 페이지 Servlet - 자바를 사용하여 웹페이지를 동적으로 생성하는 서버 측 프로그램. - 웹 클라이언트의 요청을 처리할 수 있는 클래.. 2022. 7. 5.