Shine's dev log

Application Layer 개요 본문

컴퓨터 네트워크

Application Layer 개요

dong1 2021. 1. 19. 16:14

1. Application layer

 

TCP/IP 네트워크 프로토콜 스택에서 가장 상위 레이어를 담당하고 있는 놈이 Application Layer이다. Application layer는 그 이름에 걸맞게 end system 들에게 여러가지 서비스를 제공거나 받는 부분을 책임진다.

 

즉, 이메일, 웹서핑 등과 같은 서비스를 제공하고 제공받기 위해서 어떤 형식으로 메시지를 주고 받아야 하는지의 프로토콜들이 모여있는 레이어라고 생각하면 된다.

 

대부분의 Application layer에서는 Client-Server 구조로 이루어져 있다. Client는 서비스를 제공 받는 호스트를 의미하고, Server 는 서비스를 제공해주는 호스트를 의미한다. Client-Server 구조 외에도 P2P (Peer 2 Peer)라는 구조도 존재하지만 흔한 구조는 아니다.

 

 

 

2. Sockets

 

TCP/IP 프로토콜 스택에서는 총 5단계의 레이어가 존재한다. 그 중에서 하위 4개 레이어를 담당하는 Physical, Link, Network, Transport layer는 모두 운영체제에 구현되어 있고, 개발자에게는 보이지 않는 부분이다. 따라서 하위 4개 레이어에서는 개발자가 특별히 건들지 않아도 자동적으로 패킷들이 생성되어 전송된다.

 

따라서 운영체제의 핵심인 커널에 어플리케이션에서 생성되는 메시지를 전달해주는 과정이 필요하다. 이 과정에서 Socket 이라는 녀석이 활용된다. Socket은 application layer와 transport layer 사이에 위치하고 있으며, 프로세스는 Socket이 제공하는 API나 함수를 통해 메시지를 송신하고 수신한다.

 

socket

 

즉, 개발자 입장에서는 복잡하게 하위레이어까지 생각할 필요 없이, 그냥 프로세스를 소켓에 꼽아주면 프로세스에서 생성된 메시지는 Socket을 타고 운영체제의 커널로 향할 것이다. 커널에서 일련의 과정을 거쳐 패킷이 생성되고 다른 호스트에게 전달됨으로써 통신이 이루어진다.

 

 

 

3. Port number

 

예를들어 유튜브 영상을 실행했다고 가정해보자. 사용자의 스마트폰은 유튜브 서버에 접속을 할 것이고, 유튜브 서버로부터 메시지를 지속적으로 받음으로써 영상이 재생될 것이다.

 

유튜브 서버가 메시지를 사용자의 스마트폰에 정확하게 전달하기 위해서, 일종의 번지수인 IP 주소를 활용한다. 하지만, IP 주소는 특정 호스트를 식별할 뿐, 유튜브라는 프로세스를 특정하지는 않는다. 해당 스마트폰에서는 유튜브 뿐 아니라 여러가지 프로세스들이 실행되고 있을 것이므로, 정확한 프로세스를 특정하여 메시지를 보내는 것이 중요하다.

 

그래서 Port number라는 것이 활용된다. Port number는 동일 IP 주소 내에서 특정 프로세스를 식별하는데 사용된다. 대표적으로 HTTP Server는 80번 Port를 사용하고, Mail Server는 25번 Port를 사용한다.

 

Host Identifier = (IP address, Port number)

 

 

 

4. Application layer Protocol defines

 

Application layer 프로토콜들의 규정에 대해서 알아보자.

 

1) Types of message exchange

기본적으로 메시지를 요청(Request)하거나 응답(Response)하는 방식으로 동작한다.

 

2) Message syntax

메시지가의 어느 필드가 어떻게 기술되어야 하는지, 각각의 필드는 어떻게 구분되는지

 

3) Message semantics

각각의 필드에 담긴 정보들에 대한 의미

 

4) Rules

언제, 어떻게 프로세스들이 요청하고 응답해야 하는지

 

Application protocol의 메시지들은 위와 같은 규정들이 정의되어 있어야 한다.

 

 

5. 정리

 

Application layer protocol들의 공통적인 특징을 정리해 보았는데, 사실 각각의 프로토콜마다 차이점도 뚜렷하다보니 공통적인 특징을 묶어서 정리하는것이 쉽지 않았다. "Application layer protocol의 특징!" 뭐 이런게 중요한 것은 아니므로, 그냥 이 부분은 그냥 참고만 하고 넘어가면 될 듯 하다.

 

 

오늘 공부한 내용을 정리해보면,

 

1. Application layer는 특정 서비스를 이용할 때 필요한 프로토콜들이 모여있는 레이어다.

 

2. TCP/IP 스택에서 하위 4개 레이어는 운영체제가 담당하므로, 어플리케이션 프로세스의 메시지를 socket을 통해 전달해주기만 하면 된다.

 

3. 호스트를 식별하는데는 IP주소가 필요하고, 호스트 내의 프로세스를 식별하는데는 Port number가 필요하다.

 

위 내용은 공부하며 작성한 것으로, 오류가 있을 수 있습니다.