티스토리 뷰
■ 네트워크 애플리케이션
● 네트워크 응용 프로그램에는 어떤 것들이 있는가?
- 이메일
- 웹 브라우저
- SNS
- 메신저 프로그램
- 온라인게임
- 스트리밍 비디오 서비스(유튜브, 넷플릭스)
● 네트워크 응용 프로그램의 특징
이런 프로그램들은 end system, 사용자 컴퓨터 또는 사용자 스마트폰과 같은 사용자의 디바이스에서 동작한다. 그리고 이 네트워크에 있는 end system에서 동작하면서 네트워크를 통해 다른 end system과 통신을 한다. 네트워크 응용 프로그램은 중간에 있는 라우터와 같은 인터넷 토킹 장비에 설치되어 있을 필요는 없다. 왜냐하면 라우터는 단순히 end system 사이에 데이터를 전달하는 역할만을 수행하기 때문이다. 그리고 응용 프로그램들은 랩탑이나 스마트폰 같은 end system의 운영체제에 맞추어서 개발이 된다.
■ 네트워크 애플리케이션 구조
● 2가지 종류의 네트워크 애플리케이션 구조
네트워크 애플리케이션들의 구조는 크게 두 종류로 나눌 수 있다. 하나는 위 그림의 왼쪽에 있는 클라이언트 서버 모델(Client-server model)이다. 그림에서 보다시피 중앙에 하나의 서버가 있고 주변에 있는 나머지 클라이언트들을 서버가 지원한다. 각 클라이언트들은 서버에 데이터를 요구하고 서버는 거기에 대한 응답으로 데이터를 전달해준다. 클라이언트 서버 모델에서는 서버가 유일하게 데이터를 제공하는 역할을 담당한다.
반면에 2000년대 들어서 나온 것이 P2P 모델이다. P2P 모델에서는 네트워크에 참여하는 모든 디바이스들이 데이터 소비자이기도 하지만 동시에 데이터 제공자이기도 하다. 그래서 위의 오른쪽 그림처럼 서로 연결이 되어서 데이터를 받을 수도 있고 줄 수도 있는 형태로 되어 있다.
● 클라이언트 서버 모델 (Client server model)
클라이언트 서버 모델에 대해서 더 자세히 알아보자. 클라이언트 서버 모델의 특징은 서버가 항상 켜져(Always-on) 있어야 한다는 것이다. 만약 서버에 어떤 클라이언트가 언제 접속할 지 미리 알고 있다면 미리 켜져있을 필요가 없을 것이다. 하지만 클라이언트 입장에서 그것을 알 수 없기 때문에 서버는 항상 켜져 있어야만 언제 어디서 요청이 들어오더라도 응답할 수 있다.
그리고 서버는 반드시 고정된 IP 주소를 가지고 있어야 한다. IP 주소라는 것은 편지를 주고 받을 때의 주소와 같아서 이 IP 주소가 있어야만 서버를 찾을 수 있다. 그런데 이 주소가 계속 변동이 된다면 클라이언트들은 서버에 데이터를 보낼 수 없을 것이다.
과거에는 하나의 서버가 충분히 감당할 수 있을만큼의 클라이언트 수만 존재했다. 하지만 인터넷 사용자가 증가함에 따라 서버 입장에서 클라이언트 수가 매우 많아지게 되었다. 그래서 하나의 서버로만 서비스하기에는 버거워졌고 많은 수의 클라이언트들을 감당하기 위해 요즘은 데이터 센터라는 곳에 서버를 여러 개 두어서 서비스를 하고 있다.
반면에 클라이언트는 사용자가 필요할 때만 서버에 접속하면 되기 때문에 항상 켜져있을 필요가 없다. 그리고 클라이언트는 서버와 다르게 IP 주소가 변경되어도 상관 없다. 왜냐하면 클라이언트 서버 모델에서의 특징은 항상 클라이언트가 먼저 데이터를 요청하고 서버는 그에 응답하는 일만 하기 때문이다. 그래서 클라이언트는 서버에 데이터를 요청할 때 자신의 IP 주소를 넘겨주면 서버는 거기에 담겨져 있는 IP 주소를 확인하고 클라이언트에게 응답할 수 있다. 그리고 클라이언트 서버 모델에서의 클라이언트들은 서로 통신을 하지 않으며, 이것은 다음에 설명할 P2P 모델과의 차이점으로 볼 수 있다.
● P2P(Peer-to-peer) 모델
P2P 모델에서는 특정한 하나의 서버가 존재하지 않는다. 각 개별 디바이스들, 개별 피어들이 모두 클라이언트가 될 수도 있지만 서버가 될 수도 있다. 자기가 데이터를 누군가로부터 받으면 그 때는 자기가 클라이언트인 것이고 누군가에게 데이터를 제공하면 그 때는 서버의 역할을 하는 것이다. 그래서 P2P 모델에서는 애초에 하나의 서버가 존재하지 않기 때문에 항상 켜져 있는 서버가 없는 것이고 개별 피어들은 모두 필요할 때만 접속을 하고 자신의 IP 주소도 변경할 수 있다.
P2P 모델의 특징을 self scalability라고도 하는데 scalability는 우리 말로 번역하면 확장성이라는 뜻이다. 클라이언트 수가 많아지더라도 서비스를 계속 안정적으로 운영할 수 있다는 뜻이다. 클라이언트 서버 모델에서는 클라이언트 수가 많아지면 그만큼 서버가 처리해야 하는 양이, 오버헤드가 늘어난다는 의미이다. 그래서 서버가 감당할 수 없을 정도의 클라이언트 요구가 들이닥치면 서버가 중단되고 이것이 DDoS 공격의 원리이다.
그런데 P2P 모델에서는 애초에 하나의 서버가 존재하지 않을 뿐만 아니라 어떤 새로운 피어가 네트워크에 접속한다면 이 피어는 데이터에 대한 소비자이기도 하지만 동시에 공급자이기도 하다. 그래서 피어의 수가 늘어나는만큼 서비스 할 수 있는 용량도 같이 늘어나서 언제나 scalable한 구조를 가지고 있다. 이것이 클라이언트 서버 모델에 비해 P2P 모델이 아무리 클라이언트 수가 많아지더라도 안정적으로 서비스 할 수 있는 원인이 되는 것이다.
※ 본 정리 내용은 부산대학교 유영환 교수님의 컴퓨터 네트워킹 수업을 정리한 것입니다.
※※ 강의에 사용된 교재 : [Computer Networking A Top-Down Approach 7th edition / Jim Kurose, Keith Ross]
'컴퓨터과학 이론 > 컴퓨터 네트워크' 카테고리의 다른 글
[컴퓨터 네트워크] 16. 웹과 HTTP (1) (0) | 2021.10.16 |
---|---|
[컴퓨터 네트워크] 15. 네트워크 애플리케이션의 원리 (2) (0) | 2021.10.13 |
[컴퓨터 네트워크] 13. 인터넷의 역사 (2) (0) | 2021.09.11 |
[컴퓨터 네트워크] 12. 인터넷의 역사 (1) (0) | 2021.09.10 |
[컴퓨터 네트워크] 11. 네트워크 보안 (0) | 2021.09.09 |
- Total
- Today
- Yesterday
- 서블릿
- C++
- 컴퓨터과학
- 코딩테스트
- 알고리즘
- 코딩
- 컴퓨터기초
- 알파넷
- 자바
- 프로그래밍
- TCP
- 백준 풀이
- C언어
- jsp
- java
- 컴퓨터
- 컴퓨터공학
- 네트워크
- Servlet
- 컴퓨터이론
- 컴퓨터 네트워크
- 코딩 테스트
- 백준
- 컴퓨터과학과
- 코드 리뷰
- 알고리즘 문제
- 컴퓨터공학과
- It
- 인터넷
- 웹개발
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |