(컴퓨터 네트워크) 애플리케이션 계층
컴퓨터 네트워크 2장
네트워크 애플리케이션 구조
-
클라이언트-서버
-
서버 - 항상 동작하고 있는 호스트
-
클라이언트 - 서버에게 서비스 요청을 하는 호스트
-
서버는 고정 IP주소라는 잘 알려진 주소를 가지고 항상 동작하고, 클라이언트는 서버 주소로 패킷을 보내 언제든지 서버에 연결할 수 있다.
-
서비스 요청을 많이 받는 서버의 경우 많은 수의 호스트를 갖춘 데이터 센터가 강력한 가상의 서버를 생성하는 역할로 사용된다.
-
-
P2P
-
피어(peer) - P2P 구조에서 서비스 제공자가 소유하지 않고 사용자들이 제어하는 데스크톱과 랩톱을 말한다.
-
피어라는 간헐적으로 연결된 호스트 쌍이 서로 직접 통신한다.
-
자가 확장성 - 각 피어들은 파일을 다른 피어들에게 분배함으로써 해당 시스템에 서비스 능력을 추가할 수 있다.
-
예) BitTorrent
-
프로세스 간 통신
-
클라이언트 프로세스
-
웹 어플리케이션에서 클라이언트 브라우저 프로세스
-
P2P에서 파일을 내려받는 피어
-
-
서버 프로세스
-
웹 어플리케이션에서 웹 서버 프로제스
-
P2P에서 파일을 올리는 피어
-
-
일반적으로 두 프로세스간 통신 세션에서 초기화하는 프로세스를 클라이언트, 세션을 시작하기 위해 접속을 기다리는 프로세스를 서버라고 한다.
프로세스와 네트워크 사이의 인터페이스
-
하나의 프로세스에서 다른 프로세스로 보내는 메시지는 네트워크를 통해 이동한다.
-
소켓 - 프로세스가 메시지를 네트워크로 보내기 위한 통로 역할을 한다. 소켓은 애플리케이션과 네트워크 사이의 API라고도 한다.
-
프로세스 주소
-
호스트의 주소 - IP주소로 식별
-
목적지 호스트 내의 수신 프로세스를 명시하는 식별자 - 포트번호로 식별
-
애플리케이션이 이용 가능한 트랜스포트 서비스
-
신뢰적 데이터 전송 - 프로토콜이 프로세스 간 보장된 데이터 전송 서비스를 제공하는 것을 말한다. 이 서비스가 제공되면 송신 프로세스는 데이터를 소켓으로 보내고 그 데이터가 오류 없이 수신 프로세스에 도착할 것이라는 확신을 가진다.
-
처리율 - 네트워크 경로를 따라 두 프로세스 간의 통신 세션에서 송신 프로세스가 수신 프로세스를 비트로 전달할 수 있는 비율
-
시간 - 데이터를 전송하는 시간을 보장 받는다.
-
보안 - 기밀성, 데이터 무결성, 종단 인증 등의 보안 서비스를 제공받는다.
인터넷 전송 프로토콜 제공 서비스
-
TCP
-
연결 지향형 서비스 - 메시지를 전송하기 전에 클라이언트와 서버는 핸드 셰이킹 단계를 통해 서로 전송 제어 정보를 교환하여 연결한다.
-
신뢰적 데이터 전송 서비스 - 모든 데이터를 오류 없이 올바른 순서로 전달한다.
-
-
UDP
-
비연결형 - 핸드셰이킹 과정이 없이 바로 메시지를 전송한다.
-
비신뢰적 데이터 전송 서비스 - 수신 소켓에 도착하는 것을 보장하지 않고, 수신 소켓에 도착하는 메시지들의 순서를 보장하지 않는다.
-
HTTP
-
HTTP
-
메시지의 구조 및 클라이언트와 서버가 메시지를 어떻게 교환하는지에 대해 정의하고 있는 웹의 애플리케이션 계층 프로토콜
-
HTTP 서버는 클라이언트에 대한 정보를 유지하지 않으므로 HTTP를 비상태 프로토콜이라고 한다.
-
웹 서버는 항상 켜져 있고, 고정 IP 주소를 가지며, 수백만 브라우저로부터 요청을 서비스한다.
-
-
웹 페이지 - 기본 HTML 파일과 여러 참조 객체로 구성
-
URL - 객체를 갖고 있는 서버의 호스트 이름과 객체의 경로 이름을 가진 웹 페이지 주소
-
웹 브라우저 - 요구한 웹 페이지를 보여주고 여러가지 인터넷 항해와 구성 특성을 제공
-
쿠키
-
인터넷 사용자가 어떠한 웹사이트를 방문할 경우 사용자의 웹 브라우저를 통해 인터넷 사용자의 컴퓨터나 다른 기기에 설치되는 작은 기록 정보 파일
-
네가지 요소
-
HTTP 응답 메시지 쿠키 헤더라인
-
HTTP 요청 메시지 쿠키 헤더라인
-
사용자의 브라우저에 사용자 종단 시스템과 관리를 지속시키는 쿠키 파일
-
웹 사이트의 백엔드 데이터베이스
-
-
작동 방식
-
클라이언트 호스트가 HTTP 요청을 하면 서버 호스트는 HTTP 응답 메시지에 Set-cookie 헤더와 식별번호를 포함하여 보낸다.
-
이후 일정 시간동안 클라이언트 호스트가 HTTP 요청을 할때 HTTP 요청 메시지에 쿠키 파일을 추가하여 보낸다.
-
서버 호스트는 식별번호를 식별하여 클라이언트 호스트가 원하는 웹 정보를 유지할 수 있다.
-
-
-
웹 캐싱
-
자체의 저장디스크를 갖고 최근 호출된 객체의 사본을 저장 및 보존하여 브라우저가 사용자의 HTTP 요구를 웹 캐시에 가장 먼저 보내도록 구성할 수 있다.
-
작동 방식
-
브라우저는 웹 캐시와 TCP 연결을 설정하고 웹 캐시에 있는 객체에 대한 HTTP 요청을 보낸다.
-
웹 캐시는 객체의 사본이 자기에게 저장되어 있는지 확인한다. 만약 저장되어 있다면 웹 개시는 클라이언트 브라우저로 HTTP 응답 메시지와 함께 객체를 전송한다. 만약 저장되어 있지 않다면, 웹 캐시는 기점 서버로 TCP 연결을 설정하고, 캐시와 서버간의 TCP 연결로 객체에 대한 HTTP 요청을 보낸다.
-
요청을 받은 후에 기점 시버는 웹 캐시로 HTTP 응답 메시지와 함께 객체를 보낸다.
-
웹 캐시의 객체를 수신할 때, 객체를 지역 저장장치에 복사하고 클라이언트 브라우저에 HTTP 응답 메시지와 함께 객체의 사본을 보낸다.
-
-
HTTP/2
-
HTTP/1.1에서 하나의 TCP 연결 상에서 멀티플렉싱 요청/응답 지연 시간을 줄이는데 있으며, 요청 우선순위화, 서버 푸시, HTTP 헤더 필드의 효율적인 합축 기능 등을 제공한다.
-
HTTP/1.1의 경우 지속적인 TCP 연결을 이용하기 때문에 웹 페이지당 오직 하나의 TCP 연결을 가진다. 이 때, 하나의 TCP 상에서 웹 페이지에 있는 모든 객체를 보내게 되기 때문에 HOL 블로킹 문제가 발생한다. 이를 해결하기 위해 HTTP/2에선 여러 개의 병렬 TCP 연결을 열어 같은 웹 페이지에 있는 객체들을 브라우저로 병렬적으로 전송하여 HOL 블로킹 문제를 해결했다.
-
HTTP/2 프레이밍 - 각 메시지를 작은 프레임으로 나누고, 같은 TCP 연결에서의 요청과 응답 메시지를 인터리빙한다.
DNS
-
DNS (Domain Name System) - 라우터의 경우 IP주소를 통해 호스트가 인터넷의 어디에 위치하는지에 대한 자세한 정보를 얻을 수 있다. 반면 사람에겐 IP주소가 매우 복잡하고 외우기 어렵다고 느낄 수 있는데 이를 절충하기 위해 호스트 이름을 IP 주소로 변환해주는 디렉터리 서비스가 존재하는데 이를 DNS라고 한다.
-
변환 과정
-
브라우저는 URL로부터 호스트 이름을 추출하고 호스트 이름을 DNS 애플리케이션의 클라이언트에 넘긴다.
-
DNS 클라이언트는 DNS 서버로 호스트 이름을 포함하는 질의를 보낸다.
-
DNS 클라이언트는 호스트 이름에 대한 IP 주소를 가진 응답을 받게 된다.
-
브라우저가 DNS로부터 IP 주소를 받으면 브라우저는 해당 IP 주소와 그 주소의 80번 포트에 위치하는 HTTP 서버 프로세스로 TCP연결을 초기화한다.
-
P2P
-
간헐적으로 연결되는 호스트 쌍들이 서로 직접 통신한다.
-
클라이언트-서버 구조보다 일반적으로 분배시간이 적고, 자가 확장성을 갖는다.
-
피어가 비트의 소비자이자 재분배자이다.
CDN
-
다수의 지점에 분산된 서버들을 운영하며, 비디오 및 다른 형태의 웹 콘텐츠 데이터의 복사본을 이러한 분산 서버에 저장하는 네트워크를 콘텐츠 분배 네트워크라고 한다.
-
사용자는 최선의 서비스와 사용자 경험을 제공할 수 있는 지점의 CDN 서버로 연결되고, CDN 은 콘텐츠 제공자가 소유한 사설 CDN일 수 있고, 제 3자가 운영하는 CDN을 통해 다수의 콘텐츠 제공자가 서비스할 수 있다.
-
서버 위치 지정 방법
-
Enter Deep - 서버 클러스터를 세계 곳곳의 접속 네트워크에 구축함으로써 ISP의 접속 네트워크로 깊숙이 들어가는 것이다. 이로 인해 서버를 최대한 사용자 가까이에 위치시켜 사용자와 CDN 서버 사이의 링크 및 라우터 수를 줄이고, 사용자가 경험하는 지연 시간 및 처리율을 개선할 수 있다.
-
Bring Home - 좀 더 적은 수의 핵심 지점에 큰 규모의 서버 클러스터를 구축하여 ISP를 Home으로 가져오는 개념이다. Enter Depp에 비해 클러스터 유지 및 관리 비용이 줄지만 사용자가 느끼는 지연 시간 및 처리율은 상대적으로 나빠진다.
-