목록HTTP (5)
R+7
Today I LearnedCookie웹 브라우저가 사용자 컴퓨터에 저장하는 최대 4KB 크기의 작은 텍스트 데이터 파일. 서버가 HTTP 응답 헤더(Set-Cookie)를 통해 브라우저에 데이터를 전달하면 브라우저는 이를 저장해 뒀다 이후 해당 도메인으로 보내는 모든 HTTP 요청 헤더에 자동 포함해 서버로 다시 전송. 대체로 사용자 로그인 상태 유지(세션 관리), 웹사이트 개인화 설정 저장, 사용자 트래킹 등에 사용한다. 그래서 '쿠키 수집 및 사용 동의' 팝업창이 뜨는 사이트가 많은 것도 이러한 이유. (주로 어떤 페이지에 오래 머무는지, 어떤 상품을 클릭했는지 기록을 수집한다) 다만 매 요청마다 서버로 전송되기 때문에 불필요한 네트워크 트래픽을 유발할 수 있고, JavaScript로 접근이 가능해..
Today I Learned인증(Authentication)과 인가(Authorization)개발에서 'Auth'는 철자가 비슷한 인증(Authentication)과 인가(Authorization) 두 가지 개념을 통칭. 시스템 보안을 구성하는 가장 기초적인 두 축이다. 인증은 '사용자가 누구인지 증명하고 확인하는 절차'고, 인가는 그 인증된 사용자가 '특정 자원에 접근, 조작 가능한지 검증하는 절차'다. 쉽게 말하면 "너 누구..?"랑 "너 뭐 돼?"다. 인증은 항상 먼저 진행되고, 인가는 인증이 완료된 후 진행된다. 실패 시 HTTP 상태 코드는 각각 401 Unauthorized (미인증 상태)와 403 Forbidden (인증은 되었으나 권한 없음)이다. OAuth(Open Authorizatio..
Today I Learned웹소켓(WebSocket)이란 하나의 TCP 접속 위에서 클라이언트와 서버 간 지속적인 양방향(Full Duplex) 실시간 통신을 가능케 하는 네트워크 기술이다. 양방향이기 때문에 클라이언트 측의 요청(request)이 따로 없어도 서버가 데이터를 보낼 수 있고, 한 번 연결이 성립되면 명시적으로 연결을 끊기 전까지 실시간으로 연결이 유지된다(stateful). 연결을 설정하는 초기 단계에만 HTTP 통신을 사용하고 그 후로는 데이터를 프레임 단위로 교환하기 때문에 오버헤드를 방지할 수도 있다. ※ 왜 HTTP는 무거운가?: 무상태성(stateless)을 지향하기 때문에 매 요청마다 필수 메타 데이터를 헤더에 통째로 담아 보내야 하기 때문에 담기는 정보가 매우 많고, 이를 매..
Today I LearnedHTTP Keep-AliveHTTP 프로토콜에서 단일 TCP 연결을 재사용해 여러 HTTP 요청과 응답을 처리하는 기술. HTTP니까 L7, 애플리케이션 계층. 초창기 HTTP는 요청마다 새로운 TCP 연결을 맺고 끊어야 했지만, HTTP Keep-Alive를 적용하면 지정된 timeout 동안 연결을 유지하며 웹 페이지를 구성하는 여러 리소스(HTML, CSS, JavaScript, Image...)를 하나의 TCP 연결 위에서 연속 송수신. 오버헤드를 대폭 줄여 웹 페이지 로딩 속도를 최적화한다. HTTP/1.1부터 기본 활성화되어 있다고. 다만 앞선 요청 처리가 지연되면 뒤따르는 모든 요청이 지연되는 HOL Blocking 문제는 존재. 이를 극복하고자 나온 HTTP/2는..
Today I Learned동적 웹의 탄생: CGI와 서버 사이드 렌더링(SSR)정적 웹 페이지 상으로는 모든 경우의 수에 따라 파일을 미리 만들어놓기란 불가능했으므로, 사용자 요청마다 그 자리에서 새로운 HTML을 만들어서 제공하는 SSR(서버 사이드 렌더링) 방식의 CGI(Common Gateway Interface) 방식이 등장했다. 웹 서버가 직접 처리할 수 없는 동적 기능은 외부 프로그램에 작업을 넘겨주고, 그 프로그램이 처리한 결과를 다시 웹 서버를 통해 사용자에게 전달하는 최초의 표준 인터페이스 규약인 셈. SSR 방식은 이후로도 계속 이어졌는데, 1994년 PHP와 1999년 JSP가 대표적이다. CGI 방식은 요청이 올 때마다 새로운 프로세스를 띄워 서버 메모리를 잡아먹는 단점이 존재했고..