-> 블로그 이전

[Network] Application Architecture

2022. 2. 6. 18:25Major`/컴퓨터 네트워크

Application Architecture

클라이언트 - 서버 구조 (Client - Server)

▶ 서버 (Server)

- 항상 켜져있는 Host :: 항상 인터넷에 연결되어 있다

- 고정 IP 주소

- Client가 많은 경우, 데이터 센터 형식으로 확장

 

▶ 클라이언트 (Client)

- 반드시 서버와 통신을 해야 한다 :: 클라이언트끼리 통신 X

- 유동 IP 주소 :: 인터넷에 연결될 때마다 변경 가능

- 인터넷에 연결되고 끊김을 반복한다

 

 

P2P 구조 (Peer to Peer)

Peer : Communication 하는 User의 호스트 

- 하나의 Peer는 다른 Peer에게 서비스를 제공하기도 하고 서비스를 요청하기도 한다 

  • 높은 자기 확장성(Self-Scalability) 

- 서버가 없고 Peer들끼리 알아서 통신을 한다

  • Peer는 Request + Service Capability 둘다 보유

- Peer들은 일반적인 User의 호스트이기 때문에 

  1. 인터넷에 연결되고 끊김을 반복 + 유동 IP주소 보유
  2. 관리가 어렵다

 

프로세스? (Client & Server)

클라이언트 프로세스

- 통신을 초기화하는 프로세스 (접속 초기화)

 

서버 프로세스

- Client Process의 접근을 기다리는 프로세스

 

클라이언트-서버 구조

- 클라이언트 : 클라이언트 프로세스 보유

- 서버 : 서버 프로세스 보유

 

P2P 구조

- Peer : 클라이언트 프로세스/서버 프로세스 둘다 가지고 있을 수도 있고 둘 중에 하나만 가지고 있을 수도 있다

 


 

소켓 (Socket)

Layer 1 ~ 4 : OS가 제어

Layer 5(Application) : App Developer가 제어

 

- Application Layer : 교환할 메시지를 생성

  • 해당 메시지를 Transport Layer에게 전달해달라고 부탁한다
  • 이떄 Application ↔ Transport 간에 교환을 위한 door가 존재한다
    • 해당 door : 소켓(Socket) 

- 해당 메시지의 최종 목적지 = 프로세스

  • 목적지는 IP주소(host 구분) + 포트번호(프로세스 구분)를 통해서 식별할 수 있다

 


 

Application-Layer가 필요로 하는 Transport-Layer의 서비스

(1) 데이터 무결성

- Data의 손실이 없는 보장된 Data 전송 서비스

 

(2) 시간 보장

- 특정 시간 내에 모든 Data를 전송하는 서비스

  • 온라인게임 / 화상전화

 

(3) 처리율

- 최소한의 처리율

  • ex) 롤 프레임 30ms/10ms :: 10ms를 선호

 

(4) 보안

- Application에게 하나 이상의 보안 서비스를 제공

  1. 송신 프로세스의 Data를 암호화
  2. 암호화된 Data를 해독해서 수신 프로세스에게 전달

 

 

Transport-Layer가 제공하는 서비스

TCP

(1) 연결지향형 서비스

- 서로 지속적인 통신을 통해서 Data의 신뢰성을 확보한다

  1. 프로세스들 간에 3-way handshake를 통해서 연결 확립
  2. Data 송수신
  3. 4-way handshake를 통해서 연결 종료

(2) 신뢰적 Data 전송

- 송수신 프로세스 간에 Data의 손실이 없이 올바른 순서로 Data를 전달

 

(3) 흐름 제어 (Flow Control)

- 송신 프로세스가 수신 프로세스의 Data 수신 속도에 맞춰서 송신

 

(4) 혼잡 제어 (Congestion Control)

- Network가 Congestion 상태에 이르면 프로세스의 전송 속도를 알아서 낮춘다

 

※ 제공하지 않는 서비스

- 시간 보장 

- 최소 처리율 보장

- 보안

 


 

UDP

- 비연결형이기 때문에 두 프로세스가 통신 전에 hanshake를 하지 않는다

  • 비신뢰적인 Data 전송 서비스 제공
  • Only 실시간 Application의 전송속도만을 위해 최선을 다한다
    • 혼잡 제어/패킷 오버헤드를 걱정할 필요가 없다

 

※ 제공하지 않는 서비스

- 혼잡 제어

- 흐름 제어

- 시간 보장 

- 최소 처리율 보장

- 보안