CS지식/네트워크
-
로그(log)란 무엇인가CS지식/네트워크 2021. 7. 18. 23:09
우리는 지금까지 클라이언트와 서버가 HTTP를 통해 서로 통신을 하는 것을 배웠다. 클라이언트는 수 많은 요청을 보낼 것이고 서버는 그에 대한 응답을 해준다. 이러한 상황에서 모든 서버와 중개자로 사용되는 프락시는 처리했던 HTTP 트랜잭션을 요약해서 기록해 놓는데 이를 로그라고 한다. 그러면 지금부터 어떠한 정보를 로그로 남기는지, 로그 포맷을 어떠한지 알아보자. 로그는 왜 남길까? 로그는 남기는 이유는 보통 서버나 프락시의 문제를 찾거나 웹 사이트 접근 통계를 내기위해 진행된다. 로깅을 통해 나온 통계는 마케팅, 장비 조달 계획 등을 세우는데 유용하게 쓰일 수 있다. 그렇다고해서 모든 HTTP 트랜잭션의 헤더를 로그로 남긴다면 너무나 많을 것이고 감당하기 힘든 데이터가 될 것이다. 그래서 보통 트랙잭..
-
HTTP/2.0이란 무엇인가CS지식/네트워크 2021. 7. 16. 21:54
우리는 현재 HTTP의 버전으로 1.1을 보편적으로 사용하고 있다. 그렇지만 HTTP를 개발하는 그룹에서는 HTTP의 성능 문제를 개선하기 위해 HTTP/2.0을 만든 중에 있다. 그러면 HTTP/2.0은 HTTP/1.1과 어떠한 차이점이 있는지 현재까지 알려진 보안 이슈는 무엇인지에 대해 알아보자. HTTP/2.0의 등장 배경 기존의 HTTP 메시지 교환 방신은 하나의 커넥션을 통해 클라이언트가 요청 하나를 보내면 서버는 그에 대한 응답 하나만을 보내는 방식이였다. 이러한 방식은 응답을 받아야만 다음 요청을 보낼 수 있기에 심각한 지연을 야기할 수 있는 문제가 있다. 이 문제를 회피하기 위해 병렬 커넥션이나 파이프라인 커넥션을 도입했지만 성능 개선에 대한 근본적인 해결책은 되지 못했다. 이제는 근본적인..
-
내용 협상(content negotiation)이란 무엇인가CS지식/네트워크 2021. 7. 12. 22:04
내용 협상(content negotiation)은 왜 도입된 것일까? 상황을 가정하여 생각해보자. www.naver.com이라는 네이버 사이트는 한국인이 접속을 하기도 하고 외국인이 접속을 한다고 생각해보자. 사용언어가 다른 두 클라이언트는 그냥 www.naver.com URL로 접속을 할 것이다. 이 때, 서버는 클라이언트에게 그냥 한국어로 된 웹 페이지로 응답하면 될까? 그렇다면 외국인은 네이버 사이트를 이용하기 힘들 것이다. 그러면 웹 서버는 한국어 버전과 다른 언어 버전으로 되어 있는 네이버 웹 페이지 리소스를 가지고 있을텐데 어떻게 판단하여 클라리언트에게 적합한 버전을 보낼 수 있을까? 여기서 필요한 개념이 내용 협상(content negotiation)이라는 것이다. 내용 협상을 통해 하나의 ..
-
HTTPS란 무엇인가CS지식/네트워크 2021. 6. 23. 22:29
HTTP에는 사용자를 식별해주고 인증해주는 좋은 기능이 존재한다. 하지만, HTTP에서 제공하는 식별과 인증기능은 악의적인 사용자들의 도청이나 위조같은 위협에 있어 안전하지 않다. 강력한 보안이 보장되지 않는다면 사용자 입장에서 안심하고 서비스를 이용할 수 없을 것이다. HTTP를 이용하는 통신에서 강력한 보안을 제공하기 위해서는 추가로 디지털 암호화 기술을 결합해야한다. 그 중 하나가 HTTPS라는 것이다. HTTPS는 HTTP를 안전하게 만드는 방식 중 하나로 가장 보편적으로 사용하는 것이다. 우리가 URL을 보면 http://로 시작하는 것을 볼 수 있고 https://로 시작하는 것을 볼 수 있을 것이다. 여깃 https://로 시작한다면 해당 웹 페이지는 HTTPS로 통신이 이루어진다는 것을 알..
-
다이제스트 인증이란 무엇인가CS지식/네트워크 2021. 6. 20. 20:21
다이제스트 인증은 HTTP에서 제공하는 인증 방법 중 하나이다. 지난번에 알아 본 기본 인증은 편리하고 유연하지만 안전하지 않다. 그 이유는 사용자 이름과 비밀번호를 평문으로 보내는데 이 정보를 위조하지 못하게 보호하는 장치가 없기 때문이다. 비밀번호를 base-64 인코딩을 한다고는 하지만 쉽게 디코딩이 가능하여 보호기능이 약하다. (기본 인증: https://straw961030.tistory.com/111) HTTP 인증이란 무엇인가 인증이란 무엇일까? 웹을 통해서는 정말 다양한 서비스를 받을 수 있다. 우리가 관심을 가지고 있는 분야에 대한 정보나 뉴스, 검색어를 통한 서칭 등 누구나 공용으로 이용할 수 있는 서비스들 straw961030.tistory.com 다이제스트 인증은 기본 인증과 호환되..
-
HTTP 인증이란 무엇인가CS지식/네트워크 2021. 6. 17. 22:43
인증이란 무엇일까? 웹을 통해서는 정말 다양한 서비스를 받을 수 있다. 우리가 관심을 가지고 있는 분야에 대한 정보나 뉴스, 검색어를 통한 서칭 등 누구나 공용으로 이용할 수 있는 서비스들이 있다. 하지만, 이러한 공용으로 데이터를 사용하여 받는 서비스 이외에 웹에서는 허가된 사용자만 데이터에 접근하여 개인적인 서비스를 받기도 한다. 예를 들어 메일을 주고 받거나 요즘에 자주 사용하는 간편결제시스템을 이용하는 등 이러한 서비스는 개인적인 데이터에 접근하여 받는 서비스이다. 이러한 개인적인 서비스를 받거나 데이터에 접근하기 위해서 서버는 사용자가 누구인지 식별할 수 있어야한다. 하지만 서버가 단순히 접근한 사용자를 식별만해서 private한 데이터를 접근하게 하는 것이 아닌 사용자가 누구인지 증명을 해야하..
-
쿠키(Cookie)란 무엇인가?CS지식/네트워크 2021. 6. 14. 21:33
쿠키(Cookie)는 사용자를 식별하고 세션을 유지하는 방식 중에서 가장 많이 사용하는 방식이다. 쿠키는 캐시와 충돌할 수 있어 대부분의 캐시나 브라우저는 쿠키에 있는 내용물을 캐싱하지 않는다. 쿠키는 크게 세션 쿠키와 지속 쿠키로 나뉘어 진다. 세션 쿠키는 사용자가 사이트를 탐색할 때 설정과 선호 사항들을 저장하는 임시 쿠키로 브라우저를 닫으면 삭제된다. 지속 쿠키는 사용자가 주기적으로 방문하는 사이트에 대한 설정 정보나 로그인 이름을 유지하기 위해 사용하는 쿠키이다. 지속 쿠키는 디스크에 저장되어 브라우저를 닫거나 컴퓨터를 재시작해도 남아있다. 쿠키가 사용자에 대한 정보를 저장하여 여러 사용자들을 식별하는데 쓰이는 것은 알겠다. 그러면 이러한 쿠키는 어떻게 구현될까? 처음에 사용자가 웹 사이트에 접속..
-
클라이언트 식별이란 무엇인가?CS지식/네트워크 2021. 6. 11. 22:23
웹 서버는 수 많은 클라이언트들과 동시에 통신해야하는 경우가 발생할 수 있다. 이러한 경우에 웹 서버는 클라이언트의 요청을 모두 처리해야할 뿐만 아니라 어떤 클라이언트와 통신하는지 알아야 한다. 왜 클라이언트를 식별해야하고 식별하면 무엇이 좋을까? 클라이언트를 알고 있다면 각각의 클라이언트에게 맞춤 서비스를 제공할 수 있고 클라이언트가 매번 입력해야하는 정보(주소나 결제에 자주쓰는 수단 정보 등)을 데이터베이스에 저장하여 저장된 클라이언트 정보를 사용할 수 있다. 하지만, HTTP를 사용하여 통신을 하게 되면 HTTP는 stateless(연결에 대한 정보가 없고 매 요청은 독립적으로 처리)이기 때문에 통신하고 있는 상대방이 누구인지 알 수 없다. 그러면 어떻게 HTTP 통신에서 클라언트를 식별할 수 있을..