👀 Application?

  • 응용프로그램이라고도 하며 사용자가 직접 다루는 프로그램을 의미한다.
  • 그래서 네트워크 응용프로그램이라면 인터넷 상에서 통신을 할 때 사용자가 직접 다루게 되는 프로그램을 의미하게 된다.
  • 종류에는 이메일, 크롬과 같은 웹 브라우저, P2P 파일 공유 프로그램, SNS, 카카오톡과 같은 메신저, 온라인 게임, 유튜브와 같은 비디오 스트리밍 서비스 등이 있다.

Application structures

Client-sever model

  • 최초로 사용되었던 방식으로 중앙에 서버 하나가 있고 클라이언트들이 그 하나의 서버에 접속해서 데이터를 받는 형태이다.
  • 이 모델에서는 서버가 유일하게 데이터를 제공하는 장치이다.
  • 그래서 서버가 꺼져 있으면 데이터를 받을 수 없다. 그렇기 때문에 서버 컴퓨터는 항상 켜져 있어야 한다.
  • 클라이언트는 서버에 접속해야만 데이터를 받을 수 있기 때문에 서버의 IP 주소는 항상 같아야 한다.
  • 서버 하나에 너무 많은 클라이언트가 몰리면 서버의 성능이 떨어지기 때문에 부하를 분산하기 위해서 서버를 여러 개 둔다.
  • 클라이언트가 다른 클라이언트와 통신하고 싶다면 서버를 거쳐야만 한다. 직접 통신 불가능

Perr-to-peer (P2P) model

  • 서버를 거치지 않고 각 컴퓨터들이 직접 연결되어 있는 형태로 네트워크에 참여하는 모든 컴퓨터들이 데이터 제공자이자 소비자가 된다. 특정한 하나의 서버가 없다.
  • 그래서 모든 컴퓨터가 항상 켜져 있을 필요는 없다. 데이터를 주고받고자 할 때에만 켜도 된다.
  • 부하가 분산되기 때문에 클라이언트가 많아져도 안정적이고 지속적인 서비스가 가능하다.
  • 꼭 고정된 IP 주소를 가지지 않아도 된다.

Application Layer Protocol

  • 인터넷 프로토콜은 5개의 층(layer)으로 이루어져 있는데 이 층 간에 통신을 할 때 필요한 규약이다.
  • 우리가 서로 대화할 때 서로 이해 가능한 문법과 의미를 지켜서 얘기하는 것처럼 네트워크 응용프로그램도 서로 해석할 수 있는 프로토콜을 이용해 데이터를 주고받는다.

  • message syntax : 요구하는 데이터가 무엇이고 이 데이터들을 어떻게 늘어놓을 것인지
  • message semantics : 이 데이터들을 어떻게 해석할 것인지
  • message pragmatics : 어떤 순서로 어떻게 응답할 것인지

  • 응용프로그램 프로토콜에는 Open protocolProprietary protocol이 있는데 Open protocol은 전체 규칙이 표준화되어 공개되어 있어(HTTP, SMTP) 누구나 접근해 그 규격에 맞는 메시지를 만들어 통신할 수 있다.
  • 반면에 Proprietary protocol은 기업에서 자체적으로 만들어 사용하는 고유한 프로토콜로 만든 곳에서 공개하지 않으면 알 수 없다.

Transport Layer Protocol

  • 데이터를 전송할 때엔 데이터가 손실되지 않는지, 전송속도는 얼마나 나오는지 등 데이터가 제대로 전송될 수 있도록 신경써야 하는 부분이 있다. 그런데 이런 것들을 응용프로그래머가 일일이 다루기는 어렵다.
  • 그래서 Transport Layer에서 이런 것들에 대한 요구사항을 만족시켜 준다.

TCP

  • 신뢰성 있는 전송
  • Error control : 에러가 없을 때까지 재전송
  • Flow control : 보내는 쪽은 받는 쪽이 받을 수 있을 만큼만 보낸다.
  • Congestion control : 라우터나 스위치에 데이터가 쌓이지 않도록 제어
  • 이메일, 웹, 파일 전송 등에서 사용

UDP

  • 신뢰성 없는 전송
  • TCP가 제공하는 기능들을 제공하지 않는다.
  • 이렇게 보면 쓸모 없어보이지만 오디오/비디오와 같은 멀티미디어 데이터를 전송할 때 유용하게 사용될 수 있다.
  • 받은 데이터에 손실이 있어도 수정하지 않고 그대로 보내기 때문에 유튜브처럼 데이터에 손실이 좀 생겨도 보는데에 지장이 없는 서비스에서는 빠르게 전송할 수 있다.
  • 비디오 스트리밍 서비스나 통화 서비스 등에서 사용


출처