Application Architectures
1) 클라이언트-서버 구조
서버 :
- 항상 네트워크에 연결되어 있으며, 이를 Always-on Host라고 한다.
- 고정 IP 주소 (Permanent IP Adress)를 가진다.
클라이언트 :
- 서버와 소통하면서 네트워크에 연결되었다 끊겼다 함.
- Intermittently Connected
- 동적 IP 주소를 가질 수 있으며, 바뀔 때 서버에게 알려주어야 한다.
2) P2P 구조
- 간헐적으로 연결되는 호스트인 peer가 서로 데이터 교환을 할 수 있는 구조.
- 개별적으로 서비스를 요청 및 제공하며, 관리가 복잡하다.
- 임의의 End System이 직접 소통함. (peer)
- 자가 확장성(Self Scalability)
자체적으로 확장성이 있고, peer가 클라이언트와 서버의 역할을 동시에 하므로 새로운 peer가 참여할 때마다
capacity가 증가하긴 하지만, 전체적인 능력이 향상된다.
Process
프로세스는 호스트에 현재 실행되고 있는 프로그램으로 두 가지 소통 방법이 있다.
(1) 같은 호스트 : Inter Process Communication(IPC)를 통해 통신한다.
- OS에 의해 정의.
- 공유 메모리 사용.
(2) 다른 호스트 : 메세지 사용
- 물리적으로 떨어진 형태로, 네트워크를 통해 주고받는다.
Client Process : 통신을 시작하는 프로세스.
Server Process : 연결을 기다리는 프로세스.
Sockets
소켓 : 메세지를 주고받는 통로.
- 프로세스는 소켓을 통해 메세지를 주고받는다.
- 응용 계층과 전송 계층 사이에 존재하면 인터페이스 역할을 한다.
- Application과 Network 사이의 API를 담당한다.
- 네트워크 프로그래밍을 한다는 것은 소켓 프로그래밍을 한다는 것과 유사하다.
Addressing Processes
두 프로세스가 메세지를 주고 받기 위해서는 식별자가 필요하다.
각 호스트는 32-bit의 고유한, 유일하게 식별 가능한 IP address를 가지는데, 이것만으로는 두 호스트가 메세지를 주고 받을 수 없다.
이때 필요한 것이 포트 번호이다.
자주 쓰이는 포트 번호는 HTTP 서버가 가지는 80번, 메일 서버가 가지는 25번 포트 등이 있다.
따라서, 프로세스 간 통신에는
IP Address + Port Number가 필요하다.
Application Layer Protocols
Application 간 주고받는 메시지로 프로세스가 메시지를 보내고 응답하는 시기 또는 방법에 대한 정보를 제공한다.
- Syntax : 메세지의 필드, 설명 방법 정의
- Semantics : 필드에 있는 정보의 의미.
오픈 프로토콜(HTTP, SMTP 등)은 RFC에 정의되어 있다.
(1) Data Integrity : 데이터 전송에 손실과 오류가 없음을 보장.
-100% 신뢰성(Reliable)이 필요한 데이터 전송 시 필요.
(2) Throughput : 처리량.
(3) Timing : 도착 시간. 딜레이가 적을수록 효율적.
Internet Transport Protocols Services
1) TCP
- 신뢰 가능한 전송. Reliable Transport
- Sender와 Receiver 간 데이터 100% 전송
- 연결 지향형 : 클라이언트와 서버가 테이터를 주고받기 전 연결을 만들어야 함.
2) UDP
- 비신뢰적 전송. Unreliable Transport. 손실이 발생할 가능성.
- 비연결형.
'네트워크 > Application Layer' 카테고리의 다른 글
[네트워크] Application Layer (2) - HTTP (1) | 2022.11.01 |
---|