[네트워크] Application Layer, Processes communicating, Sockets, Addressing processes, Application Layer Protocol

oldshoe·2024년 4월 17일

네트워크

목록 보기
5/34

Application Layer

계층들 중에 가장 위의 계층이다.
Application Layer에는 두가지의 application architecture이 존재한다.

client-server architecture

대부분의 앱들은 client-server 구조를 따른다.
client와 server가 존재하여 둘 사이에 데이터가 이동한다.
client가 데이터를 요청하고, server가 데이터 요청을 받아서 보내준다.

  • Server
    * client가 접속하기 위해서는 고정적인 IP 주소를 가지고 있음
    • 데이터 센터를 통해 운용되기도 함
  • Client
    * IP 주소가 동적
    • 클라이언트끼리 직접 통신하지 않고 서버를 통해 통신함

P2P architecture

동등한 peer(end system)끼리 직접 통신한다. 새로운 peer가 나타나면 규모가 늘어난다.

항상 켜져있는 서버가 없다. 보통 작은 서버가 있는데 이는 통신을 위함이 아니라 peer에 대한 정보를 저장한느 서버이다.
peer끼리 서비스를 요구하고 제공한다. 이는 self-scalability라고 한다.
peer들이 있었다가 없어지고 하니까 IP 주소가 바뀌는 것을 고려하여 프로그램을 구성해야 해서 관리가 복잡하다.

Processes communicating

실질적인 통신은 Process가 진행한다. 같은 Host 내에서 실행되고 있는 프로세스가 메시지를 보내면 OS가 알아서 처리해준다. 서로 다른 Host의 프로세스들은 메시지를 통해 소통한다.

  • client-server architecture
    * 클라이언트 프로세스 : 소통 시작
    • 서버 프로세스 : 연결되기를 기다림
  • p2p architecture
    * 프로세스가 클라이언트가 될 수도 있고 서버가 될 수도 있음
    • peer A가 peer B로부터 파일을 다운로드하면 A는 클라이언트, B가 서버 역할을 함

Sockets

소켓은 프로세스 간 메시지를 주고 받는 인터페이스를 말한다. Application Layer와 Transport Layer 사이의 인터페이스라고 볼 수 있다. 전체적으로 보면, Application Layer 사이의 메세지를 보내는 인터페이스라고 볼 수도 있다.

Addressing processes

메시지를 받기 위해서는 프로세스들은 identifier를 가지고 있어야 한다. 서버의 host 디바이스는 32bit짜리 ip 주소를 가지고 있다. port number(16bit)를 통해 같은 호스트에서 돌아가는 많은 프로세스들을 구별할 수 있다. IP 주소와 Port number을 알아야 웹 서비스로 접근이 가능하다.

Application Layer의 Protocol

메시지를 주고 받기 위해서는 프로토콜이 필요하다.

  • 메시지의 타입
  • 메시지 syntax(필드에 대한 내용 -> 앞의 몇 비트는 어떤 것을 나타내고... 등등)
  • 메시지 semantics(필드가 의미하는 바가 무엇인지)
  • process들이 언제 메시지를 보내고 받으면 어떻게 처리할지 등등
profile
toomuxi : There are many things in the world that I want to do

0개의 댓글