본문 바로가기

전체 글

(100)
Cookie 개요, 브라우저에서 쿠키의 작동 Cookie의 필요성?➡️ HTTP가 어떤지 다시 생각해 볼 필요 있음. HTTP는 Stateless Protocol이다.✅ 웹 서버는 기본적으로 매 요청이 어떤 웹 브라우저가 보낸 것인지 알 수 없다. (stateless ; 불연속성)JWT(JSON Web Tokens)와 같은 방식으로 이를 해결하는 방식도 있음.더보기사용자 정보와 인증 서명 같은걸 암호화 해둔것을 인코딩 해둔 값이라고 보면 된다.로그인 기능을 구현할 때 초보자들에게 많이 추천되는 방식인데, 이때 보안의 결함 발생함.secret 코드(암호화를 통해 전달되어야 하는 값)의 원본 secret을 쉬운것으로 적어놨다가브루트포스에 의해 해킹당하는 경우가 있거나alg : "none" 처럼 대충 만들거나민감한 유저 정보를 그대로 다 집어 넣는 경우..
TCP/IP 4계층, OSI 7계층, Handshaking? chatGPT와 정리 HTTP/3 이전에서는 TCP를 기반으로 한 통신이 이루어진게 맞지?UDP도 지원은 하는데 대부분이 tcp 기반으로 이뤄진거 같아.맞음: HTTP/3 이전에는 TCP가 주로 사용되었으며, UDP도 사용되지만 대부분의 인터넷 통신은 TCP를 기반으로 합니다. OSI 7계층은 TCP/IP 4계층과 사실상 동일하다고 보면 되지?부분적으로 맞음: OSI 7계층과 TCP/IP 4계층은 유사하지만 동일하지 않습니다. OSI 모델은 7계층, TCP/IP 모델은 4계층입니다. 그니까 전자는 7계층으로 이뤄져있고 후자는 4계층으로 이뤄져있는데후자는 구현쪽에 느낌을 가지는거잖아OSI 7계층은 네트워크 통신을 논리적으로 나누어 각 계층이 어떤 역할을 하는지 설명하는 모델로, 주로 이론적인 측면에서 이해됩니다.TCP/IP 4..
수학적 철학을 가미한 함수형 프로그래밍 처음에 프로그래밍에 입문했을때 제일 큰 충격은 다음의 한 줄 이었다.i = i + 1; 돌아버린거냐? 라는 말이 절로 나왔다.아무리 그래도 컴퓨터의 근본은 수학으로 알고 있었는데...어떻게 맨 처음부터 나오는 명령이 저런거라니 라는 생각밖에 안들었다. 시간이 흘러 최근 JavaScript를 접하면서 함수형 프로그래밍이라는 새로운 개념을 접했는데,찾아보니 수학적인 철학?이 많이 차용된 것 같은 것 같아서 조금은 기뻤다.사실 함수형 프로그래밍이더라도 저 선언은 사용한다.그렇지만 이제 익숙해져버려서 거부감이 있거나 그러진 않고.. 몇가지 수학적인 성질이 들어가 있길래복습겸 정리해보자 한다.  1. 순수 함수(Pure Function)를 지향기본적으로 수학에서의 함수와 그간의 프로그래밍 언어에서의 함수는 차이가..
Proxy Server Proxy Server란 서버 부하 완화 및 보안을 위해 사용하는 서버이다. 주요 기능보안 : IP 숨기기 (은닉) 혹은 프록시 서버 자체를 방화벽으로 사용하기도 함속도(캐시) : Cache를 사용해 서버의 부담을 줄여준다ACL : 서브네트워크 레벨의 방화벽Log / Audit : 리포트, 모니터링지역 네트워크 제한 우회 프록시 서버는 크게 Forward Proxy와 Reverse Proxy로 나뉜다. Forward Proxy요청 보내는 측은 클라이언트 (웹 브라우저)요청에 대한 세부적인 추가 작업을 한다.클라이언트 은닉우회 : 특정 클라이언트 IP가 block되어있다면, 그걸 피해서 접속하기 위해 IP 감춤클라이언트 접근 제어 : firewall 역할을 해준다. - 특정 IP 혹은 웹 페이지에 대한 접..
HTTP Cache 재검증 기준 헤더와 조건부 요청 이전의 재검증 주기는 브라우저가 서버에서 준 정보로 캐시 사용 여부를 판단하는 것과 달리, 재검증 기준은 서버가 판단한다.처음의 요청에 대해 서버가 재검증 기준의 헤더를 브라우저에게 보내고,브라우저는 이 헤더의 내용들을 그대로 서버에게 보내서 판단한 후사용하라 / 마라를 HTTP 응답 코드와 함께 반환한다.  다음은 첫 요청 이후 서버가 브라우저에게 보내는 재검증 기준 헤더이다.Last-Modifed 헤더데이터가 바뀐 시점을 서버가 클라이언트에게 이 헤더를 통해서 보낸다ETag 헤더Entity Tag 의 줄임말.Hash-based를 가장 많이 쓴다.데이터의 고윳값을 의미한다. 가령 데이터가 한 글자라도 바뀌면 고윳값이 달라진다.위에 소개한 재검증 기준 헤더는 서버가 브라우저로 보내는 헤더들이다. 조건부 ..
HTTP Cache 동작 원리와 Cache-control 헤더 Cache를 사용하는 이유?임시 저장을 통해 웹 브라우저와 서버의 과부하를 줄이는 것이 주요 목표다만 임시 저장이라는 말처럼, 오래된 데이터는 폐기해준다면 어느 정도의 실시간성을 지닌 효과도 있다. (준실시간성) ➡️ 따라서 실시간성이 매우 중요한 데이터는 캐시 사용 X HTTP Cache 동작 원리 (다음 글에서 더 정리할 예정)처음 사용자의 요청에 응답해 서버가 리소스를 반환할 때 헤더에 재검증 주기와 기준을 제공이후 브라우저는 헤더의 정보를 바탕으로 캐시를 사용할 지 말지를 결정재검증 주기와 기준 둘 다 만족 ➡️ 그냥 계속 씀어느 하나라도 만족하지 못했을 경우 ➡️ 서버에게 물어 보고 씀 서버의 Cache-control 헤더를 통한 세부 설정캐시 저장 여부 no-store : 캐시 안함no-cac..
HTTP Cache 역할, 종류 Cache의 필요성; 웹 브라우저와 웹 서버의 부하웹 브라우저가 웹 서버에게 요청하고 반환해야 하는데 매번 이를 반복하려니 부하가 옴이전과 같은 것을 로드해야 한다면, 이를 재사용 하기 위해 Cache를 사용첫 요청에 대해서 반환할 때 서버 측에서 캐시와 관련된 헤더를 통해 설정.저장소 위치 별로 아래와 같이 분류한다. 이전에 받았던 응답을 브라우저 측에서 재사용 할 때 : HTTP Private Cache 사용이전에 반환한 응답을 재사용 할 때HTTP Shared Cache (프록시 = CDN 또는 Forward / Reverse Proxy에서 사용)API 서버 자체 / 서버 사이드 Cache 사용Local Cache : 서버측에서 직접적으로 다루는 EH캐시와 같은 캐시 라이브러리를 활용참고로 서버측에..
웹은 당신의 눈을 속인다 (1) Web Browser는 이미 준비된 척을 한다. 언제부턴가 브라우저에서 페이지가 로딩되는 속도는 너무나 빨라졌다.컴퓨터의 성능, 통신 기술의 향상으로 어쩌면 당연하다 할 수도 있겠다.하지만 이게 정말 통신 기술, 하드웨어 발전만으로 빠르게 로딩되는 것일까? 그렇다면 그러한 발전에도 불구하고 느린 페이지가 여전히 존재하는 이유들은 무엇일까?어쩔때는 느린 페이지에서 보여주는 자료의 양보다 빠른 페이지에서 보여주는게 더 많은 경우도 있다.인터넷 회선 제공자들이 특정 서버에 더 빠른 데이터 속도를 보장해주는가? 아니다. 모두 같은 양과 속도의 데이터를 서비스로 제공할 수 있다. 페이지에도 성능이 존재한다는 것이다. Google은 2020년에 페이지의 성능이 알고리즘을 통한 검색 순위에 영향을 줄 것이라 공표한 바 있다.그리고 지금 2024년의 develope..