Reference - Computer Networking: a Top Down Approach
네트워크 기반 어플리케이션은 email, web, messenger, P2P file sharing, voIP, streaming stored video(ex. youtube) 등을 말한다. 이러한 네트워크 어플리케이션 개발을 위해 TCP, UDP, socket Interface 개념이 요구된다.
2.1 네트워크 어플리케이션이 가지는 주요 법칙
Network Application Architecture
먼저 네트워크 어플리케이션 구조를 알아보겠다. 일반적으로 아래 두 구조 중 하나를 따른다.
- Client-server architecture
server host에게 필요한 것을 요청하는 client와, 외부 host의 요청에 응답하여 서비스를 제공하는 항상 켜져있는 server로 나뉜다. 이 구조의 특징은 아래와 같다.
1. client가 직접적으로 통신하지 않고 반드시 server를 경유한다.
2. server는 고정된 IP를 가지며 client는 언제나 server에 요청을 보낼 수 있다.
- P2P architecture
개별 host가 peer로 서로 직접적으로(peer to peer) 통신하는 구조이다. 파일 공유, 화상 회의 서비스 등이 예시이다.
이 구조의 특징은 아래와 같다.
1. 각 peer가 client이면서 동시에 server다. peer끼리 간헐적으로 통신하며 변동 IP를 갖는다.
2. 그렇기에 서비스 확장성이 용이하며(self-scalability) 비용 효율적이다.
Process Communication
네트워크에서 실제 통신하는 것은 프로그램이 아닌 프로세스로 본다.
네트워크 어플리케이션은 서로 message를 주고 받는 여러 쌍의 process 세트로 구성된다.
세션을 시작하려고 접속을 초기화하는 프로세스를 client(ex. browser), 세션을 시작하기 위해 접속을 기다리는 프로세스를 server(ex. web server)로 본다. P2P 네트워크의 프로세스는 client면서 동시에 server가 될 수 있다.
메세지를 송수신하는 프로세스는 네트워크와 상호작용할 때 반드시 socket Interface를 거쳐야한다. application layer(L5)와 transport layer(L4) 사이에 존재하며, 각 layer를 잇는 문이라 생각하면 편하다. 어플리케이션 개발자는 socket 라이브러리 이용자의 입장이다. socket이 기반하는 네트워크 구현 관련 로직은 제어할 수 없다.
한 호스트상에서 수행되고 있는 프로세스가 패킷을 다른 호스트의 프로세스로 보내기 위해서는 Address가 필요하다.
이때 필요한 두가지 정보가 32-bit IP 주소와 목적지 port number다. 여러 프로세스가 동일한 호스트에게서 동시에 실행될 수 있기에 IP 주소와 더불어 port number까지 필요해졌다. 어플리케이션의 포트 번호는 보통 정해져있는데, 웹서버는 80, 메일 서버는 25다.
Transport Service that an App Needs
어플리케이션이 필요로 하는 transport service의 종류(=프로토콜)은 다음과 같다.
- data integrity
packet은 loss가 생길 수 있다. 데이터의 무결성이 중요한 어플리케이션의 경우 이를 보장해야한다. ex) 파일 전송
이를 reliable data transfer라 한다. 반면 loss-tolerant한 어플리케이션도 있는데, 영상 스트리밍 서비스가 그 예다. (buffering 허용)
- throughput
인터넷 전화 서비스와 같이, 일정 수준 이상의 throughput이 유지되어야 하는 (음성 인코딩 대역폭) 어플리케이션이 있다.
반면 throughput에 민감하지 않는 email과 같은 어플리케이션을 elsatic app이라 부른다.
- timing
throughput과 유사하게 최대 지연 시간을 보장해야하는 어플리케이션이 있다.
실시간 다자간 게임과 같은 interactive application이 그 예이다.
각각의 주요 어플리케이션이 요구하는 Transport service는 아래와 같다.
Internet Transport Protocols
인터넷은 아래의 2개 Transport protocol을 제공한다.
- TCP (전송 제어 프로토콜)
특징 : reliable data transfer, congestion control(network가 과부하됐을 때 대역폭 제한(=throttle)), flow control(수신자가 packet을 지나치게 받지 않도록 조절), connection oriented(연결 지향 - 두 프로세스가 application layer의 message를 교환하기 전에 transport layer를 제어하는 정보를 먼저 교환. 이 과정을 handshake라 하며 연결 중 packet loss에 대비한다).
그리고 throughput, timing, security는 보장하지 않는다.
- UDP (유저 데이터그램 프로토콜)
특징 : unreliable data transfer, handshake가 없는 비연결성. 그 외 throughput, timing 등 모든걸 보장하지 않는다. 하지만 흐름 제어가 없기에 간단하고 빠르다. video streaming application 같이 신뢰성보다 속도가 중요한 서비스에 사용된다.
주요 어플리케이션의 transport protocol은 아래와 같다.
Securing TCP
TCP 자체에는 보안 서비스가 없으므로, application-layer 프로토콜인 SSL을 추가해서 암호화/복호화 및 인증과 데이터 무결성 검증을 실시한다.
'CS > 네트워크' 카테고리의 다른 글
[네트워크] 2. Application layer (4) - P2P / Video streaming and CDN (0) | 2023.10.11 |
---|---|
[네트워크] 2. Application layer (3) - HTTP / SMTP / DNS (0) | 2023.10.09 |
[네트워크] 2. Application layer (2) - Performance & Requirements (1) | 2023.10.09 |
[네트워크] 1. 컴퓨터 네트워크와 인터넷 (0) | 2023.10.06 |
[네트워크] RESTful API란? / REST의 모든 것 (0) | 2023.02.20 |