KKanging

[Network] 네트워크 애플리케이션의 원리 본문

cs/컴퓨터네트워크

[Network] 네트워크 애플리케이션의 원리

천방지축 개발자 2024. 5. 29. 20:27

1. 네트워크 애플리케이션의 원리

저번 챕터에서 배웠듯이 애플리케이션 계층은 네트워크 코어에 해당하는 스위치나
라우터에서 작성하는 소프트웨어를 개발할 필요가 없음
- 호스트의 응용 프로그램만 개발하면 되므로, 응용 프로그램을 쉽게 개발하여 널리
보급되는 원동력을 가진다.

1.1 네트워크 애플리케이션 구조

서버- 클라이언트 아키텍처

서버 
- 항상 동작하는 호스트
- IP 주소가 고정
- 확장성 때문에 데이터 센터에 있는 경우가 많음
클라이언트
- 서버와 접속 및 통신
- 서버와 가끔식 연결
- IP 주소가 변경됨 ???
- 클라이언트 간의 직접 통신은 하지 않음

 

P2P 아키텍처

- 항상동작하는서버가없음
- 임의의호스트간의직접통신
- 피어(peer)는다른피어들에게서비스
- ‘요청’과서비스‘제공’을동시에수행
-- 자기확장성(self scalability):새로운피어는
- 새로운서비스를요구하지만새로운서비스 용량도제공
- 피어가간헐적으로연결되고IP 주소가 변경될수있음
- 고도의분산구조

스트리밍 앱에서 많이 사용하는 방식 예

스트리밍 앱을 예시로 든다면

많은 사용자에게 실시간으로 트래픽을 보내야한다

많은 트래픽은 많은 망사용료를 부담하게된다.(isp)

그래서 일반적으로 프로그램을 안깔게 하면 720p에 저화질 트래픽만 허용하고

프로그램을 깔면 서버가 클라이언트에게 트래픽을 보내고 클라이언트가
 다른 클라이언트에게 트래픽을 보내는 p2p 방식을 사용한다.

따라서 위 예제는 망사용료를 줄이고 사용자의 네트워크 자원을 쓰게된다

 

1.2 프로세스 간 통신

프로세스란

프로세스란 호스트에서 실행되는 프로그램을 의미

클라이언트 프로세스 : 통신을 시작하는 즉 세션을 초기화하는 프로세스
서버 프로세스 : 접속을 기다리는 프로세스

참고: p2p 구조를 사용하는 애플리케이션은 클라이언트 프로세스와 서버 프로세스가
모두 있음

 

프로세스와 네트워크 사이의 인터페이스 : 소켓

소켓이란 프로세스와 transport 사이의 인터페이스 역할을 한다.

프로세스에서 생성한 메시지를 네트워크 단계로 보내기위한 출입구 역할을 한다.

소켓의 애플리케이션 계층의 대한 통제는 개발자가 할 수 있지만
소켓의 transport 계층에 대한 통제는 개발자가 할 수 없다.
-> 즉 할 수 있는건 프로토콜 선택 버퍼 크기 선택 같은 계층 매개변수 설정만 가능

 

프로세스 주소 배정

프로세스가 목적 프로세스로 메시지를 보내기 위해서는 프로세스 호스트의 주소와
프로세스의 번호가 필요하다.

호스트의 주소: 32비트 IP 주소 
프로세스 번호: port 번호

 

1.3 애플리케이션이 이용 가능한 트랜스포트 서비스

트랜스포트 서비스는 여러가지가 있다.

각자 트랜스포트 서비스를 정할때 자신의 서비스에 적합한 트랜스포트를 고를 것이다.
다음과 같이 트랜스포트의  4가지 차원으로 분류해서 정해보자.

 

애플리케이션은 어떤 트랜스포트 서비스가 필요 ?

신뢰적 데이터 전송
- 트랜스포트 프로토콜이 이 서비스를 제공할 때, 송신 프로세스는 데이터를 소켓으로
 보내고 그 데이터가 오류 없이 수신 프로세스에 도착할 것이라는 확신을 갖는다.
 
 다만, 손실 허용 애플리케이션의 경우, 어느정도 데이터 손실을 허용할 수 있다.
시간보장
시간 보장
- 데이터 지연 시간이 짧아야 함 -> 인터넷 전화 ,게임 , ....
처리율
1장에서 배웠듯이 처리율은 대역폭에 의존적이다.
시간에 따라 처리율이 좋을 수도 안좋을 수도 있다는 뜻이다.
-> 일부 애플리케이션들은 처리율에 민감하다. 전화 같은 서비스들
 이를 대역폭 민감 앱
-> 어떤 애플리케이션은 처리율이 좋으면 좋은대로 적으면 적은대로 이용한다.
이를 탄력적 애플리케이션
보안

 

1.4 인터넷 전송 프로토콜이 제공하는 서비스

 TCP와 UDP 는 트랜스포트 프로토콜이다.
 
 2중 하나를 선택해서 개발을 하게된다.
 2개의 특징은 다음과 같다.
 
 TCP
 - 신뢰적임 : 패킷 노 유실 및 순서보장
 - 흐름제어
 - 혼잡제어
 - 연결지향형
 - 보안 x , 
 TCP는 보안을 신경쓰지 않기 때문에 SSL을 상화하여 계층을 더했다.
 
 UDP 
 - 순서보장 x
 - 신뢰적 x , 보안 x 
 
UDP를사용하는이유는?
1. 가볍다 ( 연결 안해도 됨)
2. 앱 전송속도 제어가능 ( TCP는 네트워크 혼잡도에 따라 속도를 낮출수 있음)
3. 중요한 기능은 app lqyer에서 구현하면 됨