Application Layer: 두 판 사이의 차이
| 12번째 줄: | 12번째 줄: | ||
[[파일:ClientServer.png|대체글=Client-Server Architecture|섬네일|263x263픽셀|Client-Server Architecture]] | [[파일:ClientServer.png|대체글=Client-Server Architecture|섬네일|263x263픽셀|Client-Server Architecture]] | ||
==== | ====Client-server architecture==== | ||
client-server 아키텍쳐는 server와 client로 구성된다. | client-server 아키텍쳐는 server와 client로 구성된다. | ||
* server: 다른 host(client 등)들의 요청을 처리한다. | * server: 다른 host(client 등)들의 요청을 처리한다. | ||
| 21번째 줄: | 21번째 줄: | ||
** 항상 네트워크와 연결되어 있지는 않으며, 간헐적으로 연결된다.<ref>핸드폰의 비행기 탑승 모드가 그 예시이다.</ref> | ** 항상 네트워크와 연결되어 있지는 않으며, 간헐적으로 연결된다.<ref>핸드폰의 비행기 탑승 모드가 그 예시이다.</ref> | ||
** 동적인 IP 주소를 가지고 있기 때문에, client 사이에서의 직접적인 연결은 이루어지지 않는다.<ref>노트북은 wifi에 따라 그 IP주소가 바뀐다.</ref> | ** 동적인 IP 주소를 가지고 있기 때문에, client 사이에서의 직접적인 연결은 이루어지지 않는다.<ref>노트북은 wifi에 따라 그 IP주소가 바뀐다.</ref> | ||
client-server 아키텍쳐의 가장 큰 문제는 client 간의 통신에도 server가 필요할 뿐만 아니라, server에 대한 의존도가 높아 만약의 경우에 대한 그 위험이 매우 크다는 것이다. 하지만 최근에는 server의 성능이 비약적으로 상승함에 따라, 해당 아키텍쳐의 효율이 매우 높아졌다. | |||
[[파일:P2P.png|섬네일|263x263픽셀|P2P Architecture]] | |||
====P2P architecture==== | |||
고정되어 있는 server가 존재하지 않는다. 그 대신에 애플리케이션은 간헐적으로 연결되는 host간의 직접적인 통신을 이용한다. 이때 임의의 end system 사이의 직접적인 통신이 이루어지며, 이는 임의의 agent가 서버로서 기능을 할 수 있다는 것을 의미한다.<ref>하지만 여전히 각 peer들은 간헐적으로 네트워크와 연결되며, 유동적인 IP 주소를 가진다.</ref> 이때 각 peer는 다른 peer에게서 서비스를 요청하고, 다른 peer에게 서비스를 제공한다. 이러한 P2P 아키텍쳐의 가장 큰 특징 중 하나는 self scalability이다. 이는 새로운 peer가 다른 peer에게 서비스를 요구함에 따라 부하가 증가하더라도, 각각의 peer가 서비스 capacity를 증가시킨다는 것이다. 즉, 네트워크의 크기가 유동적으로 변화하며 상황에 맞추어 각 end system간의 통신을 제공한다. | |||
이러한 특징으로 인해 P2P 아키텍쳐는 비용 측면에서 효율적이다. 왜냐하면 client-server 아키텍쳐에 비해 infrastructure나 server bandwidth가 적게 필요하기 때문이다. 하지만, 매우 분산된 구조를 가지고 있기 때문에 신뢰성, 보안, 성능 면에서 client-server 아키텍쳐에 비해 약점을 가지고 있다. | |||
==각주== | ==각주== | ||
[[분류:컴퓨터 네트워크]] | [[분류:컴퓨터 네트워크]] | ||
2025년 3월 20일 (목) 13:58 판
상위 문서: 컴퓨터 네트워크
개요
network application(네트워크 애플리케이션)은 컴퓨터 네트워크의 존재 이유이다. 애플리케이션이 없었다면, 이를 지원하기 위한 네트워크 infrastructure와 protocol이 필요하지 않을 것이다. 이러한 애플리케이션들은 인터넷의 성공을 이끄는 원동력이며, 이를 통해 인터넷은 가정, 학교, 정부, 기업 등에 이미 필수적인 부분이 되었다.
이러한 네트워크 애플리케이션은 시대에 따라 순차적으로 개발되었다. 1970~1980년대에는 이메일과 같은 text 기반의 애플리케이션이 주가 되었다. 이후 1990년대 중반에 등장한 world wide web은 여러 웹 서비스 등을 제공하며 혁명적인 변화를 만들어내었다. 이후로도 remote login, P2P file 공유, 온라인 게임등 여러 application이 개발되었고, 그 외에도 voice over IP[1], streaming stored service[2], SNS 등의 여러 애플리케이션이 등장하며 인터넷의 발전을 가속화했다.
Creating a Network application
네트워크 애플리케이션 개발의 핵심은 서로 다른 end system에서 실행되며, 네트워크를 통해 communicate(통신)하는 프로그램을 작성하는 것이다. 예를 들어, web server software는 user device와 server라는 서로 다른 end system에서 실행되며, 네트워크를 통해서 상호간의 통신을 한다. 이때 중요한 점은 네트워크 애플리케이션이 네트워크를 이용할 때는 이미 만들어져 있는 core network의 infrastructure를 그래도 활용한다는 것이다. 이 때문에 소프트웨어를 작성할 때에는 네트워크의 core 부분에 대해 고려할 필요가 없으며, 마치 end system 간의 직접적인 연결이 이루어진 것처럼 고려하여 개발하면 된다는 것이다.[3] 이렇게 application software 설계를 end system에 제한하면 해당 설계를 더욱 빠르게 하고, 배포 또한 더욱 빠르게 할 수 있다.
Application archutecture

Client-server architecture
client-server 아키텍쳐는 server와 client로 구성된다.
- server: 다른 host(client 등)들의 요청을 처리한다.
- 항상 켜져있으므로, client는 서버와 언제나 통신할 수 있다.
- 고정되고 공개된 IP 주소를 가지고 있어서 이릍 통해 client이 서버와 통신할 수 있다.
- 또한 server가 과부화가 될 경우에는 data center를 통해 server를 확장할 수 있다.
- client: 서버와 통신하고자 하는 각 유저의 device에 해당한다.
client-server 아키텍쳐의 가장 큰 문제는 client 간의 통신에도 server가 필요할 뿐만 아니라, server에 대한 의존도가 높아 만약의 경우에 대한 그 위험이 매우 크다는 것이다. 하지만 최근에는 server의 성능이 비약적으로 상승함에 따라, 해당 아키텍쳐의 효율이 매우 높아졌다.

P2P architecture
고정되어 있는 server가 존재하지 않는다. 그 대신에 애플리케이션은 간헐적으로 연결되는 host간의 직접적인 통신을 이용한다. 이때 임의의 end system 사이의 직접적인 통신이 이루어지며, 이는 임의의 agent가 서버로서 기능을 할 수 있다는 것을 의미한다.[6] 이때 각 peer는 다른 peer에게서 서비스를 요청하고, 다른 peer에게 서비스를 제공한다. 이러한 P2P 아키텍쳐의 가장 큰 특징 중 하나는 self scalability이다. 이는 새로운 peer가 다른 peer에게 서비스를 요구함에 따라 부하가 증가하더라도, 각각의 peer가 서비스 capacity를 증가시킨다는 것이다. 즉, 네트워크의 크기가 유동적으로 변화하며 상황에 맞추어 각 end system간의 통신을 제공한다.
이러한 특징으로 인해 P2P 아키텍쳐는 비용 측면에서 효율적이다. 왜냐하면 client-server 아키텍쳐에 비해 infrastructure나 server bandwidth가 적게 필요하기 때문이다. 하지만, 매우 분산된 구조를 가지고 있기 때문에 신뢰성, 보안, 성능 면에서 client-server 아키텍쳐에 비해 약점을 가지고 있다.