네트워크 어플리케이션
- 다른 종단 시스템에서 동작
- 네트워크를 통해 서로 통신
웹과 웹서버가 인터넷을 통해서 서로 통신을 하는 것
즉 인터넷 상에서 원격지에 있는 HOST에서 종단 시스템에서 동작하는 응용계층에서의 프로그램이 서로 인터넷을 통해서 네트워크를 통해서 상호작용을 하게 됩니다.
그리고 중요한 사실 중에 하나가 네트워크 코어 부분에서는 응용계층 프로토콜이 구현되지 않기 때문에 네트워크 장비에서 동작하는 어플리케이션어 만들 필요가 없습니다.
어플리케이션 ARCHITECTURE
클라이언트-서버 패러다임
인터넷에서의 가장 대표적인 네트워크 서비스 아키텍쳐입니다. 네트워크 어플리케이션은 두 가지의 역할로 구분이 되는데 이는 클라이언트와 서버입니다.
서버는 클라이언트에게 서비스를 요청하는 부분을 서버라고 합니다. 항상 클라이언트로부터 요청이 오면 그거에 대한 서비스를 제공합니다. 서버는 항상 동작하고 있어야하고 고정IP를 가집니다.
클라이언트는 서버와 접속을 개시하는 것으로 서버로부터 서비스를 요청합니다. 간혈적으로 접속해서 서비스 요청을 하면 되는 것이며 일반적으로 클라이언트들은 동적 ip 즉 계속 할 때마다 IP주소가 변경되는 동적 IP주소를 가집니다. 대표적인 경우 웹 브라우저가 클라이언트의 역할을 하게 됩니다.
중요한 것은 서버와 클라이언트가 고정된 역할을 합니다. 서버는 계속 서버역할만 하고 클라이언트는 클라이언트 역할만 합니다.
Pure P2P architecture
순수 P2P의 경우 서버를 가지지 않는 항상 동작하는 구조가 됩니다. 두 통신계체가 상호작용을 하는데 어떤 한 개체가 서버역할을 하고 다른 하나가 클라이언트를 하는 것이 아닌 어떤 상황에선 HOST1이 클라이언트 역할을 할 수 있고 어느 시점에는 HOST2가 서버 역할을 하는 경우가 있습니다.
그때그때 따라서 역할이 서버일수도 있고 클라이언트일 수도 있기 때문에 이 개체를 클라이언트를 PURE라고 합니다. 직접적으로 두 end system이 직접적으로 상호작용을 합니다.
pure가 다른 pure에게 서비스 요청을 하면 해당되는 사용자 peer가 제공된 서비스를 제공을 하게 됩니다. 순수 p2p는 고정된 서버 역할을 하는 개체가 없기 때문에 확장성이 좋으며 대부분의 peer는 간혈적으로 인터넷에 연결되며 계속적으로 변하는 IP ADDRESS를 가집니다. 하지만 관리가 어렵습니다.
EX) Gnutella
Hybrid architecture( client-server and P2P)
관리 측면이 어렵기 때문에 구현과 관리를 쉽게 하기 위해 클라이언트를 결합한 것입니다.
Napster
파일에 대한 전송은 P2P가 순수 전송하지만 검색을 할때는 클라이언트 서버 방식으로 하게 됩니다.
Instant messaging
실제 사용자들간에 채팅은 P2P 방식으로 이루어집니다. 하지만 로그인했는지 Presence detection/location은 Centralized 로 됩니다.
Skype
사용자들간에 통화는 P2P로 이루어지고 관리같은 부분은 centralized server 방식으로 이루어지게 됩니다.
프로세스 커뮤니케이션
프로세스 : 호스트에서 동작하는 프로그램
동일 호스트 내에서 두 프로세스는 inter-process communication줄여서 IPC라고 얘기를 합니다. 프로세스간 통신이라고 보시면 됩니다.
이 IPC는 운영체제에 의해서 관리가 됩니다. 다른 호스트에서 수행되는 프로세스들은 응용 계층 프로토콜을 통해서 통신을 합니다. 즉 네트워크를 통해서 메시지 교환으로 통신을 하는 것인데요.
그리고 프로세스는 크게 client, server process 로 구성할 수 있습니다.
- Client process : 통신을 시작하는 프로세스
- Server process : 클라이언트 프로세스로부터 요청을 대기하는 프로세스
P2P architecture의 어플리케이션은 두 가지를 모두 가집니다. client와 server process를 모두 가집니다.
소켓
프로세스는 소켓을 통해 메시지를 송수신합니다.
소켓은 호스트내의 응용 계층과 전송 계층 사이의 인터페이스로
어플리케이션과 네트워크 간의 API 입니다.
문 밖으로 메세지를 던져놓으면 문 밖에 통신 인프라가 있어서 네트워크 인프라가 있기 때문에 이것을 상대방까지 수신 측 프로세스까지 메세지를 전달해준다고 생각하시면 됩니다.
응용계층의 프로세스가 있는데 이것이 통신을 할 때 전송측 프로세스가 수신측 프로세스에 메세지를 보내야한다.
전달한 내용을 소켓에 주면 끝입니다. 전달할 메세지를 소켓에 주면 전송인프라가 있어서 이 전송인프라가 수신측에게 전달해주는 방식입니다. 수신측 프로세스도 마찬가지로 어떤 메세지를 읽을 때는 소켓을 통해 READ만 하면 됩니다.
여기서 어플리케이션 프로세스는 개발자가 컨트롤 해주면 되고 나머지 하위계층은 운영체제가 알아서 합니다. 개발자는 하위계층에 신경을 쓸 필요는 없습니다.
APPLICATION - TRANSPORT - NETWORK - LINK - PHYSICAL
어플리케이션 개발자가 전송 계층에 대해 가지는 제어
- .전송계층의 프로토콜을 무엇을 쓸지
- 버퍼와 세그먼트 크기 등 조정
Addressing process
프로세스가 메세지를 수신하기 위해선 식별자가 필요합니다. 식별자가 있어야 해당되는 개체의 어떤 메세지를 전달할 수 있습니다. 엄청나게 많은 네트워크 어플리케이션이 있는데 특정 호스트의 어플리케이션 프로세스를 불러와야 할 때 어떻게 구별해야 하냐에 대한 고민의 정답이 Addressing process입니다.
Identifier로 찾고 이는 32-bit ip address를 모든 호스트들이 unique한 IP주소를 가지게 됩니다. 각 호스트가 IP Address를 가집니다.
여러개의 프로세스가 같은 호스트에 동작하고 있기 때문에 특정 호스트를 구별을 했다고 하더라도 그 운영체제에서 동작하고 있는 특정 프로세스를 구별을 해주어야 합니다.
즉 호스트를 식별하는 32비트 외에 추가적인 정보가 필요한 것입니다.
인터넷에서는 이 ip주소와 포트 넘버를 묶어서 하나의 식별자로 사용합니다. 그래서 특정 프로세스를 구별하기 위한 Identifier는 IP address와 포트 넘버로 구성이 됩니다.
- HTTP server : 80
- Mail server : 25
'IT 프로그래밍 > 컴퓨터네트워크' 카테고리의 다른 글
[컴퓨터 네트워크] 이메일 포맷 (2) | 2024.10.03 |
---|---|
[컴퓨터네트워크] FTP 프로토콜 , e-mail 프로토콜 (1) | 2024.10.03 |
[컴퓨터네트워크 3.1] 프로토콜 레이어링과 데이터 (0) | 2024.09.25 |
[컴퓨터네트워크 part3-1] 프로토콜 계층 (1) | 2024.09.25 |
[컴퓨터네트워크 part3-1] 인터넷에서의 지연과 경로 (0) | 2024.09.24 |