일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- CS
- BFS
- Effective Java
- 알고리즘
- 에라토스테네스의 체
- JUnit 5
- 백트래킹
- 후니의 쉽게 쓴 시스코 네트워킹
- 수학
- mst
- 유니온 파인드
- 세그먼트 트리
- 투 포인터
- 위상정렬
- 문자열
- 프로그래머스
- 스택
- 완전탐색
- 플로이드-와샬
- 시뮬레이션
- 동적계획법
- 백준
- 이분탐색
- dfs
- java
- swea
- 그리디
- 구현
- Kotlin
- Network
반갑습니다!
[Network] 프록시 서버 본문
프록시 서버(Proxy Server)
프록시란 사전적으로 '대리'를 의미한다.
서버의 입장에서 프록시를 본다면 클라이언트의 대리가 되고, 클라이언트의 입장에서 프록시를 보면 서버의 대리가 된다. 아래 그림을 본다면 이해하기 쉬울 것이다.
우리가 Google에 접속하게 되면 일반적인 경우는 왼쪽의 그림과 같다. 하지만 프록시 서버를 사용한다면 클라이언트는 프록시 서버에게 구글에 접속할 것을 요청(Request)하고, 프록시 서버는 구글로부터 받은 데이터들을 다시 클라이언트에게 전달해줌으로써 구글에 접속하게 된다.
그렇다면 프록시를 사용하는 이유는 무엇일까?
사용 목적
- 보안을 위해 익명으로 컴퓨터를 유지
- 캐시를 사용하여 리소스의 빠른 접근
- 네트워크 서비스나 콘텐츠로의 접근 정책을 적용하기 위해 사용 (사이트 차단)
- 사용 내역을 기록하고 검사하기 위해 사용 (인터넷 이용 파악)
- 밖으로 나가는 콘텐츠를 검사하기 위해 사용 (데이터 유출 방지)
프록시 서버의 종류
프록시 서버는 서버의 위치에 따라 2개로 나뉜다.
Forward Proxy
클라이언트가 google.com 에 접속하려고 하면 사용자 PC가 직접 연결하는 것이 아니라 포워드 프록시 서버가 요청을 받아서 google.com에 연결하고, 그 결과를 클라이언트에게 전달 (forward) 한다. 포워드 프록시 서버는 서버를 '클라이언트 호스트들과 접근하고자 하는 원격 리소스의 사이' 에 위치시킨다.
포워드 프록시는 일반적으로 캐싱 기능이 있기때문에 캐시 안에 있는 정보를 요구하는 요청에 대해서는 원격 서버에 접속해 데이터를 가져올 필요가 없으므로 전송 시간을 절약함과 동시에 불필요한 외부와의 연결을 하지 않아도 된다는 장점이 있다. 따라서 외부와의 트래픽을 줄이게 됨으로써 네트워크 병목 현상을 방지하는 효과를 얻을 수 있다. 그리고 웹 사용 환경을 제한할 수 있기 때문에 기업 환경에서 자주 사용한다.
Reverse Proxy
클라이언트가 google.com에 데이터를 요청하면 리버스 프록시 서버는 이 요청을 받아서 내부 서버에서 데이터를 받은 후, 이 데이터를 클라이언트에 전달한다.
포워드 프록시와 차이점은 프록시 서버를 '인터넷 리소스 앞' 또는 '인트라넷 리소스 앞'에 위치시키기 때문에 클라이언트는 프록시 서버에 연결되었다는 것을 알 수 없다는 것이다. 이렇게 하는 이유는 보안때문이다. 보통 기업의 네트워크 환경은 DMZ라고 하는 내부 네트워크와 외부 네트워크 사이에 위치하는 구간이 존재하며 이 구간에는 메일 서버, 웹 서버, FTP 서버 등 외부 서비스를 제공하는 서버가 위치한다. WAS(Web Application Server)는 보통 DB서버와 연결되므로 WAS가 최전방에 있으면 WAS가 공격을 받게되면 DB서버까지도 위험해지는 심각한 문제가 발생할 수 있다. 따라서 리버스 프록시 서버를 두고 실제 서비스 서버는 내부망에 위치시키고 프록시 서버만 내부에 있는 서비스 서버와 통신해서 결과를 클라이언트에게 제공하는 방식으로 서비스를 해 보안을 강화할 수 있다. 또한 리버스 프록시 방식은 각 요청에 대한 데이터가 캐시되기 때문에 프록시 서버는 실제 서버들을 위한 부하 조절 기능을 가질 수 있다.
'CS' 카테고리의 다른 글
[Network] XML, JSON 비교 (0) | 2020.05.25 |
---|---|
[OS] Lock (0) | 2020.05.14 |
[Network] URL, URN, URI (0) | 2020.05.12 |
[Network] 쿠키와 세션 (0) | 2020.05.12 |
[Network] TCP와 UDP (0) | 2020.05.05 |