프로그래밍/HTTP (11) 썸네일형 리스트형 [HTTP 완벽 가이드] 엔터티와 인코딩 메시지는 컨테이너, 엔터티는 화물 메시지의 헤더에는 엔터티에 대한 많은 정보가 있다. Content-Type : 엔터티에 의해 전달된 객체의 종류 Content-Length : 전달되는 메시지의 길이나 크기 Content-Language : 전달되는 객체와 가장 잘 대응되는 자연어 Content-Encoding : 객체 데이터에 대해 행해진 변형 Content-Location : 요청 시점을 기준으로, 객체의 또 다른 위치 Content-Range : 만약 이 엔터티가 부분 엔터티라면, 이 헤더는 이 엔터티가 전체에서 어느 부분에 해당하는지 정의한다. Content-MD5 : 엔터티 본문의 콘텐츠에 대한 체크 섬 Last-Modified : 서버에서 이 콘텐츠가 생성 혹은 수정된 날 Expires : 이.. [HTTP 완벽 가이드] 보안 HTTP를 안전하게 만들기 대량 구매, 은행 업무, 보안 자료 접근 등 보다 강력하고 중요한 트랜잭션을 하기 위해서는 강력한 보안이 필요하다. 인증방식은 보안이 강력하지 않다. HTTPS HTTP 를 안전하게 만드는 가장 인기 있는 방식. 프로토콜 스킴은 https 다. HTTPS 를 사용하면 모든 요청과 응답데이터는 네트워크로 보내지기 전에 암호화 된다. HTTPS 는 HTTP와 TCP 사이에 계층이 하나 추가되는데, 이 보안 계층은 안전 소켓 계층(Secure Sockets Layer, SSL) 또는 전송 계층 보안(Transport Layer Security, TLS) 를 이용해 구현된다. 어려운 인코딩, 디코딩 작업은 대부분 SSL 안에서 일어나기 때문에 로직을 변경할 필요가 없다. 디지털 암호학.. [HTTP 완벽 가이드] 인증 인증 인증은 자신이 누구인지 증명하는 것. HTTP 의 인증요구/ 응답 프레임워크 서버는 요청 메시지를 받으면 현재 사용자가 누구인지 인증요구로 응답을 할 수 있다. 사용자가 다시 요청을 보낼때 인증 정보를 첨부해야한다. 인증 프로토콜과 헤더 (a) 인증 없이 요청을 보냄 (b) 인증이 필요하다는 401 status와 WWW-Autenticate 헤더를 보냄. 여기서 realm은 지시자 (c) 인증을 시도함. Authorization 헤더에 인증 정보를 포함하여 보냄 (d) 인증 성공 보안 영역 서버는 클라이언트 인증 요구를 할 때, realm 지시자가 기술되어 있는 WWW-authenticate 헤더를 본다. 웹 서버는 기밀 문서를 보안 영역 realm 그룹으로 나눈다. 기본 인증 기본 인증은 널리 알.. [HTTP 완벽 가이드] 클라이언트 식별과 쿠키 개별 접촉 HTTP는 상태가 없이 요청과 응답으로 통신하는 프로토콜이다. 상태값은 없지만 개인을 위한 페이지도 제공해 줄 필요가 있다 (주문내역, 장바구니 등) 초기 웹 개발자들이 사용자를 식별하기 위해 개발한 기술들을 봐보자 - 사용자 식별 관련 정보를 전달하는 HTTP 헤더들 - 클라이언트 IP 주소 추적으로 알아낸 IP 주소로 사용자를 식별 - 사용자 로그인 인증을 통한 사용자 식별 - URL에 식별자를 포함하는 기술인 뚱뚱한 URL - 식별 정보를 지속해서 유지하는 강력하고 효율적인 쿠키 1. HTTP 헤더 사용자 정보를 전달하는 HTTP 요청 헤더 값들 헤더이름 헤더타입 설명 From 요청 사용자의 이메일 주소 User-Agent 요청 사용자의 브라우저 Referer 요청 사용자가 현재 링크를 .. [HTTP 완벽 가이드] 캐시 불필요한 데이터 전송 네트워크 비용은 크기 때문에 효율적으로 사용해야 한다. 같은 데이터를 또 받을 필요 없다. 대역폭 병목 네트워크 속도는 가장 느린 속도에 맞춰지기 때문에 병목 현상이 생기는데, 캐시를 사용하면 병목을 줄일 수 있다. 멀리있는 네트워크도 캐시를 사용하면 빠르게 응답을 받을 수 있다. 갑작스런 요청 쇄도 특정 상황에서 트래픽이 급증하면 장애를 야기할수있다. 거리로 인한 지연 거리가 멀수록 지연이 발생한다. 적중과 비적중 운영체제의 캐시 hit와 같은 개념이다. 클라이언트의 요청이 캐시에 있다면 서버까지 가지 않고 바로 주고 데이터가 없을때만 서버에 가서 캐시에 저장도 하고 클라이언트에 넘겨준다. 재검사 캐시서버에 데이터가 있더라도 이 데이터가 최신 데이터가 맞는지 확인을 해야 한다. 캐.. [HTTP 완벽 가이드] 프록시 웹 중개자 프록시 서버는 클라이언트의 입장에서 트랜잭션을 수행하는 중개인이다. 대신 서버에 요청을 하기 때문에 프록시 서버는 클라이언트 면서 서버 이기도 하다. 대부분 프록시는 공유 프록시다. 캐시 프록시 같이 몇몇 프록시는 이용하는 사용자가 많을 수록 유리한 프록시도 있다. 개인 프록시 vs 공유 프록시 개인 프록시 - 하나의 클라이언트가 독점적으로 사용하는 프록시 공용 프록시 - 여러 클라이언트가 사용하는 프록시 프록시 vs 게이트웨이 프록시는 둘 이상의 어플리케이션을 연결하는데 같은 프로토콜을 사용한다. 게이트웨이는 둘 이상의 어플리케이션을 연결하는데 다른 프로토콜을 사용한다. 하지만 실질적 차이는 모호하다 프록시도 때론 다른 프로토콜로 변환하기도 한다. 왜 프록시를 사용하는가? 프록시는 실용적이다.. [HTTP 완벽 가이드] 웹 서버 웹서버 웹서버는 HTTP 프로토콜을 구현하고 웹 리소스를 관리하고 웹 서버 관리 기능을 제공 nginx, apache 등등이 있다. 웹서버가 하는 일 커넥션을 맺음. — 클라이언트의 접속을 받아들이거나, 원치 않는 클라이언트라면 닫는다. 요청을 받는다. — HTTP 요청 메시지를 네트워크로부터 읽기 요청을 처리한다. — 요청 메시지를 해석하고 행동을 취한다. 리소스에 접근한다. — 메시지에서 지정한 리소스에 접근한다. 응답을 만든다. — 올바른 헤더를 포함한 HTTP 응답 메시지를 생성한다. 응답을 보낸다. — 응답을 클라이언트에게 돌려준다. 트랜잭션을 로그로 남긴다. — 로그파일에 트랜잭션 완료에 대한 기록을 남긴다. 클라이언트 커넥션 수락 클라이언트가 이미 서버와 지속 커넥션을 가지고 있다면 이걸 사.. [HTTP 완벽 가이드] HTTP 커넥션 관리 TCP 커넥션 HTTP 통신은 전송 프로토콜인 TCP/IP를 통해 이루어진다. TCP/IP 위에서 전송되기 때문에 메시지의 무결성, 순서 등을 보장 할 수 가 있다. 신뢰할 수 있는 데이터 전송 통로 TCP HTTP 커넥션은 TCP 커넥션에서 몇가지 사용 규칙이 추가된 커넥션이다. HTTP 커넥션은 TCP 커넥션을 이해 하는 것을 베이스로 한다. TCP 커넥션은 바이트(데이터)를 순서에 맞게 정확히 전달하게 된다. TCP 스트림은 세그먼트로 나뉘어 IP 패킷을 통해 전송된다. TCP는 세그먼트 단위로 데이터 스트림을 잘게 나눠주고 세그먼트를 IP 패킷으로 감싸서 전달한다. HTTP 메시지가 TCP 데이터 스트림 청크로 들어가 있고, 이 청크를 TCP 세그먼트가 감싸고, 이 세그먼트를 IP 패킷으로 감싸서.. 이전 1 2 다음