Cache는 속도가 빠른 곳에 임시로 데이터를 저장하여 속도를 높이는 것을 뜻한다.
Web cache란?
네트워크를 통해 어떤 것을 가져오는 작업은 시간과 비용이 발생하게 된다. 크기가 큰 응답은 client와 server사이에 많은 왕복이 필요하다. 그래서 많은 사용자가 사용할 경우 시기가 지연되게 된다. 그래서 이전에 가져온 resource를 cache를 했다가 재활용하는 방법이 성능 최적화에 있어서 중요하다.
웹 캐시의 종류
1. Browser Cache
브라우저 또는 Http 요청을 하는 클라이언트측 application의 내부 디스크
브라우저의 back button을 눌렀을 때
2. Proxy Cache
프록시 서버는 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터나 application을 가리키는데 이 프록시 서버는 요청된 내용들을 cache를 이용하여 저장을 한다. cache안에 있는 정보를 요구하는 요청에 대해서 원격 서버에 접속하여 데이터를 가져올 필요가 없게된다. 그리고 외부와의 traffic을 줄여 bottle neck 을 방지한다.
* 목적은 네트워크 대역을 효율적으로 사용하는것과 조직 내에 특정 웹사이트에 대한 엑세스 제한, 액세스 로그를 획득하는 것에 있다.
3. Gateway Cache
서버 앞 단에 설치되어 요청에 대한 cache와 분배를 맡는다.
게이트웨이는 노드간 다른 방식의 통신을 통일 시켜준다.
HTTP Header에서 cache를 컨트롤
* Expiration 계산
서버는 Expires header또는 위의 Cache Control header의 max-age를 통해 만기일을 설정한다. 후자가 더 우선이다( max-age)
* 캐시 유효성 검사
현개 cahce하여 가지고 있는 데이터가 최신인지 확인하여 새로 전송이 필요한지 판단하는 것을 캐쉬 유효성 검사라고 한다.
HTTP
HyperText Transfer Protocol 은 www상에서 정보를 주고 받을 수 있는 프로토콜인데 주로 html문서를 주고 받는데 사용된다. TCP와 UDP를 사용한다.
96년도에 1.0 99년도에 1.1이 각각 발표되었다. HTTP는 client와 server사이에 이루어지는 요청/응답 프로토콜이다.
클라이언트가 서버에 접속하여 어떤 요청을 하면 서버는 세 자리수 된 응답코드와 함께 응답한다.
대표적인 것들만 보자.
1XX : Information 정보교환
2XX : Success 데이터의 전송이 성공적으로 이루어졌거나 이해되었거나 수락되었음
3XX : Redirectoin 자료의 위치가 바뀌었음
4XX : Client Error 클라이언트 측의 오류인데 주소를 잘못 입력하였거나 요청이 잘못되었음
5XX : Server Error 서버측의 오류로 요청을 처리할 수 없음
HTTPS
HyperText Transfer Protocol over Secure Socket Layer 은 HTTP의 보안이 강화된 버전이다. 전자상거래에서 널리 쓰인다.
HTTPS를 사용하는 홈페이지는 SSL인증서를 필수 발급하며 인증서를 통해 사용자는 해당 사이트가 신뢰할 수 있는 사이트임을 확인한다. 데이터가 서버 전송 중에 데이터가 유출되더라도 비공개 키를 아는 사람만 복화하가 가능하기 때문에 안전하다.
속도 때문에 평소에는 http를 사용하다가 로그인이나 개인정보를 입력할 때 https를 이용한다. 그런데 현재는 하드웨어 장비의 고급화로 속도 문제는 예전 일이 되었다.
그런데 개인 정보가 포함되지 않아서 http로 운영하는 사이트(네이버)도 https로 메인페이지까지 운영하게 되었다. 개인정보를 주고 받는 것이 아닌데 암호화를 해야하는 이유는 인터넷 검열 때문이다. 암호화 되지 않은 모든 http통신을 가로채 host헤더를 보고 각 국가의 정부와 ISP는 사용자가 어느 사이트에 접속 했는지 어떤 행동을 했는지 모두 감시할 수 있다. 사용자의 기록과 행동은 보호받아야 하는데 그렇지 못하게 되는 것이다.
HTTPS는 속도의 문제가 아닌 필수이다.
'프로그래밍 > Network' 카테고리의 다른 글
웹사이트 속도가 왜 중요한 것인가 (0) | 2020.09.02 |
---|---|
[네트워크] HTTP 캐시(Cache) 정책에 대해서 - 최적의 캐시 전략을 만들자 (0) | 2019.09.26 |
[네트워크] TCP 멀티플렉싱 이해하기 (0) | 2017.04.12 |
[네트워크] TCP/UDP 와 자바 소켓프로그래밍 예제 (0) | 2017.03.26 |
네트워크 용어정리 (0) | 2017.03.14 |