티스토리 뷰

■ 애플리케이션 레이어 프로토콜

 인터넷 프로토콜 스택을 보면 애플리케이션 레이어는 제일 상위에 있으며, 여기에 있는 응용 프로그램들은 다른 end divice에 있는 애플리케이션 레이어 프로그램과 데이터를 주고 받게 된다. 그렇다면 이 데이터를 주고 받을 때 애플리케이션끼리 이해할 수 있는 언어가 필요할 것이고, 이런 것을 애플리케이션 레이어 프로토콜이라고 한다. 애플리케이션 레이어 프로토콜은 아래와 같이 Syntax, Semantics, Pragmatics 3가지로 구성되어 있다.

● message syntax

- 메시지에 어떤 필드들이 존재하는가
- 내가 응답 메시지를 보내기 위해 메시지의 타입은 무엇을 해야하는가
- 요청 메시지인가, 응답 메시지인가
- 요구하는 데이터가 무엇이고, 그 요구하는 데이터를 명시하는 필드가 필요
- 전체 메시지에서 처음에 몇 byte를 메시지의 타입으로 정할 것인가
- 전체 메시지에서 몇 byte를 데이터를 명시하는 용도로 쓸 것인가

● message semantics

- 메시지에 담겨져 있는 데이터가 실제로 무엇을 의미하는가
- 메시지에 담겨져 있는 데이터를 어떻게 해석할 것인가

● message pragmatics

- 언제 어떻게 데이터를 보내고 받을 것인가
- 받은 메시지에 어떻게, 어떤 순서로 응답할 것인가

 

■ 애플리케이션 프로토콜 : 오픈(Open) 프로토콜과 사유(Proprietary) 프로토콜

 애플리케이션 레이어 프로토콜에서 유명한 것들을 살펴보면 HTTP와 SMTP 같은 것이 있고 스카이프(Skype)라는 응용 프로그램에서 사용하는 또다른 프로토콜이 있다.

 전자의 경우 HTTP나 SMTP는 오픈 프로토콜(Open protocols)이라 불리우며 프로토콜의 전체 규칙이 표준화 되어서 공개되어 있다. 누구나 정해진 공식 문서의 표준에 따라서 메시지를 작성하면 서로 통신을 할 수 있다. 특정한 허가를 받지 않더라도 규칙에 맞추어서 데이터를 보내면 그것에 대한 응답을 보낼 수 있는 것이다. 위의 그림은 HTTP를 예시로 클라이언트와 서버가 서로 요청하고 응답하는 과정을 보여주고 있다.

 

 반면에 인터넷 전화로 쓰는 응용 프로그램인 스카이프(Skype) 같은 경우에는 이 프로그램을 사용하고자 하는 장치들이 프로그램 설치를 해야한다. 왜냐하면 스카이프는 고유의 사유 프로토콜(Proprietary protocols)을 가지고 있으며 이 때문에 스카이프 프로그램 없이는 통신을 하기 어렵다.

 

■ 네트워크 애플리케이션의 요구 사항

 위 표에서 볼 수 있다시피 다양한 네트워크 애플리케이션들이 있고, 이 응용들이 요구하는 것들은 어떤 특성이 있는지 알아보도록 하자.

 우선 파일 전송(file transfer)이나 이메일(e-mail), 웹 문서(web documents), 문자 메시지(text messaging) 같은 경우에는 데이터를 잃어버려서는 안된다(no loss)고 되어 있다. 데이터의 신뢰성을 요구한다는 의미이다.

 예시를 한 번 살펴보자. 압축 파일을 전송하는 경우 파일에 하나의 비트라도 오류가 있으면 압축은 풀리지 않는다. 모든 비트가 정확하게 도착해야 한다. 그래서 데이터의 손실이 있으면 안된다(no loss). 이메일로 회사끼리 중요한 거래 메일을 주고 받는다고 생각해보자. 메일에 들어있는 내용이 정확해야만 거래가 이루어질 수 있을 것인데 만약 데이터 전송 과정에서 데이터 손실이 생긴다면 거래가 정상적으로 이루어지지 못할 것이다. 이 때문에 데이터 전송에 있어서는 높은 정확도를 요구하지만 데이터 전송량(throughput)에 있어서는 전송량이 조금 적어도 정보를 주고 받는 것에는 아무 문제가 없는 서비스들이기 때문에 유연하게(elastic) 설정해도 문제가 적다.

 반면 실시간 오디오/비디오 파일(real-time audio/video)를 살펴보자. 오디오/비디오에는 loss-tolerant라고 적혀있는데 tolerant라는 것은 무엇을 잘 견딘다는 의미다. 이것은 데이터 전송에 있어 손실(loss)이 조금 있어도 서비스를 제공받는 데에는 크게 불편함이 없다는 것이다.

 가령 스트리밍 비디오를 사용자가 본다고 했을 때 초당 30프레임의 비디오에서 한두 프레임이 제대로 전송되지 않는다고 해서 그로 인해 대기 시간이 생기는 것보다 다음 프레임을 받아서 비디오가 계속 재생되는 것이 사용자에게 더 편리한 서비스일 것이다. 인터넷 전화도 중간에 발음, 음절 한 두개 깨진다고 해서 음성을 전혀 못 알아듣는 것이 아니므로 대기하는 시간보다 중간에 조금 발음이 뭉개지더라도 계속 대화를 하는 편이 사용자 입장에서 더 편하다고 느낄 것이다. 그래서 오디오나 비디오 같은 멀티미디어 데이터조금 에러가 있어도 괜찮고, 대신 빠른 시간 내에 연속적으로 데이터가 도착할 수 있어야 한다.

 위와 같이 응용 프로그램 별로 요구사항이 다를 수 있다는 것을 알 수 있다.

 그렇다면 이런 요구사항들은 누가 정의하고 제공해주는 것일까? 응용 프로그램을 개발하는 애플리케이션 개발자들이 네트워크 상에서 일어나는 여러 문제점들을 모두 제어하기는 매우 어렵다. 그래서 이런 것들은 트랜스포트 레이어(Transport Layer, 전송 계층) 프로토콜에서 데이터 손실(data loss)이나 전송량(throughput)에 대한 요구사항을 만족시켜준다.

 

■ 트랜스포트(Transport, 전송) 프로토콜 서비스들

● TCP 서비스

- 에러 제어(Error control) : 데이터를 받았을 때 검사를 해서 에러가 있으면 에러가 없어질 때까지 재전송을 요구한다. 그리고 에러가 없는 데이터가 도착하면 그제서야 애플리케이션 레이어가 데이터를 전달한다.

- 흐름 제어(Flow control) : 송신자가 수신자가 받을 수 있는 용량보다 더 많은 데이터를 한꺼번에 보내지 않도록 한다.

- 혼잡 제어(Congestion control) : 네트워크 중간에 있는 라우터나 스위치 같은 인터넷 장비들에 데이터가 쌓이지 않도록 제어한다.

 TCP가 처음 개발되던 시대에는 멀티미디어 데이터 자체가 없었다. 따라서 지연시간을 보장해주거나 최소 전송량을 보장해주거나 보안적인 부분을 보장해주는 것이 TCP에는 없다.

● UDP 서비스

 UDP에는 TCP에 있는 에러, 흐름, 혼잡 제어가 없다. 그래서 전송받은 데이터가 불완전하더라도 그대로 애플리케이션 레이어에 전달하기 때문에 신뢰성이 떨어진다. 그렇다면 신뢰도가 낮은 UDP는 어디에 쓰이는 것일까? 바로 윗 문단에서 알아본 것과 같이 오디오나 비디오 같은 멀티미디어 데이터의 경우 TCP를 사용하면 에러가 발생했을 때 신뢰성 유지를 위해 너무 많은 지연시간을 소모하기 때문에 에러 검증을 따로 하지 않는 UDP를 사용한다.

 

■ 네트워크 애플리케이션이 사용하는 프로토콜

 이메일, 웹, 파일 전송 프로토콜인 SMTP, HTTP, FTP라고 불리는 것들은 TCP를 사용한다. 그리고 멀티미디어 데이터를 사용하는 응용 프로그램에서는 과거에는 UDP를 주로 사용했었지만 최근에 인터넷 환경이 좋아지면서 속도 부분에서 부담이 덜해지자 TCP를 사용하기도 한다.

 

 

 

※ 본 정리 내용은 부산대학교 유영환 교수님의 컴퓨터 네트워킹 수업을 정리한 것입니다.

※※ 강의에 사용된 교재 : [Computer Networking A Top-Down Approach 7th edition / Jim Kurose, Keith Ross]

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함