TIL - 2024/05/08

박상우·2024년 9월 1일
0

📝 TIL

목록 보기
31/45
post-thumbnail

Proxy

Proxy는 웹 브라우저와 종단 서버 사이에서 middleman처럼 사용되는 프로그램을 말한다.

웹 페이지를 얻기 위해 직접 동단 서버에 접근하지 않고, 브라우저는 서버와 연결되어 있는 프록시에게 요청을 보낸다. 종단 서버가 프록시에게 응답하고, 프록시는 브라우저에게 응답을 전달한다.

목적

  • 방화벅으로서 종단 서버에 대한 보안을 강화할 수 있다.
  • 접근하는 브라우저의 인증 정보를 벗겨내 익명성을 부여할 수 있다.
  • 캐시로서 사용해서 서버와 직접 요청을 주고 받지 않고, 프록시에 저장된 정보를 사용할 수 있다.

종류

포워드 프록시 (Forward Proxy)

클라이언트와 서버 사이 위치해서 요청을 중계하며, 응답시 다시 한 번 Proxy를 거친다. 프록시를 사용하는 목적 중 하나인 클라이언트 은닉 효과를 제공한다.

리버스 프록시 (Reverse Proxy)

요청과 응답이 프록시를 거치긴 하지만, 포워드 프록시와 달리 서버 내부망으로 프록시와 서버가 구성되어 있고, 프록시에게만 연결을 허용한다. 서버에 대한 보안 채널을 구축한다.

이 경우에 클라이언트가 직접적으로 서버에 접근할 수 없기 때문에 중간의 Proxy가 Load Balancing을 수행하기도 한다. 포워드 프록시와 반대로 서버를 감추는 효과가 있다.

Proxy Chaining

클라이언트의 IP를 숨기기 위해 여러 프록시를 통해 우회하는 방법. 클라이언트를 완전히 추적할 수 없는 것은 아니지만 우회하면 알아내기 힘들다.

exit(0), exit(1) vs return

  • exit - 프로세스의 종료를 의미 인자로 0을 받는 경우 정상적인 종료를 의미하며, 1을 받는 경우 에러에 의한 비정상적인 종료를 의미한다.
  • return - 주로 함수의 종료를 의미한다.

fflush()

특정 스트림의 출력 버퍼를 비우는 역할을 수행.

표준 입출력의 경우 버퍼링이 되어있어서, 출력 데이터는 즉각적으로 외부에 전달되지 않고 일시적으로 버퍼에 저장되는데, fflush()를 통해 강제적으로 출력 대상에게 전송하는 역할을 한다. 주로,

  1. 프로그램이 종료되기 전 버퍼가 남아있는 데이터를 확실하게 출력하고 싶을 때.
  2. 사용자에게 로그 메세지나 진행 사태 등을 실시간으로 보여줘야할 때.
  3. 파일에 데이터를 쓸 때, 쓰기 동작을 즉시 반영하고 싶을 때.
profile
나도 잘하고 싶다..!

0개의 댓글

관련 채용 정보