본문 바로가기

CS

TIL no.60 - 02 애플리케이션 계층

애플리케이션의 구조 선택에 있어서 애플리케이션의 개발자는 현대 네트워크 애플리케이션에 사용되는 두 가지 우수한 구조의 클라이언트 - 서버 구조 혹은  P2P 구조  중의 하나로 작성할 것이다.

 

클라이언트 - 서버 구조 

항상 켜져 있는 서버는 클라이언트라고 불리는 많은 호스트의 요청을 받는다. 서버가 고정 IP 주소라는 잘 알려진 주소를 갖고 있다. 

때때로 클라이언트 - 서버 애플리케이션에서 하나의 서버 호스트가 자신의 클라이언트로부터의 모든 요청에 응답하는 것은 불가능하다.

만약 인기 있는 새로운 웹 사이트가 하나의 서버로만 요청을 처리한다면 급속히 서버가 제대로 작동하지 못할 수 있다. 이러한 이유로 많은 수의 호스트를 갖춘 데이터 센터가 강력한 가상의 서버를 연결하는 데 흔히 사용된다.

 

 

 

P2P 구조

항상 켜져 있는 기반 구조 서버에 최소로 의존하거나 전혀 의존하지 않는다. 대신에 애플리케이션은 피어 라는 간헐적으로 연결된 호스트 쌍이 서로 직접 통신하도록 한다. 피어는 서비스 제공자가 소유하지 않고, 사용자들이 제어하는 데스크톱과 랩톱이다.

특정 서버를 통하지 않고 피어가 통신하므로 이 구조를 피어 - 투 - 피어 라고 한다. 오늘날의 많은 인기 있고 트래픽 집중적인 애플리케이션들은 P2P 구조에 기반을 두고 있다. P2P 의 가장 주목할 만한 특성 중 하나는 자가 확장성이다. 

P2P 구조는 또한 비용 효율적인데 이들은 일반적으로 상당한 서버 기반구조와 서버 대역폭을 요구하지 않기 때문이다.

P2P 애플리케이션은 이들의 고도의 분산 구조 특성으로 인한 보안, 성능, 그리고 신뢰성에 커다란 도전을 맞고 있다.

 

어떤 애플리케이션은 클라이언트 - 서버 구조와 P2P 를 결합하이브리드 구조를 갖고 있다.

 

 

 

여러 종단 시스템에서 실행하는 프로그램이 어떻게 서로 통신할까 ?

 

운영체제 용어에서 실제 통신하는 것은 프로그램이 아니라 프로세스 이다.

다른 종단 시스템(또한 다른 운영 체제) 에서 실행되는 프로세스와 통신하는 부분에 대해 알아보자.

2개의 다른 종단 시스템에서 프로세스는 컴퓨터 네트워크를 통한 메시지 교환으로 서로 통신한다.

네트워크 애플리케이션은 네트워크에서 서로 메시지를 보내는 두 프로세스로 구성된다. 

 

P2P 파일 공유에서는 파일을 내려받는 피어 = 클라이언트파일을 올리는 피어 = 서버 라고 한다.

P2P 파일 공유와 같은 애플리케이션에서 프로세스가 클라이언트와 서버 둘 다 가능하다고 한다. 그럼에도 불구하고 프로세스 간의 통신 세션 내용에서 여전히 한 프로세스를 클라이언트라 하고 다른 프로세스를 서버라고 부를 수 있다. 

 

그래서 클라이언트와 서버 프로세스를 이렇게 정리할 수 있다.

클라이언트 = 두 프로세스 간의 통신 세션에서 통신을 초기화 ( 다른 프로세스와 세션을 시작하려고 접속을 초기화 ) 하는 프로세스
서버 = 세션을 시작하기 위해 접속을 기다리는 프로세스

 

 

 

프로세스와 컴퓨터 네트워크 사이의 인터페이스 

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

소켓은 호스트의 애플리케이션 계층과 트랜스포트 계층 간의 인터페이스이다.

또한 소켓은 네트워크 애플리케이션이 인터넷에 만든 프로그래밍 인터페이스이므로, 애플리케이션과 네트워크 사이의 API 라고도 한다.

 

 

 

프로세스 주소 배정

한 호스트상에서 수행되고 있는 프로세스가 패킷을 다른 호스트에서 수행되고 있는 프로세스로 패킷을 보내기 위해서는 수신 프로세스가 주소를 갖고 있을 필요가 있다. 

수신 프로세스를 식별하기 위해, 명시되어야 하는 두가지 정보

(1) 호스트 정보  (2) 그 목적지 호스트 내의 수신 프로세스를 명시하는 식별자

*인터넷에서 호스트는 IP 주소로 식별된다. 지금은 IP 주소가 32비트로 구성되며, 호스트를 유일하게 식별한다.

메시지가 전달되어야 하는 호스트의 주소를 아는 것과 더불어 송신 호스트는 수신 호스트에서 수행되고 있는 수신 프로세스( 좀 더 자세히는 수신 소켓 ) 도 식별해야 한다. 목적지 포트 번호가 이 목적을 위해 사용된다.

예를 들어, 웹 서버는 포트 번호 80번으로 식별된다. SMTP 프로토콜을 사용하는 메일 서버는 메일 서버 25번으로 식별된다.

 

 

 

애플리케이션이 이용 가능한 트랜스포트 서비스

인터넷을 포함해서 많은 네트워크들은 하나 이상의 트랜스포트 프로토콜을 제공한다. 애플리케이션을 개발할 때, 여러분은 사용 가능한 트랜스포트 프로토콜 중에서 하나를 선택해야 한다. 

트랜스포트 계층 프로토콜이 그것을 이용하는 애플리케이션들에게 제공할 수 있는 서비스는 무엇인가 ?

(1) 신뢰적 데이터 전송

트랜스포트 계층 프로토콜이 애플리케이션에 제공할 수 있는 한 가지 중요한 서비스는 프로세스 간 신뢰적 데이터 전송이다.

트랜스포트 프로토콜이 이 서비스는 제공할 때, 송신 프로세스는 데이터를 소켓으로 보내고 그 데이터가 오류 없이 수신 프로세스에 도착할 것이라는 확신을 갖는다.

(2) 처리량

(3) 시간

트랜스포트 계층 프로토콜은 또한 시간 보장을 제공할 수 있다. 처리율 보장과 마찬가지로 시간 보장은 여러 가지 형태로 나타난다. 

(4) 보안

송신 호스트에서 트랜스포트 프로토콜은 송신 프로세스가 전송하는 모든 데이터를 암호화할 수 있고 수신 호스트에서 트랜스포트 프로토콜은 그 데이터를 수신 프로세스로 전달하기 전에 데이터의 암호를 해독할 수 있다. 

 

 

 

웹과 HTTP

HTTP 는 TCP 를 전송 프로토콜로 사용한다. HTTP 클라이언트는 먼저 서버에 TCP 연결을 히작한다. 일단 연결이 이루어지면, 브라우저와 서버 프로세스는 그들의 소켓 인터페이스를 통해 TCP 로 접속한다. 

클라이언트 측에서 보면 소켓 인터페이스는 클라이언트 프로세스와 TCP 연결 사이에서의 출입구다. 클라이언트는 HTTP 요청 메시지를 소켓 인터페이스로 보내고 소켓 인터페이스로부터 HTTP 응답 메시지를 받는다. 

마찬가지로 HTTP 서버는 소켓 인터페이스로부터 요청 메시지를 받고 응답 메시지를 소켓 인터페이스로 보낸다. 

TCP 가 HTTP 에게 신뢰적인 데이터 전송 서비스를 제공한다.

웹 서버는 항상 켜져 있는 클라이언트 - 서버 구조의 애플리케이션이다. HTTP 는 상태를 저장하지 않는 비상태 프로토콜이다.

 

 

 

 

HTTP 주소를 통해 어떻게 동작할까 ?

http://www.someSchool.edu/someDepartment/home.index

비지속 연결 HTTP 연결 수행 과정

1. HTTP 클라이언트는 HTTP의 기본 포트 번호 80을 통해 www.someSchool.edu  서버로 TCP 연결을 시도한다. TCP 연결과 관련하여 클라이언트와 서버에 각각 소켓이 있게 된다.

2. HTTP 클라이언트는 1 에서 설정된 TCP 연결 소켓을 통해 서버로 HTTP 요청 메시지를 보낸다. 이 요청 메시지는 /someDepartment/home.index  경로 이름을 포함한다.

3. HTTP 서버는 1 에서 설정된 연결 소켓을 통하여 요청 메시지를 받는다. 저장장치로부터 /someDepartment/home.index 객체를 추출한다. HTTP 응답 메시지에 그 객체를 캡슐화한다. 그리고 응답 메시지를 소켓을 통해 클라이언트로 보낸다.

4. HTTP 서버는 TCP 에게 TCP 연결을 끊으라고 한다. (그러나 실제로 TCP 클라이언트가 응답 메시지를 올바로 받을 때까지 연결을 끊지 않는다.)

5. HTTP 클라이언트가 응답 메시지를 받으면, TCP 연결이 중단된다. 메시지는 캡슐화된 객체가 HTML 파일인 것을 나타낸다. 클아이언트는 응답 메시지로부터 파일을 추출하고 HTML 파일을 조사하고 10개의 JPEG 객체에 대한 참조를 찾는다.

6. 그 이후에 참조되는 각 JPEG 객체에 대하여 처음 네 단계를 반복한다.

 

이 과정에서 작은 패킷이 클라이언트로부터 서버로 가고, 다시 클라이언트로 되돌아오는 데 걸리는 시간을 RTT( round-trip-time )라 한다.

 

 

 

 

사용자와 서버 간의 상호작용 : 쿠키

 

 

 

... 이어서

 

 

 

📎Reference
참고 강의 : 한양대학교 이석복 교수 - 컴퓨터 네트워크
www.kocw.net/home/search/kemView.do?kemId=1169634

 

참고 서적 : 컴퓨터 네트워킹 : 하향식 접근 

'CS' 카테고리의 다른 글

TIL no.59 - 01 컴퓨터 네트워크와 인터넷  (0) 2021.03.28