라벨이 #WEB인 게시물 표시

[Web] 쿠키 & 세션 & 캐시

이미지
[Web] 쿠키 & 세션 & 캐시 HTTP 프로토콜의 특징이자 약점을 보완하기 위해서 사용 HTTP 프로토콜의 특징 1. 비연결지향(Connectionless) HTTP는 먼저 클라이언트가 request를 서버에 보내면, 서버는 클라이언트에게 요청에 맞는 response를 보내고 접속을 끊는 특성이 있다. 헤더에 keep-alive라는 값을 줘서 커넥션을 재활용하는데 HTTP1.1에서는 이것이 default이다. HTTP가 tcp위에서 구현되기 때문에( tcp는 연결지향, udp는 비연결지향 ) 연결지향이라고 할 수도 있다는 얘기도 있고 논란도 있으나 아직까지는 네트워크 관점에서 keep-alive는 옵션으로 두고 connectionless의 연결비용을 줄이는 것이 명확한 장점이기 때문에 비 연결지향이라고 알아둔다. 2. 상태정보유지안함(Stateless) 연결을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태 정보는 유지하는 않는 특성이 있다. HTTP의 이 두가지 특성을 보완하기 위해서 쿠키와 세션을 사용하게 되었다. 비연결지향이라는 특성 덕분에 계속해서 통신 연결을 유지하지 않아서 리소스 낭비가 줄어드는 것은 아주 큰 장점이지만, 통신할 때마다 새로 커넥션을 열기 때문에 클라이언트는 내가 누구인지 인증을 계속해야하는 단점이 생긴다. 만약 쿠키와 세션이 없다면 어떤 페이지에서 옮겨 다닐때마다 로그인을 다시 해야 한다. 쿠키 쿠키는 클라이언트 로컬 에 저장되는 키와 값이 들어있는 작은 데이터 파일이다. 쿠키에는 이름, 값, 만료날짜(쿠키 저장기간), 경로 정보가 들어있다. 쿠키는 일정시간동안 데이터를 저장할 수 있다.(로그인 상태 유지에 활용) 쿠키는 사용자가 웹사이트에 접속할 때 생성되는 파일이다. 쿠키는 클라이언트의 상태 정보를 로컬에 저장했다가 참조한다. 쿠키는 웹사이트가 생성하고 웹브라우저에 저장된다. 쿠키 프로세스 브라우저에서 웹 페이지 접속 클라이언...

[WEB] Nginx란?

이미지
[WEB] Nginx란? 동시접속 처리에 특화된 웹 서버 프로그램 Apache보다 동작이 단순하고, 전달자 역할만 하기 때문에 동시접속 처리에 특화 됨 동시 접속자(약 700명)이상이라면 서버를 증설하거나, Nginx환경을 권장 지금 아파치가 시장 점유율이 압도적이지만, AWS에서는 Nginx의 점유율이 44%에 달한다. Nginx의 역할 1. 정적 파일을 처리하는 HTTP서버로서의 역할 Nginx의 역할은 HTML, CSS, Javascript, 이미지와 같은 정보를 웹 브라우저(Chorm, Firefox 등)에 전송하는 역할을 준수함 HTTP 프로토콜을 준수 2. 응용프로그램 서버에 요청을 보내는 reverse proxy의 역할 client가 Nginx에 요청(Request)를 하면, Nginx가 배후 서버로부터 데이터를 가져오는 역할 리버스 프록시(Niginx)를 두는 이유는 요청(request)에대한 버퍼링이 있기 때문 client가 직접 App서버에 직접 요청하는 경우, 프로세스 1개가 응답 대기 상태가 되어야 함 따라서 proxy 서버를 둠으로써 요청을 배분하는 역할을 해야함 비동기 방식을 취함 동기 : A가 B에게 데이터를 요청했을 때, 이 요청에 따른 응답을 주어야만 A가 다시 작업 처리가 가능 하나의 요청, 하나의 작업에 충실 비동기 : A의 요청을 B가 즉시 주지 않아도, A의 유휴시간으로 또 다른 작업 처리가 가능 출처 http://whatisthenext.tistory.com/123

[WEB] HTTP Header 구조

[WEB] HTTP 헤더 구조 HTTP 헤더 아래 헤더 정보는 텍스트만 있는 HTML문서에 대한 요청/응답 헤더(HTTP Version 1.1을 기준) Get /test/test.htm HTTP/1.1 Accept: */* Accept-Language: ko Accept-Encoding: gzip, deflate If-Modified-Since: Fri, 21 Jul 2006 05:31:13 GMT If-None-Match: "734237e186acc61:a1b" User-Agent: Mozilla/4.0(compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322;  InfoPath.1) Host: localhost Connection: Keep-Alive HTTP/1.1 200 OK Server: Microsoft-IIS/5.1 X-Powered-By: ASP.NET Date: Fri, 21 Jul 2006 05:32:01 GMT Content-Type: text/html Accept-Ranges: bytes Last-Modified: Fri, 21 Jul 2006 05:31:52 GMT ETag: "689cb7f885acc61:a1b" Content-Length: 101 요청헤더 Get /test/test.htm HTTP/1.1 요청 method와 요청 파일정보, http 버전 GET, POST, PUT, DELETE HEAD : 문서의 헤더 정보만 요청하며, 응답데이터(body)를 받지 않음 TRACE : 클라이언트가 요청한 자원에 도달하기까지의 경로를 기록하는 루프백(loop back) 검사용. 클라이언트가 요청 자원에 도달하기까지 거쳐가는 프록시나 게이트웨이의 중간 경로부터 최종 수신 서버까...

[JS] Node.js란?

이미지
[JS] Node.js란? 자바스크립트로 서버를 개발 할 수 있다고..??? Node.js 자바스크립트를 서버에서도 사용할 수 있도록 설계가 되어 있는 서버사이드 스크립트 언어로 서버 개발을 위해서 만들어짐 아파치(Apache)와 다르게 사용자에게 전송할 데이터를 생성함 Node.js를 이해하려면 먼저 javascript를 배워야 한다. 그 이유는 node.js는 javascript 기반으로 개조하여 만들어졌기 때문이다. javascript javascript는 C/C++, JAVA와 같은 프로그래밍 언어입니다. 하지만 이름에서 알 수 있듯이 javascript는 독립적인 언어가 아니라 스크립트 언어입니다. 스크립트 언어는 특정한 프로그램 안에서 동작하는 프로그램이기 때문에 웹 브라우저 프로그램 안에서만 작동을 하게 됩니다. 즉 웹 브라우저(크롬, 파이어폭스, 사파리, 익스플로러 등등)가 없으면 사용할 수 없는 프로그램입니다. 여기서 Node.js 가 나오는 이유가 됩니다. 즉 javascript를 웹 브라우저에서 독립시킨 것으로 Node.js를 설치하게 되면 터미널프로그램(윈도우의 cmd, 맥의 terminal 등)에서 node를 입력하여 브라우져 없이 바로 실행할 수 있습니다. 하지만 javascript에서 분리된 언어이기 때문에 문범은 같습니다. 이렇게 .node.js를 이용하여 웹브라우져와 무관한 프로그램을 만들 수 있게 되었고, 중요한 것은 node.js를 이용하여 서버를 만들 수 있다는 것입니다. 중요한 이유는 이전까지 server-clint 웹사이트를 만들 때 웹에서 표시되는 부분은 javascript를 사용하여 만들어야만 했으며, 서버는 ruby, java 등 다른 언어를 써서 만들어야 했는데, 마침내 한가지 언어로 전체 웹페이지를 만들 수 있게 된 것입니다. Node.js의 장점 클라이언트와 서버에서의 언어가 동일 javascript를 웹 브라우저에서 독립시킨 것으로, ...

[Web] 웹소켓(Web Socket)이란?

이미지
[Web] 웹소켓(Web Socket)이란? Web Socket Transport protocol의 일종으로 쉽게 이야기하면 웹버전의 TCP 또는 Socket(소켓) 서버와 클라이언트간의 socket connection을 유지해서 언제든 양방향 통신 또는 데이터 전송이 가능하도록 하는 기술 Real time web application : 서버 or 클라이언트 쪽 데이터가 실시간으로 업데이트 되는 웹 어플리케이션 Web Socket을 사용하는 이유 웹 소켓 사용 이전에는 Client-Server간의 Socket Connection같은 영구적인 연결이 되어 있지 않고, Client쪽에서 Request를 보내야만 Response를 하는 방식임 이러면... 문제가 뭐냐면.... Request를 안 보내면 서버쪽에서 업데이트를 해도 HTTP를 못 보냄 Web Socket 작동원리 서버와 클라이언트간의 연결은 HTTP 프로토콜을 통해 이루어짐 만약 연결이 정상적으로 이루어진다면 서버와 클라이언트 간에 WebSocket연결이 이루어지고 일정 시간이 지나면 HTTP연결은 자동으로 끊어짐 Web Socket 단점 Web Socket은 장점이 많지만, 그에 못지 않는 비용을 지불해야함 오래된 버전의 웹 브라우저에서는 지원하지 않음 인터넷 익스플로어 같은 경우 10 버전부터 지원 프로그램 구현에 보다 많은 복잡성 초래 Web Socket의 예 페이스북 같은 SNS 어플리케이션 LOL 같은 멀티플레이 게임들 구글 Doc같은 여러 명이 동시 접속해서 수정할 수 있는 Tool 참고 http://utk-unm.blogspot.com/2016/10/websocket.html http://webclub.tistory.com/463

[WEB] 쿠키(Cookie)란?

[WEB] 쿠키(Cookie)란? 쿠키 하이퍼 텍스트의 기록서의 일종으로서 인터넷 사용자가 어떠한 웹 사이트를 방문할 경우 그 사이트가 사용하고 있는 서버를 통해 인터넷 사용자의 컴퓨터에 설치되는 작은 기록 정보 파일 유저들의 효율적이고 안전한 웹 사용을 보장하기 위해서 웹사이트에서 널리 사용되고 있음 웹사이트는 쿠키를 통해 접속자의 장치를 인식하고, 접속자의 설정과 과거 이용내역에 대한 일부 데이터를 저장함 쿠키의 만료일 세션 쿠키 : 브라우저를 닫는 경우 자동으로 삭제되는 쿠키 지속적 쿠키 : 수동으로 삭제되기 전까지 남아있는 등 더 오랜기간 동안 컴퓨터에 저장되는 쿠키 쿠키를 사용하는 이유 필수적인 쿠키 페이지 탐색, 웹사이트의 보안영역 접속, 그리고 검색을 포함한 웹사이트의 기본적인 기능의 활성화를 목적으로사용 필수적인 쿠키 없이 최적화된 수행이 불가능하므로 본 쿠키는 이용자의 별도 도움 없이 활성화 되고 있음 기능 쿠키 웹사이트가 접속자의 지역 및 언어 등 웹사이트의 행태 및 외관에 영향을 줄 수 있는 접속자 설정을 저장하도록 허용하며, 접속자의 설정에 따라 웹사이트가 작동하도록 도움을 줌 성능 쿠키 유저와의 상호관계에 대한 통계자료를 제공함으로써 웹사이트 운영자가 더욱 최적화된 웹사이트를 개발하는데 기여함 마케팅 쿠키 유저의 웹 사이트 방문 내역을 추적하며, 쿠키 제공자가 접속자의 경향 및 웹사이트 이용 패턴을 파악하도록 함으로써 유저에게 관련성 높은 광고나 제품이 제공되는데 기여함 출처 https://kobrekim.com/footer-ko-kr/cookie-policy-ko-kr/what-are-cookies-and-why-we-use-them-ko-kr/

[Web] 크롤링(Crawling)이란?

이미지
[Web] 크롤링(Crawling)이란? 크롤링의 사전적 의미는 기어다닌다는 뜻인데, 전산쪽에서는 Web상을 돌아다니면서 정보를 수집하는 행위.. 웹 크롤링(Web Scraping) 컴퓨터 소프트웨어 기술로 웹 사이트들에서 원하는 정보를 추출하는 것 엄청난 분량의 웹 문서를 사람이 일일 구별해서 모으는 일은 불가능에 가까움 그래서, 웹 문서 검색에서는 사람이 일일이 하는 대신 이를 자동으로 해줌 웹이 기본적으로 HTML형태(어떤 정형화된 형태)로 되어 있기 때문에,  이런 규칙을 분석해서 우리가 원하는 정보들만 뽑아오는 것 우리가 흔히 부르는 웹 크롤러 크롤링의 정식명칭은 'Web Scraping' 외국 자료를 찾으려고 하니까 'Web Crawling'보다는 'Web Scraping'이라는 용어를 더 자주 사용함 Python으로 크롤링 하는 소스들이 가장 흔함 + 외국 자료를 검색할때는 "Web Scraping with something"이런식으로 검색하면 더 잘나옴 크롤링 메커니즘 대상 선정 데이터 로드 데이터 분석 데이터 수집 1.  대상선정 웹 상의  데이터는 고유한 ID를 가진다. URI라고 부르며, 이는 우리가 잘 아는 웹 사이트 주소인 URL과 RUN이 있다. 간단하게 과일에 대한 네이버 검색 결과를 크롤링하려면 (URL을 선정하는 과정) https://search.naver.com/search.naver?query=사과  2. 데이터 로드 데이터 로드는 웹 사이트를 켜는것과 같다. 만약 API라면 -> XML, JSON문서 웹페이지 -> HTML문서를 다운 받는 것 3. 데이터 분석 로드된 데이터에서 필요한 부분을 뽑아내는 것을 뜻한다. 당연하게도 웹 사이트상에는 내가 필요로 하지 않는 부분이 많다. 어떤 부분을 수집할지, 어떤 부분을 수집하지 않을지...

[WEB] JSP란?

이미지
[WEB] JSP란? JSP(Java Server Pages)  HTML코드에 Java코드를 넣어 동적인 웹페이지를 보다 쉽게 구축할 수 있도록 만들어주는 서버사이드 스크립트 언어 자바에서 제공하는 API나 DB와 연동이 가능하도록 만드어주는  JDBC를 이용 가능 자바 기반이기 때문에 윈도우, 리눅스 운영체제 상관없이 플랫폼에 독립적 자바 기능을 그대로 사용 가능 서블릿(Servlet)  자바 언어를 개발한 Sun Micro systems(지금은 오라클에 인수됨)에서 웹 개발을 위해 만든 표준 자바코드를 작성하고 그 코드를 컴파일해서 클래스 파일을 만들어서 동적페이지를 처리하는 실행코드 방식을 사용 위의 같은 서블릿을 사용하면 페이지를 조금만 수정할려고 하면 계속해서 수정하고 컴파일하고 클래스파일을 복붙 넣어주는 작업을 반복해야 하므로 개발생선상의 저하를 일으킴 그래서 보안된 스크립트 방식의 표준이 JSP다 JSP는 서블릿처럼 코드를 수정하고 다시 컴파일 하는 과정 없이 그냥 수정하면 톰캣이 알아서 해줌 하지만 JSP도 결국 컴파일 후에 서블릿 코드로 변환되어 작동함 + 실행코드 방식과 스크립트 방식 실행코드 방식 웹서버에서 직접 프로그램을 호출하는 방식 매번 프로그램을 직접 호출하기 때문에 웹 규모가 크면 클수록 메모리 낭비가 심해짐 ex) C기반의 CGI프로그램 스크립트 방식 웹서버에서 어플리케이션 서버를 이용해 스크립트 코드 번역을 거쳐 작동 실행코드 방식과는 다르게 프로그램을 웹서버가 직접 호출할 필요가 없다 그렇기때문에 메모리를 효율적으로 쓸 수 있음 웹 규모가 큰 오늘날에는 JSP , PHP, ASP, net, Ruby 등을 사용 실행코드 방식과 스크립트 방식의 차이점을 조금 더 자세히 보려면 여기 클릭 출처 http://overman.tistory.com/entry/JSP-%EB%9E%80-%...

[WEB] 프록시(proxy)란?

이미지
[WEB] 프록시(proxy)란? 프록시(Proxy)란 [대신]이라는 의미를 가지고 있다. 프로토콜에 있어서 대리 응답 등에서 사용하는 개념이라고 할 수 있음 VPN과의 단점은 VPN은 암호화되어서 전달된다는것 보안 상의 문제로 직접 통신을 주고 받을 수 없는 사이에서 프록시를 이용해서 중계를 하느 개념이라고 볼 수 있음 프록시 서버를 쓰는이유는 보안만 있는게 아니다 프록시는 프록시 서버에 요청된 내용들을 캐시 를 이용해 저장함 원래 프록시 서버가 나오게 된 이유(프록시 서버에 캐시 데이터가 보관되어 있어서 속도가 빨라졌으나 지금은 속도가 충분히 빨라져서 다른 용도로 사용) 이렇게 캐시로 저장을 해 두게 된다면 다시 데이터를  가져올 상황이 발생하지 않기 때문에 전송시간을 절약 할 수 있음 이렇게 중계의 기능을 하는 것을 우리는 프록시 서버라고 부름 프록시 서버의 특징 프록시 서버는 클라이언트와 서버의 입장에서 볼 때 서로 반대의 역할을 하는것처럼 보여짐 클라이언트가 프록시를 바라보면 프록시는 [서버]와 같이 동작 서버가 프록시를 바라보면 [클라이언트]처럼 작동 참고 : http://milkye.tistory.com/202

[Web] Apache Tomcat이란?

이미지
[Web] Apache Tomcat이란? Appachesoftware 재단에서 만든 JAVA Servlet & JSP 기술 구현을 위한 Open Source 작성언어 : 자바 Apache란? 웹서버 소프트웨어 단체 이름 흔히 부르는 아파치서버라는 것은 아파치 제단에서 후원하는 오픝소스 프로젝트 커뮤니티에서 만든 http웹서버 client가 Get, Post, Delete등등의 메소드를 이용해 요청을 하면 이 프로그램이 어떤 결과를 돌려주는 기능을 함. 연결되는 기본 포트 : 80 Tomcat이란? 흔히 WAS(Web Application Server)를 말함 WAS = 웹서버 + 웹 컨테이너의 결합 아파치 웹 서버와의 차이는 이 컨테이너 의 기능이 가능하냐의 차이 연결되는 기본 포트 : 8080 HTML이나 단순한 이미 파일은 톰캣도 처리 가능하지만 아파치가 성능이 조금 더 낫다.  동적인 페이지(DB 연동이나 데이터 조작)은 말할 필요없이 톰캣... Apache와 Tomcat을 연동하는 이유 Apache와 Tomcat을 연동한다는 것은 동일한 포트로 운영한다는 뜻 Apache는 포트 80으로 들어오는 요청은 자신이 받고 이 요청 중 서블릿이 필요한 요청은 Tomcat으로 넘김 보통의 이미지나 HTML요소는 Apache에서 처리 사용자 데이터 처리와 같은 동적인 업무는 Tomcat에서 처리 참고 : http://sungbine.github.io/tech/post/2015/02/15/tomcat%EA%B3%BC%20apache%EC%9D%98%20%EC%97%B0%EB%8F%99.html 참고 : http://na27.tistory.com/207

[WEB] CGI(Common Gateway Interface) 어디서 들어봤는데..

이미지
[WEB]CGI  웹서버와 외부 프로그램(client도 가능) 사이에서 정보를 주고받는 방법인 규약들 CGI : client에서 서버에 요청을 넣으면 Application(ex shell script 등등)을 돌려서 나온  결과를 HTML형식으로 보여주는것 게이트 웨이 : 서버 컴퓨터에서는 존재하지만 웹 서버 프로그램을 통해서는 접근 할 수 없는 다른 프로그램의 입구 ex) 일반적인 웹 브라우져로 웹 서버 프로그램 접속한 경우, 서버 컴퓨터에 있는 mysql db에는 절대로 직접 접근 불가 그러나 mysql를 다룰 수 있는 CGI를 사용하면 웹 브라우져를 통해 mysql에 접근 가능 웹페이지는 HTML언어에 의해서 기본적으로 만들어짐. 하지만 HTML만으로 모든 정보를 다 처리 불가능.(보여주는 역할만 함) 따라서 홈페이지를 양방향으로 할 필요가 있음 CGI : 외부 프로그램을 수행하여 그 결과를 HTML형태로 보여주는 방식 쉽게 설명하면, 두 개 이상의 컴퓨터간의 자료들을 주고 받는 프로그램 또는 주고받는 것 자체 원래 웹이란 것은, 일반적인 정보의 전송만이 가능했다. 사용자는 보내고, 서버는 받아서 처리한 후 사용자에게 보내줌 이전 : 서버 -> 클라이언트            단방향성 현재 : 웹서버 <-> 클라이언트        양방향성 CGI를 이용하면 웹 서버측에서도 client의 동향 및 의사를 수렴해서 일방적이 아닌 양방향으로 적용 가능 CGI는 사용자의 요청에 의한 서버의 응답 ex) 방명록이나 게시판 CGI는 응용 프로그램이기 때문에 html로 만들수는 없고 웹 서버의 환경에 따라 다르게 구현 ex) C, Perl 등등으로 만듬 장점 : CGI는 외부 프로그램을 실행하는 표준방식으로 사용이 편리하다 단점 : 서버에서 많은 프로그램을 수행하므로 서버에...