네트워크 - Principles of Application
컴퓨터 네트워크를 공부하면서 정리를 한 내용들 입니다.
-참고 K-mooc 부산 대학교 유영환 교수님 : 컴퓨터 네트워크 강의
Principles of Application
애플리케이션은 우리 말로 하면 응용 프로그램입니다.
응용 프로그램이란 컴퓨터를 사용 할 때 직접적으로 다루는 프로그램
입니다.
대표적인 응용 프로그램 : 문서 편집을 위한 MS office, 한글 프로그램들 등
윈도우나 리눅스 같은 프로그램은 그것도 프로그램이긴 하지만
우리가 직접적으로 윈도우나 리눅스를 사용 하기 위해서 컴퓨터를 사용하는 것은 아닙니다.
프로그램들을 사용 하기 위해서 그 바탕으로 윈도우즈나 리눅스 같은 프로그램들을 깔아 놓는 것입니다.
윈도우나 리눅스 같은 프로그램들을 운영 체제 프로그램
이라고 합니다.
다양한 응용 프로그램 중에서 네트워크 응용에 한정해서 살펴 보도록 하겠습니다.
가장 대표적인 것으로는 네트워크가 연결 되면서 가장 최초로 사용했던 네트워크 프로그램(이메일
)이 있습니다.
네트워크 응용 프로그램의 특징을 살펴 보면 이런 프로그램들은 end system
,
사용자 컴퓨터 또는 사용자 스마트폰 같은 사용자의 디바이스에서 돌아간다는 것입니다.
그리고 이 네트워크에 있는 end system들
에서 동작을 하면서 네트워크를 통해서 다른 end system
과 통신을 합니다.
Application Architectures
크게 두 종류로 살펴 볼 수 있는데, 먼저 사용했던 것은 클라이언트 서버 모델(Client-server model)
입니다.
그림의 왼쪽에서 보시는 것 처럼 중간에 하나의 서버가 있고, 많은 클라이언트들을 이 서버가 지원을 합니다.
반면에 2000년대 들어서 나온 것이 P2P 모델입니다.
P2P 모델에서는 이 네트워크에 참여하는 모든 디바이스들이 데이터 소비자이기도 하지만 데이터 제공자이기도 합니다.
Client-Server Model
서버의 특징
-
클라이언트 서버 모델에서 데이터를 제공하는 유일한 장치는 서버입니다.
-
서버는 반드시 고정된 IP주소를 가지고 있어야 합니다.
-
요즘에는 데이터 센터라는 곳에 서버를 중복해서 두어서, 여러 개를 두어서 서비스를 하게 만듭니다.
클라이언트의 특징
-
사용자가 필요로 할 때만 서버에 접속 하면 됩니다.
-
서버와 다르게 주소가 변동 되어도 상관 없습니다.
-
클라이언트 서버 모델에서의 클라이언트들은 서로 통신을 하지 않습니다.
Peer-to-Peer Model
- P2P 모델의 구조는 서버가 특정한 하나의 서버가 존재 하지 않습니다.
각 개별 디바이스들이, 개별 피어들이 모두 클라이언트가 될 수도 있지만 서버가 될 수도 있습니다.
자기가 데이터를 누군가한테서 받으면 그 때는 자기가 클라이언트인 것이고
누군가에게 데이터를 제공하면 그 때는 서버의 역할을 합니다.
-
개별 피어들은 모두 필요 할 때만 접속을 하고 자신의 주소도 변경이 가능합니다.
-
각 디바이스들은 서로 직접적으로 연결 되어 통신을 합니다.
self scalability
P2P 모델의 특징은 self scalability
입니다.
scalability
는 번역 하면 확장성을 뜻합니다.
클라이언트 수가 많아지더라도 서비스를 계속 지속적으로 안정적으로 할 수 있습니다.
클라이언트 서버 모델과 비교를 해 보면 클라이언트 서버에서는 하나의 서버가 있고
클라이언트가 기하급수적으로 커지면 그 만큼 서버의 오버헤드가 늘어나는 것입니다.
그래서 서버가 감당 할 수 없을 정도의 클라이언트 리퀘스트가 들어오면 서버가 중단이 되는 것이죠.
이것은 DDoS의 기본 구조와 유사합니다.
그런데 P2P 모델에서는 애초에 하나의 서버가 존재하지 않을 뿐만 아니라
어떤 새로운 피어가 네트워크에 접속을 한다면 피어의 수가 늘어나는 만큼 서비스 하는 용량도 같이 늘어나서
피어의 수 증가로 인한 데이터 요구량도 늘어나지만 거기에 맞춰 데이터 용량도 늘어나기 때문에 언제나 scalable한 그러한 구조를 가지고 있습니다.
Application Protocol
애플리케이션 레이어 프로토콜에서 유명한 것들을 살펴보면 HTTP와 SMTP같은 것이 있고
또 스카이프(skype)에서 사용하는 프로토콜이 있습니다.
그런데 이렇게 아래 위로 나누어 놓은 이유는 HTTP나 SMTP는 오픈 프로토콜(open protocols)
이라고 해서
프로토콜의 전체 규칙이 표준화 되어서 공개 되어 있습니다.
누구나 이 도큐먼트에 따라서 자기의 메시지를 작성하면 서로 통신을 할 수 있습니다.
반면에 우리가 인터넷 전화로 많이 쓰이는 스카이프(skype)같은 경우에는 스카이프 장치들이 어떤 프로그램을 깔게 합니다.
그러면 이 스카이프에 고유의 프로토콜을 갖고 있습니다.
그래서 우리가 스카이프 프로그램을 깔지 않고 만든 프로그램으로는 통신을 하기가 어려운 것이죠.