[컴퓨터 네트워크] Application architectures

Pakxe·2023년 9월 22일
1

컴퓨터 네트워크

목록 보기
5/16
post-thumbnail

구성

  • client-server architecture
  • p2p architecture
  • IP 주소
  • 소켓
  • port number
  • application layer protocol

이 정리는 23-2에 수강한 컴퓨터 네트워크 강의를 기반으로 하였습니다.

Application 계층

application 계층은 사용자와 네트워크 사이의 인터페이스 역할을 한다.
이 계층의 구조는 아래 구조를 가질 수 있다.

  • client-server
  • peer-to-peer(P2P)

하나씩 알아보자

client-server architecture

client

클라이언트는 네트워크에서 서버에게 서비스를 요청하는 기기이다. 주로 application(진짜 앱), 소프트웨어, 웹 등을 말한다.

클라이언트는 서버에 요청을 보내고, 서버로부터 응답을 받아 사용자에게 이를 제공한다.

유동적인 IP 주소(dynamic IP address)를 갖는데, 이는 IP 주소의 부족함과 시간이 지나 이동할 수 있는 특성 때문이다.

다만 클라이언트 끼리는 서비스를 요청할 수 없다.

server

서버는 네트워크에서 클라이언트의 요청을 받아, 처리하고 응답하는 기기이다.

서버는 항상 켜져있어 항상 대기 상태이다. 그리고 고정 IP 주소를 사용한다. 이로인해 클라이언트가 항상 동일한 IP 주소로 접근할 수 있다.

P2P architecture

p2p는 한 피어의 프로세스에서 다른 피어의 프로세스로 파일을 전달할 수 있다.
서비스를 제공하는 쪽(peer)이면 그게 서버가 되고 서비스를 제공받는 쪽(peer)이면 그게 클라이언트가 되는 한 쌍이 이루어진다. 토렌트를 생각하면 된다.

새로운 사용자(peer)가 들어오면 확장되는 구조이기 때문에 p2p는 확장성이 좋다.

p2p 구조에는 client-server 구조와는 다르게 중앙 서버가 없을 수 있다. 중앙 집중형이 아니라는 것은 서버의 부하에 영향을 받지 않는다는 장점이 있다.

클라이언트 역할의 기기는 동적 IP 주소를 가져도 서버 IP 주소를 알기만 한다면 통신할 수 있다. 하지만 서버 역할을 하는 기기도 동적 IP 주소일 수 있다. 이런 문제를 해결하기 위한 매커니즘이 필요하다.

프로세스(Process)

프로세스는 컴퓨터에서 실행중인 프로그램의 인스턴스 또는 실행 가능한 작업 단위를 정의하는 단어이다. 크롬 브라우저를 예로 들자면, 각 탭이 하나의 프로세스가 되는 것이다.

대부분의 애플리케이션은 두 프로세스가 메세지를 서로에게 보내는 통신 프로세스 쌍으로 구성된다. 하나의 프로세스로부터 다른 프로세스로 보내는 메세지는 네트워크를 통해 움직인다. 그리고 프로세스는 소켓을 통해 네트워크로 메세지를 보내고 받는다.

Socket

바로 앞에서 프로세스는 소켓을 통해 메세지를 받거나 보낸다고 했다. 보통 프로세스는 집이고 소켓은 집의 출입문에 비유할 수 있다.

프로세스가 메세지를 다른 호스트의 프로세스로 보내고 싶다면, 프로세스가 소켓(문) 바깥 네트워크로 메세지를 밀어낸다. 메세지가 목적지 호스으테 도착함녀 메세지는 수신 프로세스의 소켓(문)을 거쳐 수신 프로세스 내부로 들어가 처리된다.

크롬 브라우저를 예로 들자면, 각 탭에서 html을 요청할땐 클라이언트 크롬 창 프로세스의 소켓으로 요청을 날리는 것이고 서버의 소켓에서 이 요청을 받는 것이다.

그림을 보면 알 수 있듯이, 소켓은 호스트의 애플리케이션 계층과 트랜스포트 계층간의 인터페이스이다(소통할 수 있는 매개).

IP 주소(Internet Protocol address)

인터넷에서 호스는 32비트로 구성된 IP 주소로 식별된다.
종단 시스템 말고 라우터, 스위치 등의 중간 기기도 모두 이 IP 주소를 가져야한다.

IP 주소에도 버전이 있는데 기존에 사용하던 버전은 IPv4이다. 하지만 주소가 부족해짐에 따라 길이를 늘린 Ipv6가 점점 사용되는 추세다.

port number

송신 호스트는 수신 호스트에서 수행되고 있는 수신 프로세스(수신 소켓)도 식별해야한다. 왜냐면 하나의 서버가 여러 프로세스(네트워크 애플리케이셔)을 가지고 있을 수 있기 때문이다. 이를 프로세스들을 구분하기 위해 포트 번호라는 것이 등장했다.

따라서 요청시 수신 호스트의 IP주소와 요청을 보낼 프로세스의 포트 번호를 포함해야한다. 이처럼 IP 주소와 포트 번호는 네트워크 통신에서 데이터의 출발지와 목적지를 정확하게 식별하여 올바르게 데이터가 전달될 수 있도록 도움을 준다.

그리고 특정 포트 번호는 특정한 기능을 하는 프로세스와 매칭되어 사용되기도 한다. 예로, 웹서버는 포트 번호 80이고, 메일 서버는 포트번호 25를 사용하는 식이다.

Application layer protocol

응용 계층 프로토콜(Application layer protocol)은 컴퓨터 네트워크에서 응용 프로그램간 통신을 관리하고 데이터를 교환하기 위한 규칙을 정의한다. 아래 항목들이 있어야 통신할 수 있다고 약속한 것이다.

message type

request인지 response인지 메세지의 종류를 정의한다.

message syntax

메세지 내부는 필드로 구분되는데, 이 필드가 어떻게 나뉘느냐를 메세지 신택스(message syntax)라고 한다. 이 메세지 신택스는 데이터를 제대로 해석하기 위한 규칙과 형식이 적혀있다.

예로 wav파일은 44 바이트까지 헤더영역인데, 이 헤더 영역에는 메타데이터와 오디오 포맷 정보 등 어떻게 해석해야하는지 정보를 담고 있다. FORMAT, BPS 등의 신택스 비슷한 정보들은 음악 플레이어 프로그램이 읽고 해석하여 잘 재생할 수 있도록 돕는다.

문장을 주어, 목적어 등으로 나눌 수 있는 것과 비슷하다.

message semantics

메세지 시맨틱은 필드 내부의 값을 어떻게 해석해야할지에 대하여 정의한 것이다.

예를 들어 "나는 행복하다."라는 문장이 있다면, 필드는 주어, 목적어로 나뉜다. 그리고 주어에는 "나는", 목적어에는 "행복하다"라고 필드 내부의 값이 된다. 이때 주어 필드에 실제 값이 "나는"이면, "나는" = 나 자신이라고 번역해주는 표가 메세지 시맨틱인 것이다. 만약 주어 필드에 "너는" 이 있었다면, 메세지 시맨틱에서 "너는"을 찾아, "너는" = 내 옆에 있는 누군가 프로퍼티를 보고 의미를 해석할 수 있는 것이다.

rules

언제 어떻게 프로세스가 메세지를 보내고 응답할건지에 대한 정의이다.

요약

  • client-server architecture: 클라이언트, 서버로 구성됨
  • p2p architecture: 모두가 서버가 될 수 있고 클라이언트도 될 수 있음
  • IP 주소: 식별 주소, 주민번호같음
  • 소켓: 출입문
  • port number: 프로세스 식별 번호
  • application layer protocol: 애플리케이션 계층 프로토콜에서 필요한 것들이 있다.

잘못된 내용이 있으면 pigkill40@naver.com 으로 연락주시기 바랍니다.

profile
내가 꿈을 이루면 나는 또 누군가의 꿈이 된다.

0개의 댓글