컴퓨터 네트워크) Application
👀 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 protocol
과Proprietary protocol
이 있는데Open protocol
은 전체 규칙이 표준화되어 공개되어 있어(HTTP
,SMTP
) 누구나 접근해 그 규격에 맞는 메시지를 만들어 통신할 수 있다. - 반면에
Proprietary protocol
은 기업에서 자체적으로 만들어 사용하는 고유한 프로토콜로 만든 곳에서 공개하지 않으면 알 수 없다.
Transport Layer Protocol
- 데이터를 전송할 때엔 데이터가 손실되지 않는지, 전송속도는 얼마나 나오는지 등 데이터가 제대로 전송될 수 있도록 신경써야 하는 부분이 있다. 그런데 이런 것들을 응용프로그래머가 일일이 다루기는 어렵다.
- 그래서
Transport Layer
에서 이런 것들에 대한 요구사항을 만족시켜 준다.
TCP
- 신뢰성 있는 전송
Error control
: 에러가 없을 때까지 재전송Flow control
: 보내는 쪽은 받는 쪽이 받을 수 있을 만큼만 보낸다.Congestion control
: 라우터나 스위치에 데이터가 쌓이지 않도록 제어- 이메일, 웹, 파일 전송 등에서 사용
UDP
- 신뢰성 없는 전송
TCP
가 제공하는 기능들을 제공하지 않는다.- 이렇게 보면 쓸모 없어보이지만 오디오/비디오와 같은 멀티미디어 데이터를 전송할 때 유용하게 사용될 수 있다.
- 받은 데이터에 손실이 있어도 수정하지 않고 그대로 보내기 때문에 유튜브처럼 데이터에 손실이 좀 생겨도 보는데에 지장이 없는 서비스에서는 빠르게 전송할 수 있다.
- 비디오 스트리밍 서비스나 통화 서비스 등에서 사용