컴퓨터 네트워크

컴퓨터 네트워크 2장 - 네트워크 애플리케이션의 원리

으엉어엉 2024. 4. 12. 13:29
728x90

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

스위치는 정보처리를 하지않는다 - > Host에서 이루어진다.

종단시스템(end System)에서 동작하도록 마든다.

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

애플리케이션 개발자는 네트워크 구조는 고정되어 있고 해당 애플리케이션에 특정 서비스 집합을 제공한다.

반면, 애플리케이션 구조는 애플리케이션 개발자가 설계하며, 애플리케이션이 여러 종단 시스템에서 어떻게 조직되어야 하는지를 알려준다

두가지 구조가 유명하다. 

클라이언트-서버(client-server) 구조

 

 

 

  • 항상 동작하고 있는 서버가 존재(언제 요청이 올지 모르니)하고, 클라이언트라는 다른 호스트들로부터 서비스 요청을 받는다.
  • 클라이언트는 서로 직접적으로 통신하지 않는다.(서버를 거쳐서 통신)
  • 서버는 잘 알려진 고정 IP 주소를 갖는다.
  • 서버가 클라이언트로부터 오는 모든 요청에 더 응답하는 것이 불가능할 때, 많은 수의 호스트를 갖춘 데이터 센터가 강력한 가상의 서버를 생성하는 역할로 사용된다. 보통, 10만개 정도의 서버를 갖추고 있다. (다수의 클라이언트 요청에 응답)
  • 클라이언트는 동적 IP 주소가 가능하다.

 

P2P 구조

 

  • 항상 켜져있는 서버가 존재하지 않는다.
  • 애플리케이션은 peer라는 간헐적으로 연결된 호스트 쌍이 서로 직접 통신하게 한다.
  • 자가 확장성을 가진다. 예를 들어, 파일 공유 애플리케이션에서는 각 피어들이 파일을 요구하여 작업 부하가 생기지만
    각 피어들은 파일을 다른 피어들에게 분배하여 시스템에 서비스 능력을 갖춘다.
  • 데이터 센터 등이 필요 없으므로 비용 효율적이다.
  • 대표적으로 토렌트같은 것이 있다.
장점 서버 의존성이 낮다
관리 비용이 낮다
자가 확장성이 높다.
단점 보안이 좋지 않다.
신뢰성이 떨어진다.
성능이 좋지 않다.

 

2.1.2 프로세스 간 통신

  • 프로세스는 종단 시스템(end system)에서 실행되는 프로그램이다.
  • 통신 프로세스가 같은 종단 시스템에서 실행될 때 그들은 서로 프로세스 간에 통신한다.
  • 프로세스 간의 통신을 위한 규칙은 종단 시스템의 운영체제에 따라 달라진다.
  • 2개의 종단 시스템에서 프로세스는 컴퓨터 네트워크를 통한 메시지 교환으로 통신한다.

 

클라이언트와 서버 프로세스

 

네트워크 애플리케이션은 네트워크에서 서로 메시지를 보내는 두 프로세스로 구성된다.

 

클라이언트와 서버 프로세스를 다음과 같이 정의한다.

두 프로세스 간의 통신 세션에서

  • 통신을 초기화(다른 프로세스와 세션을 시작하려고 접속을 초기화)하는 프로세스를 클라이언트(client)
  • 세션을 시작하기 위해 접속을 기다리는 프로세스를 서버(server)라고 한다.

간단히 말하면, 요청을 보내는 쪽의 프로세스를 보통 클라이언트라고 하고, 요청을 받는 쪽을 서버라고 한다.

P2P 구조에서 봤듯이, 클라이언트도 서버 프로세스가 될 수 있고, 서버도 클라이언트 프로세스가 될 수 있다. (서버와 클라이언트를 함께 운영하는 느낌)

 

프로세스와 컴퓨터 네트워크 사이의 인터페이스

프로세스는 소켓(socket)을 통해 네트워크로 메시지를 보내고 받는다. 

소켓은 컴퓨터 네트워크에서 프로세스 간 통신을 담당하며, 클라이언트와 서버 간에 데이터를 주고받는 데 사용된다.

프로세스가 메시지를 다른 호스트의 프로세스로 보내고 싶을 때, 그것은 소켓 바깥 네트워크로 메시지를 밀어낸다. 

플리케이션은 소켓을 사용하여 네트워크를 통해 서로 통신할 수 있다.

  • ex)클라이언트 애플리케이션은 서버 애플리케이션에 요청을 보내고, 서버 애플리케이션은 클라이언트의 요청에 응답다. 이러한 통신은 소켓을 통해 이루어지며, 각각의 소켓은 네트워크를 통해 데이터를 주고받는다.

 

 

  •  소켓은 호스트의 애플리케이션 계층과 트랜스포트 계층간의 인터페이스다.
  • 네트워크 애플리케이션이 인터넷에 만든 프로그래밍 인터페이스이므로, 애플리케이션과 네트워크 사이의 API라고도 한다.

프로세스 주소 배정

프로세스가 다른 수행되고 있는 다른 패킷으로 프로세스를 보내기 위해서는 수신 프로세스가 주소를 갖고 있어야 한다.

수신 프로세스를 식별하기 위해서는 두 가지 정보가 필요하다.

  1. 호스트의 주소 즉, IP 주소가 필요하다.
  2. 호스트 내의 수신 프로세스를 명시하는 식별자 즉, port 번호가 필요하다. 더 자세한 내용은 3장에서 다룬다.

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

  • 송신 측의 애플리케이션은 소켓을 통해 메시지를 보낸다.
  • 트랜스포트 프로토콜은 네트워크를 통해 그 메시지를 수신 프로세스의 소켓으로 이동시킬 책임이 있다.
  • 인터넷을 포함한 많은 네트워크는 트랜스포트 프로토콜을 하나 이상 제공한다.

트랜스포트 프로토콜이 그것을 이용하는 애플리케이션에게 제공할 수 있는 서비스는 무엇이 있을까?

 

신뢰적 데이터 전송(data integrity) (종합성, 완결성)

패킷들은 네트워크 내에서 손실될 수 있다.  ex) 라우터의 버퍼에서 overflow, 패킷의 비트가 잘못전송 되면 라우터에 의해 버려진다.

 

만약 프로토콜이 보장된 데이터 전송 서비스를 제공한다면 신뢰적 데이터 전송이라고 한다.

트랜스포트 프로토콜이 이 서비스를 제공할 때, 송신 프로세스는 데이터를 소켓으로 보내고 그 데이터가 오류 없이 수신 프로세스에 도착할 것이라는 확신을 갖는다.

트랜스포트 프로토콜이 이 서비스를 제공하지 않을 때 송신 프로세스가 보낸 데이터는 전혀 도착하지 않을 수 있다.

이러한 애플리케이션을 손실 허용 애플리케이션(실시간 비디오/오디오 애플리케이션 등이 대표적)이라고 한다.

 

처리율(throughput)

네트워크 경로를 따라 두 프로세스 간의 통신 세션에서 송신 프로세스가 수신 프로세스로 비트를 전달 할 수 있는 비율.

 

다른 세션들이 네트워크 경로를 따라 대역폭을 공유하고, 이 세션들이 생겼다 없어졌다 하기 때문에 가용한 처리율은 시간에 따라 변한다.

트랜스포트 프로토콜은 어느 명시된 속도에서 보장된 가용 처리율을 제공한다.

처리율 요구사항을 갖는 애플리케이션은 대역폭 민감 애플리케이션이라 하고, 현존하는 많은 멀티미디어 애플리케이션은 대역폭에 민감하다.

구사항이 없는 애플리케이션을 탄력적 애플리케이션(elastic apps)이라고 한다.

대역폭이 많으면 많을수록 좋다.

단위시간 당 일정량 이당 안오면 실행하지 않는다.

 

시간(timing)

트랜스포트 프로토콜은 시간 보장을 제공할 수 있다.

딜레이가 낮을수록 효과적이다.

효과적으로 전송하기 위해서는 엄격한 시간제한 조건이 요구된다.

 

보안(security)

송신 호스트에서 트랜스포트 프로토콜은 모든 데이터를 암호화할 수 있고, 수신 호스트에서 트랜스포트 프로토콜은 모두 해독할 수 있다.

보통 TCP를 애플리케이션 계층에서 강화하여 TLS로 보안 서비스를 제공한다.

 

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

 

TCP 서비스 (document 에서 많이 쓴다)

예시

 

 

연결 지향형 서비스

 

애플리케이션 계층 메시지를 전송하기 전에 TCP는 클라이언트와 서버가 서로 전송 제어 정보를 교환하게 한다.

 핸드 셰이킹(handshaking) 과정이 클라이언트와 서버에 패킷이 곧 도달할테니 준비하라고 알려주는 역할을 한다.

 

핸드셰이킹 단계를 지나면, TCP 연결이 두 프로세스의 소켓 사이에 존재한다고 말한다.

이 연결은 두 프로세스가 서로에게 동시에 메시지를 보낼 수 있기에 전이중 연결이라고 한다.

신뢰적인 데이터 전송 서비스

통신 프로세스는 모든 데이터를 오류 없이 올바른 순서로 전달하기 위해 TCP에 의존한다.

TCP는 애플리케이션의 한 쪽이 바이트 스트림을 소켓으로 전달하면, 그 바이트 스트림이 손실되거나 중복되지 않게 수신 소켓으로 전달한다.

 

혼잡 제어 방식

네트워크가 혼잡 상태에 이르면 프로세스의 속도를 낮춘다.  전송자가 수신자를 압도하지 않도록.

 

제공하지 않는것:  timing, minimum throughput guarantee, security


UDP 서비스 (Audio, video)

 

UDP는 최소의 서비스 모델을 가진 간단한 전송 프로토콜이다.

UDP는 비연결형으로 핸드셰이킹 과정이 없고, 비신뢰적인 데이터 전송 서비스를 제공하여 데이터가 전달되는 것을 보장하지 않는다.

 

UDP는 또한 혼잡 제어 방식을 포함하지 않아 프로세스의 속도 저하 없이 네트워크를 이용할 수 있다.

그러나 혼잡으로 인해 종단 간 처리율이 낮아져서 속도가 느려질 수 있다.

처리율이나 시간보장이나 보안은 하지 않는다. 


728x90