본문 바로가기

Study/Networking

10.1 응용층 소개 & 10.2 클라이언트-서버 패러다임

728x90

응용층은 사용자에게 서비스를 제공한다. 논리적 연결을 이용하여 통신이 제공되는데, 그 의미는 두 응용층이 서로 메시지를 송수신할 수 있는 가상의 직접적인 열견이 있는 것처럼 가정 하는 것이다.

1. 서비스 제공

  • 프로세서 간의 논리적 연결
  • 하위 계층에서만 서비스 수신
  • 쉽게 제거하거나 추가할 수 있습니다
  • 표준 또는 비표준 프로토콜이 가능

- 표준 및 비표준 프로토콜
TCP/IP 제품군의 처음 4개 계층은 표준화되고 문서화되어야 한다.
유연성을 위해 애플리케이션 계층 프로토콜은 표준 및 비표준이 될 수 있다.

- 표준 응용 계층 프로토콜
인터넷 당국에 의해 표준화되고 문서화되었다.
각 표준 프로토콜은 사용자 및 전송 계층과 상호 작용하여 사용자에게 특정 서비스를 제공하는 컴퓨터 프로그램 쌍이다.
응용 프로그램 계층 프로토콜은 FTP, HTTP, HTTPS, SMTP, POP, SNMP(Simple Network Management Protocol) 등이 있다.

- 비표준 애플리케이션 계층 프로토콜
프로그래머는 전송 계층과 상호 작용하여 사용자에게 서비스를 제공하는 두 개의 프로그램을 작성할 수 있다.
개인적으로 사용할 경우 인터넷 당국의 승인이 필요 없기 때문에 세계적으로 인기가 있다.

 

2. 응용층 패러다임

인터넷을 이용하기 위해서는 서로 상호작용하는 2개의 응용 프로그램이 필요하다는 것은 명확하다.두 프로그램은 네트워크 기반 구조를 통해 서로 메시지를 보낼 필요가 있다. 클라이언트-서버 패러다임과 대등-대-대등 패러다임이 현재까지 개발되어 있다.

 

-전통적인 패러다임: 클라이언트-서버

전통적인 패러다임은 클라이언트-서버 패러다임이라고 부르며 몇 년 전까지 가장 인기가 높았다. 이 패러다임에서 서비스 제공자는 서버 프로세스라고 부르는 응용 프로그램으로서 끊임없이 실행되고 있으며, 클라이언트라는 다른 응용 프로그램이 인터넷을 통해 연결을 하고 서비스 요청을 기다린다.

이 패러다임의 문제 중 하나는 서버에 통신 부담이 집중된다는 것이며, 이것은 서버가 강력한 컴퓨터가 되어야 한다는 것을 의미한다. 동시에 많은 수의 클라이언트가 연결 시도를 하게 되면 강력한 컴퓨터라도 견디기 힘들 수 있다.

WWW, HTTP, FTP, SSH, 전자우편 등 여러 전통적인 서비스들이 아직 이 패러다임을 사용하고 있다.

 

-새로운 패러다임: 대등-대-대등

대등-대-대등 패러다임으로 부르는 새로운 패러다임이 새로운 응용들의 요구에 부응하기 위해 나타났다. 이 패러다임에서는 서버가 항상 실행되고 클라이언트의 연결 요청을 기다리는 것이 필요하지 않다. 책임은 두 대등 간에 나누어져 있다. 인터넷에 연결된 컴퓨터들이 서로 공유해야 하는 경우가 대등-대-대등 패러다임이 사용될 수 있는 다른 영역이다.

이 패러다임을 사용하는 비트토런트, 스카이프, IPTV와 인터넷 전화 같은 새로운 응용이 있다.


클라이언트-서버 패러다임에서 응용층 통신은 프로세스라고 부르는 2개의 실행 중인 응용 프로그램 간에 일어난다. 프로세스 하나는 클라이언트이고 다른 하나는 서버이다. 클라이언트는 서비스 요청을 보내 통신을 시작하는 동작 프로그램이며 서버는 클라이언트로부터 요청을 기다리는 응용프로그램이다. 서버는 클라이언트로부터 받은 요청을 처리하여 결과를 준비하고 클라이언트에게 그 결과를 송신한다.

1. 응용 프로그래밍 인터페이스

컴퓨터 프로그램은 보통 컴퓨터가 무슨 일을 해야 하는가를 지시하는 사전에 정의된 명령어 집합의 컴퓨터 언어로 작성된다. 어떤 프로세스가 다른 프로세스와 통신이 가능하도록 하려면, 연결을 만들고, 다른 쪽과 데이터 송수신을 하고, 연결을 끊는 것을 TCP/IP 프로토콜의 하위 네 계층에게 알려주는 새로운 명령어 집합이 필요하다. 이 종류의 명령어 집합을 보통 응용 프로그래밍 인터페이스(API)라고 한다.이 경우 한 주체는 응용층의 프로세스이며, 다른 주체는 TCP/IP프로토콜의 처음 네 계층을 포함하고 있는 운영체제 이다. 3가지 일반적인 API는 소켓 인터페이스, 전송층 인터페이스, 스트림이다.

 

- 소켓

소켓이 터미널이나 파일처럼 동작하는 것으로 여기지만 물리적인 개체가 아니며 하나의 추상으로써 응용 프로그램이 생성하고 사용하는 하나의 데이터 구조이다.

 

- 소켓 주소

클라이언트와 서버 간의 상호 교신은 양방향 통신이다. 양방향 통신에서 로컬과 리모트의 한 쌍의 주소가 필요하다. 클라이언트-서버 패러다임에서 통신은 두 소켓 사이에 일어나므로 통신에 로컬 소켓 주소와 리모트 소켓 주소의 소켓 주소 한 쌍이 필요하고, TCP/IP 프로토콜에서 사용되는 식별자들로 소켓 주소를 정의하여야 한다.

 

- 소켓 주소 찾기

서버사이트: 로컬(서버) 소켓 주소와 원격(클라이언트) 소켓 주소를 필요로 한다.

로컷(서버) 소켓 주소는 운영체제에 의해 제공된다. 서버 프로세스가 인터넷 관리기관에 의해 정의된 표준이면 포트 번호는 잘 알려진 포트로서 할당된다.

 

클라이언트 사이트: 로컬(클라이언트)과 원격(서버) 주소

로컬(클라이언트) 소켓 주소는 운영체제가 제공한다. 임시 포트 번호 할당

 

원격 소켓 주소

프로그램 작성자는 클라이언트 프로그램을 실행할 때 두 가지 정보를 제공한다. 잘 알려진 포트번호와 IP 주소는 DNS를 사용한다.

 

2. 전송층 서비스 사용

- UDP

UDP는 비연결형, 신뢰성이 없는 데이터그램 서비스이다. 비연결형 서비스는 메시지를 교환하는 두 종단 사이에 논리적인 연결이 없다는 것을 의미한다. 각 메시지는 데이터그램으로 캡슐화된 독립적인 개체이다.

- TCP

TCP는 연결형이며, 신뢰성이 있는 바이트-스트림 서비스를 제공한다. TCP는 양 종단이 먼저 연결 설정 메시지를 교환하여 논리적인 연결을 만드는 것을 요구한다. 핸드셰이킹이라고 부르는 이 단계는 양 종단의 파라미터를 설정한다. 파라미터에는 교환할 데이터 패킷의 크기, 전체 메시지가 도착할 때까지 데이터 부분을 유지하는데 사용하는 버퍼의 크기등을 포함한다.

 

728x90

'Study > Networking' 카테고리의 다른 글

11. 멀티미디어  (0) 2023.06.09
10.3 표준 응용  (0) 2023.06.03
9.5 스트림 제어 전송 프로토콜(SCTP)  (0) 2023.06.03
9.4 전송 제어 프로토콜(TCP)  (0) 2023.06.03
9.3 사용자 데이터그램 프로토콜(UDP)  (0) 2023.06.03