Application Layer (1)

ByeongUk·2024년 10월 1일
0

네트워크

목록 보기
1/2
post-thumbnail

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

네트워크 애플리케이션 개발의 중심은 다른 위치의 종단 시스템에서 동작하고 네트워크를 통해 서로 통신하는 프로그램을 작성하는 것이다. 예를 들어, 넷플릭스 같은 애플리케이션에는 사용자의 스마트폰, 태블릿, 컴퓨터상에서 실행되는 넷플릭스 제공 프로그램 과 넷플릭스 서버 호스트에서 실행되는 넷플릭스 서버 프로그램 이 존재한다. 이 서버들은 대부분 데이터 센터에 위치한다.

 

애플리케이션의 구조

  • 클라이언트-서버 구조 : 클라이언트-서버 구조에서 서버는 클라이언트라는 다른 많은 호스트들의 서비스 요청을 받고, 항상 켜져 있어야 한다. 추가로 영구적인 IP 주소를 가지고 있고 하나의 서버 호스트가 모든 요청에 응답하는 것은 불가능하기에 데이터 센터가 만들어졌다. 클라이언트는 서버로부터 서비스를 받고 동적 IP 주소를 가질 수 있고, 다른 클라이언트들끼리 직접적으로 통신할 수 없다. 반드시 서버를 거쳐야 한다.

  • P2P 구조 : 이 구조에서는 항상 켜져 있는 인프라 스트럭처 서버에 최소로 의존한다. 대신, 애플리케이션은 피어(Peer)라는 간헐적으로 연결된 호스트 쌍이 서로 직접 통신하게 한다. 이 구조의 가장 주목할 특성은 자가 확장성(Self-scalability) 이 있다는 점이다. 예를 들어, P2P 파일 공유 애플리케이션에서는 비록 각 피어들이 파일을 요구함으로써 작업 부하를 만들어내지만 각 피어들은 또한 파일을 다른 피어들에게 분배함으로써 그 시스템에 서비스 능력을 추가한다. 피어들은 간헐적으로 연결되고 IP 주소가 바뀐다.

 

프로세스 간 통신

프로세스는 종단 시스템에서 실행되는 프로그램이다. 통신 프로세스가 같은 종단 시스템에서 실행될 때 그들은 서로 프로세스 간에 통신을 한다. 2개의 호스트에서 프로세스는 네트워크를 통한 메시지 교환으로 서로 통신한다. 통신하는 프로세스 각 쌍에 대해 일반적으로 클라이언트의 프로세스와 서버의 프로세스 중 하나로 이름 짓는다.

  • 클라이언트 프로세스 : 다른 프로세스와 세션을 시작하려고 접속을 초기화하는 프로세스
  • 서버 프로세스 : 세션을 시작하기 위해 접속을 기다리는 프로세스

 

하나의 프로세스로부터 다른 프로세스로 보내는 메시지는 네트워크를 통해 움직인다. 프로세스는 소켓(Socket) 을 통해 네트워크로 메시지를 보내고 받는다. 프로세스는 집이고 소켓은 출입구다. 프로세스가 메시지를 다른 호스트의 프로세스로 보내고 싶을 때, 출입구(소켓) 바깥 네트워크로 메시지를 밀어낸다. 메시지가 목적지 호스트에 도착하면 메시지는 수신 프로세스의 출입구를 거치고 수신 프로세스는 메시지를 처리한다.

위의 그림에서 보듯이, 소켓은 호스트의 애플리케이션 계층과 트랜스포트 계층 간의 인터페이스다.

 

한 호스트상에서 수행되고 있는 프로세스가 패킷을 다른 호스트에서 수행되고 있는 프로세스로 패킷을 보내기 위해서는 수신 프로세스가 주소를 가지고 있어야 한다. 수신 프로세스를 식별하기 위해서는 호스트의 주소, 그 목적지 호스트 내의 수신 프로세스를 명시하는 식별자가 필요하다. 인터넷에서 호스트는 IP 주소로 식별된다. IP 주소는 32비트로 구성되며, 호스트를 유일하게 식별한다. 송신 호스트는 수신 호스트에서 수행되고 있는 수신 프로세스(수신 소켓)을 식별해야 한다. 일반적으로 한 호스트가 많은 네트워크 애플리케이션을 수행할 수 있기 때문에 이를 위해 목적지 포트 번호 가 사용된다.

👉 IP 주소는 그 아파트까지 찾아가는 것. 몇 동/몇 호인지 찾아가는 것이 포트

 

애플리케이션이 이용 가능한 Transport 서비스

  • 신뢰적 데이터 전송
  • 처리율
  • 시간
  • 보안

 

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

  • TCP 서비스
    • 연결지향형 서비스 : 메시지를 전송하기 전에 클라이언트와 서버가 서로 전송 제어 정보를 교환하게 한다. 이 핸드셰이킹 과정 이 클라이언트와 서버에 패킷이 곧 도달할 테니 준비하라고 알려주는 것이다. 이 과정을 지나면 TCP 연결이 두 프로세스의 소켓 사이에 존재한다고 말한다. 이 연결은 두 프로세스가 서로에게 동시에 메시지를 보낼 수 있기에 전이중(Full-duplex) 연결 이라고 한다. 메시지 전송을 마치면 연결을 끊어야 한다.

       

    • 신뢰적인 데이터 전송 서비스 : 통신 프로세스는 모든 데이터를 오류 없이 올바른 순서로 전달하기 위해 TCP에 의존한다. TCP는 애플리케이션의 한쪽이 바이트 스트림을 소켓으로 전달하면 그 바이트 스트림이 손실되거나 중복되지 않게 수신 소켓으로 전달한다.

     
  • UDP 서비스 : UDP는 최소의 서비스 모델을 가진 간단한 전송 프로토콜이다. UDP는 비연결형이므로 핸드셰이킹 과정이 없다. 그리고 하나의 프로세스가 UDP 소켓으로 메시지를 보내면, UDP는 그 메시지가 수신 소켓에 도착하는 것을 보장하지 않는다. 게다가 메시지들의 순서가 뒤바뀔 수도 있다.

0개의 댓글

관련 채용 정보