뭐라도 공부해보자!!( 이론 )/네트워크(공부한 것 정리하기)
네트워크 공부 4 일차
잡학다식을꿈꾼다
2022. 10. 5. 14:22
반응형
네트워크 공부 4일차, 프록시(Proxy)와 TCP/IP의 작동 원리에 대한 강의를 들었다. 언제나 그렇듯 자세한 정보를 알고 싶으면 정보를 더 깊게 다룬 문헌들을 참고하라. 이 글은 복습하면서 그냥 끄적이는 글인 만큼, 어떻게 이해했는 지 위주로 적을 것이지, 정보 전달을 목적으로 적는 글이 아님을 미리 밝힌다.
- 프록시(Proxy) : 간단하게 통신 중 거쳐가는 컴퓨터 시스템 혹은 응용 프로그램 정도로 이해하면 좋다. 강의에서는 시스템으로서의 프록시를 다루기 보다는 어플리케이션으로서의 프록시를 다루고 있었다.
- 일반적인 HTTP 통신을 하는 프로세스의 동작 원리가 그대로 적용된다. 프록시 프로세스가 동작을 하게되면 소켓-TCP/IP-드라이버-NIC로 연결되는 통로가 열리고 이 통로로 정보가 오고가고 한다.
- 프록시가 응용되는 형태에 주목할 필요가 있다. 응용 방법으로는 우회, 분석, 보호와 감시, 리버스 프록시 등을 들 수 있다.
- 우회는 말그대로 직접 클라이언트에서 서버로 인터넷을 통해 리퀘스트를 보내지 않고 프록시를 경유하는 것을 의미한다. 그 과정에서 서버는 클라이언트가 누구인지를 쉽게 알아내지 못한다. 서버 입장에서 통신하는 객체는 프록시이며 프록시의 IP 주소만을 알 수 있을 뿐 클라이언트의 IP는 알아내지 못한다. 우회는 정보 통신의 주최를 불분명하게 함으로써 인터넷 상의 익명성을 보장한다. 다만 프록시는 직접적으로 클라이언트와 통신하고, 경우에 따라서는 모든 통신이 프록시를 거쳐서 이루어지기 때문에 통신이 감청당할 위험이 있다는 것을 주의해야 한다.
- 앞서서 프록시를 통해서 통신을 감청할 수 있다고 하였다. 분석 툴로써 프록시를 사용하기도 한다. 3 일차에서 패킷 단위로 정보를 분석할 수 있는 툴이 있다고 하였다. 그 툴을 사용하면 그만인데 굳이 프록시를 이용할 필요가 있을까 ? 정답은 필요가 있다는 것이다. HTTPS의 경우 보안성을 높이기 위해서 패킷에 오버로드되는 정보가 암호화 되어 있다. 페킷을 분석하기 위해 Wire Shark와 같은 툴을 이용한다 가정하였을 때, 사용자는 패킷에 오버로드된 내용을 일일이 복호화하는 번거로운 과정을 거쳐야 할 것이다. 프록시를 이용하면 이런 번거로운 과정을 싹 없앨 수 있다. 자기 주소를 프록시로 설정하고 이를 거쳐서 통신을 하면 된다. 소켓에서 인터넷으로 가는 과정 중에 암호화가 이루어지는 데, 자기 자신을 프록시로 설정하게 되면, 프록시로 패킷이 가는 과정에 대해서는 암호화가 이루어지지 않아 원문 그대로의 페킷을 제공 받을 수 있기 때문이다. (추가적으로 명심하자. 프록시는 Stream을 감시한다.)
- 프록시를 보안에 이용할 수 있다. 인터넷 상에는 안전한 서버뿐만 아니라 악성 스크립트를 심는 등의 목적을 가지고 악의적으로 만들어진 서버도 존재한다. 프록시 서버로 하여금 클라이언트가 가고자 하는 주소를 확인하고, 해당 서버가 안전하지를 판단하여 이를 연결할지 말지를 정하게 하면 굳이 개인 PC에 보안 프로그램을 깔 지 않고도 어느정도는 보안성을 유지할 수 있다. 이와 같은 역할을 하는 프록시를 Virus Wall 이라고 한다.
- 리버스 프록시(Reverse Proxy)는 서버에 연결되어 클라이언트로부터의 쿼리를 감시 및 보안을 맡는 프록시를 의미한다. 기존에 다루었던 프록시들이 가는 방향에서의 필터로써 작용을 하였다면, 리버스 프록시는 오는 방향에서의 필터의 역할도 겸한다. 외부로부터의 리퀘스트들을 검토하고 만약 DDOS 등 공격으로 인식될 경우 공격이 오는 주소에 대해서 더 이상 패킷을 받지 않는 등 방어의 역할도 한다. 인터넷이 공적인 영역이라면 프록시와 서버를 합하여 사적 영역(Private Area)라고 한다. 서버를 외부로 노출시키지 않음으로써 높은 보안성을 유지할 수 있다. 이런 프록시를 Web Application Firewall 이라고 한다.
- TCP/IP의 송수신 원리 : 간단히 정리하자. 송신 시 프로세스는 송수신할 데이터를 저장할 메모리를 할당한다. 데이터는 TCP/IP 단에서 임시로 형성된 버퍼에 저장되었다가, 세그먼트 단위로 나뉘어진 후 패킷 단위로 캡슐화되며, 페킷이 프레임의 형태로 다시 캡슐화되어 네트워크 상으로 송신된다. 반대로 데이터를 수신할 경우 NIC에 들어온 페킷을 읽고 커널 단에 형성한 임시 버퍼에 데이터를 저장하게 된다. 버퍼에 저장된 데이터를 수신한 프로세스는 Stream의 형태로 읽어들인다. 특이하게도 2 번째 패킷을 보낼 때부터 송신부는 수신부의 신호를 기다리게 된다. 예를 들자면 1번 신호를 보낸 후, 수신단으로 부터 1번 신호를 받았다는 신호가 와야 2번 신호를 보내는 식이다. 네트워크 단에서 소모하는 대부분의 시간은 이러한 대기 시간이다.
대충은 이해했는 데, 뭔가 구체적인 느낌은 없어서 추가적인 학습이 필요할 듯 싶다. 책 한 권 빌려서 병행해 가면서 읽어야 할 것 같다.
반응형