컴퓨터 네트워킹 하향식 접근 - 2. 애플리케이션 계층

won·2024년 2월 15일
0

강의 영상(영어)

학습목표

어플리케이션 계층에서 제공하는 서비스를 알아보자.

2.1 네트워크 어플리케이션의 원리


네트워크 어플리케이션을 위한 통신은 종단 시스템 간의 애플리케이션 계층에서 발생한다.

2.1.1 네트워크 애플리케이션 구조

애플리케이션 구조와 네트워크 구조는 다르다!!!

애플리케이션 구조

애플리케이션 개발자에 의해 설계되고 애플리케이션이 다양한 종단 시스템에서 어떻게 조직되어야 하는지를 지시한다.

  1. 클라이언트 - 서버 구조
    서버 : 항상 켜져있는 호스트
    서버는 클라이언트라는 다른 많은 호스트의 요청을 받는다. 웹 서버가 클라이언트 호스트로 부터 객체를 요청받으면 웹 서버는 클라이언트 호스트로 요청된 객체를 보내어 응답한다.
    클라이언트 - 서버 구조에서는 서로 직접적으로 통신하지 않는다.
    서버는 고정 IP주소라는 잘 알려진 주소를 갖는다.
    서버는 항상 동작하므로 클라이언트는 서버 주소로 패킷을 보내서 항상 서버에 연결할 수 있다.
    예시) HTTP, IMAP
  • 데이터 서버
    클라이언트 - 서버 구조가 모든 요청에 응답하기는 힘들다. 갑자기 요청이 많아지면 서버가 제대로 작동하기 힘들지 모른다. 이러한 이유로 많은 수의 호스트를 갖춘 데이터 센터가 강력한 가상의 서버를 만드는데 사용된다.
  1. P2P 구조(Peer to Peer)
    항상 켜져있는 기반구조 서버에 최소로 의존 혹은 거의 의존하지 않는다.
    대신에 애플리케이션은 피어(peer)라는 간헐적으로 연결된 호스트 쌍이 서로 직접 통신하도록 한다. 피어는 사용자의 랩탑이나 스마트폰이 갖는다. 특정 서버를 통하지 않고 피어가 통신하므로 이 구조를 피어-투-피어라고 한다.
  • 자가 확장성
    각 피어이 파일을 요구함으로써 작업 부하를 만들어 내기도 하지만 각 피어들은 파일을 다른 피어들에게 분배함으로써 서비스 능력이 증가하기도 한다.

2.1.2 프로세스 간 통신

  • 프로세스
    종단 시스템에서 실행되는 프로그램을 말한다.
    운영체제 용어에서 실제 통신하는 것은 프로그램이 아니라 프로세스 이다.
    프로세스 간 통신 규칙은 종단 시스템의 운영체제에 의해 좌우된다.
    2개의 다른 종단 시스템에서 프로세스는 컴퓨터 네트워크를 통한 메시지 교환으로 서로 통신한다.

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

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

프로세스는 소켓을 통해 네트워크로 메시지를 보내고 받는다.!

프로세스는 집, 소켓을 출입구 로 비유된다.
프로세스가 메시지를 다른 호스트의 프로세스로 보내고 싶을 때, 소켓 바깥 네트워크로 메시지를 밀어낸다.
이 송신 프로세스는 네트워크를 거쳐 목적시 프로세스 소켓으로 메시지를 보내기 위해 송신 프로세스의 소켓에 전송 구조가 있다.
메시지가 목적지 호스트에 도착하면 메시지는 수신 프로세스의 소켓을 거치고 수신 프로세스는 메시지를 처리한다.

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

프로세스 주소 배정

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

  1. 호스트의 주소
  2. 그 목적지 호스트 내의 수신 프로세스를 명시하는 식별자

인터넷에서 호스트는 IP주소로 식별된다.
수신 프로세스는 포트 번호로 식별된다.
인기 있는 프로세스는 특정 포트 번호로 식별된다.(예: 웹서버 80번, 메일 서버 25번)

2.1.5 어플리케이션 계층 프로토콜

애플리케이션 계층 프로토콜은 다른 종단 시스템에서 실행되는 애플리케이션의 프로세스가 서로 메시지를 보내는 방법을 정의 한다.

  • 교환 메시지 타입
  • 여러 메시지 타입의 문법
  • 필드의 의미, 즉 필드에 있는 정보의 의미
  • 언제, 어떻게 프로세스가 메시지를 전송하고 메시지에 응답하는지 결정하는 규칙

웹의 어플리케이션 계층 프로토콜인 HTTP 는 RFC로 얻을 수 있다.

애플리케이션 계층 프로토콜은 네트워크 애플리케이션의 한 요소일 뿐이다.

  • 웹은 웹 서버로부터 문서를 얻게 해주는 네트워크 애플리케이션

  • 웹 어플리케이션은 HTML, 브라우저, 웹 서버 그리고 애플리케이션 계층 프로토콜을 포함하는 여러 요소들로 구성된다.

  • 애플리케이션 계층 프로토콜 SMTP(Simple Mail Transfer Protocol)은 전자 메일의 주요한 프로토콜이다.

  • SMTP는 전자메일 애플리케이션의 한 요소(하지만 중요한 요소)일 뿐이다.

강의 영상 순서에 따라 정리함

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

소켓이 애플리케이션 프로세스와 트랜스포트 프로토콜 간의 인터페이스라는 것을 까먹지 말자.
트랜스포트 계층 프로토콜이 그것을 이용하는 애플리케이션들에게 제공할 수 있는 서비스는 무엇인가?

  1. 신뢰적 데이터 전송
  2. 보장된 가용 처리율(처리량)
  3. 시간 보장
  4. 보안(예: 암호화)

2.1.4 인터넷 전송 프로토콜이 제공하는 서비스

인터넷이 제공하는 애플리케이션 지원 유형
인터넷은 TCP와 UDP 전송 프로토콜을 제공한다.

  • TCP
    TCP는 반드시 서버와 클라이언트가 연결되어있어야 한다.
    대신 신뢰성 있는 데이터 전송 서비스를 제공한다.
    또한 혼합 제어 방식, 즉 통신하는 프로세스의 직접 이득보다는 인터넷의 전체 성능 향상을 위한 서비스를 포함한다.

  • UCP
    연결을 하지 않아도 된다. 그러나 신되성이 없다.
    혼합 제어 방식도 포함하지 않는다. 대신 원하는 속도로 하위 계층에 보낼 수 있다.

대부분의 서비스는 TCP를 사용하고 있다. 신뢰성을 보장하기 때문이다.
그러나 인터넷 전화 응용 개발자들은 UDP를 선호하기도 한다. TCP의 혼합제어 방식과 오버헤드를 회피할 수 있기 때문이다.
그러나 대부분의 방화벽에 UDP 트래픽이 차단될 수 있다.

2.2 웹과 HTTP

2.2.1 HTTP 계요

  • 온 디맨드(on-demand)방식
    사용자는 그들이 원할 때, 원하는 것을 수신한다.

웹의 어플리케이션 계층 프로토콜인 HyperText Transfer Protocol (HTTP)는 웹의 중심이다.

http는 클라이언트-서버 모델을 채택한다.
서로 다른 종단 시스템에서 수행되는 클라이언트 프로그램과 서버 프로그램은 서로 http 메시지를 교환하여 통신한다.

웹 페이지(web page,문서) 는 개체들로 구성된다.

  • 객체
    단순히 단일 url로 지정할 수 있는 하나의 파일이다.
    대부분의 웹 페이지는 기본 HTML 파일과 여러 참조 객체로 구성된다

URL 구조
https://www.youtube.com/watch?v=S9GEPaQ1lFs&list=PLm556dMNleHc1MWN5BX9B2XkwkNE2Djiu&index=9

  • www.youtube.com 은 호스트 네임이다.
  • watch?~ 는 경로 이름이다

HTTP는 웹 클라이언트가 웹 서버에게 웹 페이지를 어떻게 요청하는지와 서버가 클라이언트로 어떻게 웹 페이지를 전송하는 지를 정의한다.

HTTP는 TCP를 전송 프로토콜로 사용한다.

  • HTTP 클라이언트는 포트 80을 이용하여 먼저 서버에 TCP연결을 시작한다.
  • 연결이 이루어지면 브라우저와 서버 프로세스는 그들의 소켓 인터페이스를 통해 TCP로 접속한다.
  • 클라이언트는 HTTP 요청 메시지를 소켓 인터페이스로 보내고 소켈 인터페이스로부터 HTTP 응답 메시지를 받는다.
  • 마찬가지로 HTTP서버는 소켓 인터페이스로부터 요청 메시지를 받고 응답 메시지를 소켓 인터페이스로 보낸다.

HTTP는 비상태 프로토콜
서버는 진행중인 요청에 대한 내부 상태를 유지하지 않는다.

2.2.2 비지속 연결과 지속 연결

비지속 연결

  1. TCP 연결이 열린다.
  2. 최대 하나의 객체에서 열린다.
  3. TCP 연결을 통해 전송되고 연결이 닫힌다.

여러 객체를 다운로드 하려면 TCP 연결 여러개를 열어야한다.

  • RTT(round-trip time)
    작은 패킷이 클라이언트로부터 서버까지 가고, 다시 클라리언트로 되돌아오는 데 걸리는 시간
  1. 연결 시도
  • 1RTT
  1. 연결 응답
  2. 파일 요청
  • 2RTT
  1. 파일 전송
  • 파일 전송시간
    총 응답시간은 2RTT+ HTML 파일 전송 시간

지속 연결

  1. TCP 연결이 서버로 열린다.
  2. 여러가지 객체가 하나의 TCP 연결을 타고 요청된다.
  3. TCP 연결이 닫힌다.

-RTT
HTTP 1.1 지속 연결을 자주 쓴다.
동일한 클라이언트와 서버 사이에서 연결과 응답을 받을 수 있다.

2.2.3 HTTP 메시지 포맷

요청 메시지

GET /somedir/page.html HTTP/1.1
Host: www.someschool.edu
Connection: close
User-agent: Mozilla/5.0
Accept-language: fr

  • index.html 을 가져온다
  • http 1.1 을 이용해
  • 호스트는 www.someschool.edu이고
  • 모질라 브라우저를 이용해 요청하고 있다.
  • 허용되는 언어는 프랑스어다.
  • 연결은 닫혀있다.

HTTP 요청 메시지의 일반 포맷

  • POST

  • HEAD
    GET요청과 동일하지만 응답이 없는 응답을 요청
    해달 개체를 실제로 검색하진 않는다.

  • GET

  • PUT

  • HTTP 응답 메시지

    HTTP/1.1 200 OK
    Connection: close
    Date: Tue, 18 Aug 2015 15:44:04 GMT
    Server: Apache/2.2.3 (CentOS)
    Last-Modified: Tue, 18 Aug 2015 15:11:03 GMT
    Content-Length: 6821
    Content-Type: text/html
    (data data data data data ...)

  • HTTP/1.1 프로토콜을 쓰고 있다.

  • 상태코드 200 : 성공

  • OK : 짧은 상태문구

  • 응답 헤더줄
    날짜와 시간, 서버 유형(아파치 서버 2.2.3), 수정된 시간, 콘텐츠 길이, 콘텐츠 유형 필드,

  • 상태코드
    200 OK : 요청 성공
    301 Moved Permanently: 데이터가 딴곳으로 갔다.
    400 Bad Request: 요청이 잘못되었다.
    404 NOT FOUND: 서버에서 문서를 찾을 수 없다
    505 HTTP Version Not Supported: 요청 HTTP 프로토콜 버전을 서버가 지원하지 않는다.

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

웹 사이트를 쿠키를 사용하여 사용자에 대한 정보를 유지하며, 이 쿠키 기술은 네가지 요소를 가지고 있다.

  1. HTTP 응답 메시지 쿠키 헤더 라인
  2. HTTP 요청 메시지 쿠키 헤더 라인
  3. 사용자의 브라우저에 사용자 종단 시스템과 관리를 지속시키는 쿠키 파일
  4. 웹 사이트의 백엔트 데이터 베이스

클라이언트는 방문한 다른 웹사이트의 쿠키정보도 가지고 있다.
EBAY는 있지만 AMAZON은 없는 상황
아마존에 요청 시 쿠키를 생성하고 트랜잭션 정보를 DB에 저장
쿠키정보를 가지고 클라이언트에 HTTP에 응답
두번째 요청에선 아마존의 쿠키정보는 이용해 쿠키 작업을 수행 후 응답
요청이 특정 상품 하나만 보려고 했음에도 비슷한 상품 항목을 같이 보낸다.
일주일뒤에 다른 쿠키로 같은 응답을 할 수 있다.

  • 쿠키는 어디 쓰이나요?
  1. 인증
  2. 장바구니
  3. 추천
  4. 사용자 세션 상태

2.2.5: 웹 캐싱

profile
뭐라도 하자

0개의 댓글