다양한 application의 구조에 대하여 알아보자.
1. Server-Client
Server
- 서버는 항상 켜져 있는 호스트(always-on Host)이다. 모든 서버는 호스트이지만, 모든 호스트가 서버인 것은 아니다. → 네트워크에 연결이 확립된 모든 장치는 호스트의 자격이 있는 반면, 다른 장치(클라이언트)로부터의 연결을 수락하는 호스트만 서버가 될 수 있다.
- 영구적으로 고정된 주소 값을 가지며, 이를 IP address라 한다. 각 Server를 IP 주소로 구분한다.
Client
- 서버와 통신한다.
- 클라이언트 간에 직접 통신하진 않는다.
- 유동 IP(dynamic IP) 주소를 가진다.(고정 IP를 사용할 수도 있다.) → Internet을 사용할 시점에 받아온다.
- 항상 연결되어 있지 않고, 간헐적으로 통신할 수 있다.
- e.g. HTTP, IMAP, FTP
2. Peer-to-Peer(P2P)
- 항상 켜져 있는 서버(no always-on server)가 없다.
- 임의의 end-system들이 직접적으로 통신한다.
- 각 peer들이 서비스를 요청하기도 하고, 제공받기도 한다.
- Peer들은 간헐적으로 연결되고 IP 주소를 변경한다.
- 관리가 복잡하고 어렵다.
- e.g. P2P file sharing
3. Processes Communicating
호스트 내에서 실행 중인 program을 Process라 한다.
- 같은 호스트 내에서 두 프로세스가 OS에서 정의한 IPC(Inter-process communication)를 이용해 통신한다.
- 다른 호스트 간의 프로세스들은 메세지(Message)를 교환하여 통신한다.
- Client process : 통신을 시작하는 process
- Server process : 세션을 시작하기 위해 접속을 기다리는 process
- P2P 구조의 application들은 클라이언트 프로세스와 서버 프로세스를 가진다.
4. Sockets
Process는 소켓을 통해 네트워크로 메세지를 주고받는다.
Host의 application-layer와 transport-layer 간의 인터페이스
소켓을 문으로 비유하면, 보내는 과정(sending process)은 메세지를 문 밖으로 밀어내는 것이다.
메세지를 받기 위해, process는 반드시 식별자(identifier)가 있어야 한다. Host device는 유니크한 32-bit IP 주소를 가지고 있다.
Q. 프로세스를 식별하기 위해 프로세스가 실행되는 호스트의 IP 주소로 충분한가?
A. No. 많은 프로세스들은 같은 호스트에서 실행될 수 있다.
식별자(identifier)는 IP 주소와 호스트의 프로세스와 연관된 port number를 포함한다.
→ 서버가 동작하고 있는 IP 주소와 port 번호를 반드시 알아야 한다.
App은 어떤 transport 서비스가 필요할까?
App이 필요한 transport service에는 다음과 같은 것들이 있다.
1. Data integrity(데이터 무결성)
- 완전한 수명 주기를 거치며 데이터의 정확성과 일관성을 유지하고 보증하는 것이다.
- File transfer, Web transactions.. 과 같은 몇몇 app들은 100% 신뢰되는(reliable) 데이터 전송을 요구한다. → TCP
- TCP를 사용하면 시간은 늘어나지만, data가 더 정확하다.
- 다른 app들은 약간의 손실(loss)을 용인한다. → UDP
2. Timing
- 인터넷 전화, 멀티플레이 게임... 과 같은 app들은 지연시간(delay)이 거의 없어야 한다.
- 속도는 네트워크의 상황에 따라 다르기 때문에, 제어(control)할 수 없다.
3. Throghput(처리량)
- 주어진 시간에 얼마나 많은 data를 수신할 수 있는가? 에 대한 문제이다.
- 단위 시간당 처리할 수 있는 업무 단위량
4. Security
일반적인 app들에서 필요한 transport service를 예로 들면 다음과 같다.
Internet의 transport Protocol service
Internet의 transport protocol service에는 TCP, UDP 두 가지가 있다.
TCP
- 송·수신 프로세스 사이의 reliable 한 전송이다.
- Flow control
- 받을 수 있는 buffer의 크기가 제한되어 있기 때문에, 받을 수 있는 속도 이하로만 보내야 한다.
- Congestion control
- 네트워크로 들어가는 정보 소통량을 조절하여 네트워크가 혼잡해지지 않도록 조절하는 것이다.(3장에서 자세히)
- Connection-oriented(연결 지향)
- 클라이언트 프로세스와 서버 프로세스 사이에 setup이 필요하다.
- 제공하지 않는 것
- timing
- minimum throughput guarantee
- security
UDP
- 송·수신 프로세스 사이의 unreliable 한 전송이다. → 보낸 것과 받은 것이 다를 수 있다.
- 제공하지 않는 것
- timing
- throughput guarantee
- security
- reliability
- flow control
- congestion control
- connection setup
'컴퓨터망' 카테고리의 다른 글
[Network] Network layer (0) | 2022.07.04 |
---|---|
[CH.02] Web & HTTP (0) | 2022.04.14 |
[CH.02] Application Layer (0) | 2022.04.12 |
[CH.01] Protocol Layers, Service models (0) | 2022.04.11 |
[CH.01] Network Security (0) | 2022.04.10 |