[CS/ Network] 컴퓨터 네트워킹 하향식 접근 8판 2장 애플리케이션 계층 / 2.1 네트워크 애플리케이션의 원리

yujeongkwon·2023년 7월 18일
0

CS / Network

목록 보기
4/27

목차

2.1 네트워크 애플리케이션의 원리 74
2.1.1 네트워크 애플리케이션 구조 75
2.1.2 프로세스 간 통신 77
2.1.3 애플리케이션이 이용 가능한 트랜스포트 서비스 80
2.1.4 인터넷 전송 프로토콜이 제공하는 서비스 82
2.1.5 애플리케이션 계층 프로토콜 85
2.1.6 이 책에서 다루는 네트워크 애플리케이션 86


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


  • 네트워크 애플리케이션 개발의 중심 : 다른 위치의 종단 시스템에서 동작하고 네트워크를 통해 서로 통신하는 프로그램을 작성하는 것
    • ex) 웹 애플리케이션
      클라이언트 : 사용자의 호스트(데스크톱,랩톱,태블릿,스마트폰 등)에서 실행되는 브라우저 프로그램
      서버 : 서버 호스트에서 실행되는 웹 서버 프로그램
    • ex) 온디맨드 비디오(넷플릭스) 애플리케이션
      클라이언트 : 사용자의 스마트폰, 태블릿,컴퓨터상에서 실행되는 넷플릭스 제공 프로그램
      서버 : 넷플릭스 서버 호스트에서 실행되는 넷플릭스 서버 프로그램

웹/앱개발자는 이렇게 여러 종단 시스템에서 실행되는 소프트웨어(c or java언어)를 작성
근데 우리가 네트워크 코어 장비에서 실행되는 소프트웨어(라우터, 링크계층 스위치)까지 작성하냐!?!? NONO~ 하고 싶어도 못해
-> 각 계층 장비는 해당 계층에서만 기능
= 네트워크 애플리케이션을 위한 통신은 종단 시스템 간의 애플리케이션 계층에서 발생

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

  • 애플리케이션 구조 != 네트워크 구조
  • 애플리케이션 구조

    • 애플이케이션 개발자가 설계
    • 애플리케이션이 다양한 종단 시스템에서 어떻게 조직되어야 하는지를 알려줌.
    • 주로 잘 알려진 구조인 클라이언트-서버 구조 or p2p 구조 중 하나로 작성됨.
  • 클라이언트-서버 구조

    • Server : 항상 동작하고 있는 호스트 -> 클라이언트는 서버로 언제든지 패킷전송, 연결 가능
    • client : 서버의 서비스 요청, 가끔 또는 항상 켜져 있을 수 있음.
    • 클라이언트등 끼리는 서로 직접적으로 통신하지 않음
    • 서버가 고정 IP 주소라는 잘 알려진 주소를 가짐.
    • ex) 웹,파일 전송, 원격 로그인,전자메일
  • 데이터 센터(data center)

    • 많은 수의 호스트를 갖춘 한 가상의 서버를 생성하는 역할로 사용
    • 존재 이유 : 하나의 서버로만 요청을 처리한다면 이에 맞춰 서버가 신속하고 제대로 작동x
    • ex) 검색 엔진(예: 구글),소셜 미디어 네트워킹(예: 페이스북,인스타그램)등
    • 보통 하나의 데이터 센터는 10만 개 정도의 서버를 갖춤
    • 서비스 제공자는 데이터 센터로부터 데이터 전송을 위해 상호연결과 대역폭에 합당한 비용 지불
  • P2P 구조

    • 항상 켜져 있는 인프라스트럭처 서버에 거의 의존x
    • 애플리케이션은 peer라는 간헐적으로 연결된 호스트 쌍이 서로 직접 통신
    • peer
      - 서비스 제공자가 소유x
    • 사용자들의 데스크톱과 랩톱으로 대부분 가정,대학,사무실에 위치
    • 특정 서버를 통하지 않고 피어가 통신 => 피어 투 피어(peer-to-peer)라고 함.
    • ex) 파일 공유 애플리케이션인 비트토렌트(BitTorrent)

    장점

    • 자가 확장성(self-scalability)
      - 각 피어들은 파일을 다른 피어들에게 분배 -> 시스템에 서비스 능력을 추가
    • 비용 효율적
      - 일반적으로 상당한 서버 인프라스트럭처와 서버 대역폭을 요구X

    단점

    • 고도의 분산 구조 특성 -> 보안,성능,신뢰성 면에서 큰 문제

난 tcp 처럼 신뢰성있는 연결 살짝 논리적인 개념같이 생각했는데 ㄹㅇ 물리적 연결이였음. 무션 연결로 이케이케 통신하는거래 각각이 그래서 줠라느린게 문제 -> 그래서 잘 안씀

📳 2.1.2 프로세스 간 통신

  • 실제 통신하는 것 : 프로그램 프로세스(process)

  • 프로세스: 종단 시스템에서 실행되는 프로그램

  • 통신 프로세스가 같은 종단 시스템에서 실행될 때 그들은 서로 프로세스 간에 통신

  • 종단 시스템의 운영체제에 의해 좌우된다.

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

    • 송신 프로세스는 메시지를 만들어서 네트워크로 전송
    • 수신 프로세스는 메시지를 받고 역으로 메시지를 보냄으로써 응답

  • 클라이언트와 서버 프로세스

    • 클라이언트 : 두 프로세스 간의 통신 세션에서 통신을 초기화(다른 프로세스와 세션을 시작하려고 접속을 초기화)하는 프로세스
    • 서버 : 세션을 시작하기 위해 접속을 기다리는 프로세스
    • ex) 웹 : 클라이언트 프로세스 - 브라우저,서버 프로세스 - 웹 서버
    • ex) P2P 파일 공유 : 클라이언트 프로세스 - 파일을 내려받는 피어,서버 프로세스 - 파일을 올리는 피어
      • 한 프로세스가 클라이언트와 서버 둘다 가능

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

    • 소켓(socket) : 호스트의 애플리케이션 계층과 트랜스포트 계층 간의 인터페이스
    • = 네트워크 애플리케이션이 인터넷에 만든 프로그래밍 인터페이스 -> 애플리케이션과 네트워크 사이의 API(Application Programming Interface)라고도 함
    • 애플리케이션 개발자는 소켓의 애플리케이션 계층에 대한 모든 통제권을 가짐
    • but 소켓의 트랜스포트 계층에 대한 통제권 X
      • (1) 트랜스포트 프로토콜의 선택
      • (2) 최대 버퍼와 최대 세그먼트 크기
      • 등 약간의 트랜스포트 계층 매개변수의 설정만 가능


  • 프로세스 주소 배정

    • 수신 프로세스를 식별하기 위해 필요한 두 가지 정보
      (1)호스트의 주소
      - 인터넷에서 호스트는 IP 주소로 식별
      * IP 주소 : 32비트로 구성, 호스트를 유일하게 식별
      (2) 그 목적지 호스트 내의 수신 프로세스를 명시하는 식별자
      - 목적지 포트 번호(port number) : 일반적으로 한 호스트가 많은 네트워크 애플리케이션을 수행하기에 이를 식별
      - 인기 있는 애플리케이션은 특정한 포트 번호가 할당
      ex) 웹 서버는 포트 번호 80번, 메일 서버는 포트 번호 25번


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

  • 송신 측의 애플리케이션은 그 소켓을 통해 메시지 전송 -> 그 소켓의 반대편에서 트랜스포트 프로토콜은 메시지를 수신 프로세스의 소켓으로 이동!

  • 네트워크는 하나 이상의 트랜스포트 프로토콜 가짐, 웹/앱 개발자는 트랜스포트 프로토콜 중 1택

  • 트랜스포트 계층 프로토콜 제공 서비스 : 신뢰적 데이터 전송,처리율,시간, 보안

  • ⭐신뢰적 데이터 전송

    • 패킷들은 컴퓨터 네트워크 내에서 손실될 수 있음.
      • ex) 패킷이 라우터의 버퍼에서 오버플로(overflow)
      • ex) 패킷의 비트가 잘못되면 호스트 혹은 라우터에 의해 버려질 수 있음.
    • 신뢰적 데이터 전송 : 데이터가 올바르고 완전히 다른 애플리케이션에 전달되도록 보장
      • 트랜스포트 프로토콜은 송신 프로세스는 데이터를 소켓으로 보내고 데이터가 오류 없이 수신 프로세스에 도착 확신
      • ex) 전자메일,파일 전송,원격 호스트 접속,웹 문서 전송, 재무 에플리케이션
    • +) 손실 허용 애플리케이션 : 어느 정도의 데이터 손실 감수
      • ex) 실시간 오디오/비디오 혹은 저장 오디오/비디오 같은 멀티미디어 애플리케이션

  • 처리율

    • 처리율 : 네트워크 경로를 따라 송신 프로세스가 수신 프로세스로 비트를 전달할 수 있는 비율
    • 처리율은 시간에 따라 변동
      • 다른 세션들이 네트워크 경로를 따라 대역폭을 공유하고,이 세션들이 생겼다 없어졌다해서
    • 대역폭 민감 애플리케이션 : 처리율 요구사항을 갖는 애플리케이션
      • 트랜스포트 프로토콜은 어느 명시된 속도에서 보장된 가용 처리율을 제공
    • +) 탄력적 애플리케이션 : 가용한 처리율을 많으면 많은 대로 적으면 적은대로 이용
      - ex) 전자메일,파일 전송,웹 전송이 융통성 있는 애플리케이션

  • 시간

    • 트랜스포트 계층 프로토콜은 시간 보장(timing guarantee)을 제공
    • 실시간 상호작용 애플리케이션에서 사용
    • ex) 인터넷 전화,가상 환경,원격회의, 다자간 게임

  • 보안

    • 트랜스포트 프로토콜은 애플리케이션에 하나 이상의 보안 서비스를 제공

      • 송신 호스트에서 트랜스포트 프로토콜 : 송신 프로세스가 전송하는 모든 데이터를 암호화
      • 수신 호스트에서 트랜스포트 프로토콜 : 수신 프로세스로 전달하기 전에 데이터의 암호를 해독
      • 기밀성, 무결성, 종단 인증 제공

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

  • TCP 서비스

    • TCP 서비스 모델은 연결지향형 서비스와 신뢰적인 데이터 전송 서비스를 포함

    • 연결지향형 서비스

      1. 핸드셰이킹 과정 : 애플리케이션 계층 메시지를 전송하기 전, TCP는 클라이언트와 서버가 서로 전송 제어 정보를 교환
        • 이 클라이언트와 서버에 패킷이 곧 도달할 테니 준비하라고 알려주는 역할을 한다.
      2. TCP 연결이 두 프로세스의 소켓 사이에 존재
        • 전이중연결 : 두 프로세스가 서로에게 동시에 메시지 전송 가능
      3. 애플리케이션이 메시지 전송을 마치면 연결을 끊어야 한다.
    • 신뢰적인 데이터 전송 서비스

        1. 송신측이 바이트 스트림을소켓으로 전달
        1. 바이트 스트림이 손실, 중복되지 않게 수신 소켓으로 전달
    • 혼잡 제어 : 통신하는 프로세스의 직접 이득보다는 인터넷의 전체 성능 향상을 위한 서비스

      • 네트워크가 혼잡 상태에 이르면 프로세스(클라이언트 또는 서버) 속도를 낮춤
      • 각 TCP 연결이 네트워크 대역폭을 공평하게 공유할 수 있게끔 제한
      • (추가) 긴 메시지를 짧은 메시지로 나누고 네트워크가 혼잡할 때 출발지의 전송률을 줄이는 것
    • +) TCP의 보안화 : TLS
      - TCP나 UDP는 암호화 제공X
      - ㄴ-> 인터넷 커뮤니티는 TCP를강화한 TLS(Transport Layer Security)를 개발
      - TLS로 강화된 TCP는 암호화, 데이터 무결성, 종단 인증을 포함하는 보안 서비스 제공
      - 프로토콜이 아님. 애플리케이션 계층에서 구현된 것,
      - ㄴ-> TLS 서비스를 위해 애플리케이션의 클라이언트, 서버 모두 TLS 코드를 포함해야함.
      - 전통적인 TCP 소켓 API와 유사한 자신의 소켓 API를 갖고 있다.
      1. 송신 프로세스는 평문 데이터를 TLS 소켓에게 전달
      2. 송신 호스트에 있는 TLS는 데이터를 암호화하고 암호화된 데이터를 TCP 소켓으로 전달
      3. 암호화된 데이터는 수신 프로세스에 있는 TCP 소켓까지 인터넷을 타고 전달
      4. 수신 소켓은 암호화된 데이터를 TLS로 전달되고 데이터의 암호를 해독
      6. TLS는 TLS 소켓을 통해 평문 데이터를 수신 프로세스로 전달

      HTTPS(Hypertext Transfer Protocol Secure)는 HTTP 프로토콜의 보안 버전
      HTTPS는 SSL/TLS(Secure Sockets Layer/Transport Layer Security) 프로토콜을 사용하여 통신을 암호화하고 인증이 가능하다.


  • UDP 서비스

    • 최소의 서비스 모델을 가진 간단한 전송 프로토콜
    • 비연결형 = 핸드셰이킹X
    • 비신뢰적인 데이터 전송 서비스를 제공
    • 순서 보장 X
    • 혼잡제어 X -> UDP의 송신 측은 데이터를 원하는 속도로 보낼 수 있다

  • 인터넷 트랜스포트 프로토콜이 제공하지 않는 서비스
    • 오늘날 인터넷은 서비스 같은거 없어도 시간 or 대역폭의 보장을 제공할 수는 없지만 웬만하면 잘 작동한다~
    • 많은 방화벽이 UDP 트래픽을 차단하도록 설정되어 있기 때문에,인터넷 전화 애플리케이션은 UDP 통신이 실패할 경우를 대비하여 TCP를 사용하도록 설계되어 있다 다양한 네트워크 애플리케이션의 요구사항
      인기 있는 인터넷 애플리케이션, 애플리케이션 계충 프로토콜 및 하위 트랜스?트 프로토콜

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

  • 애플리케이션 계층 프로토콜 : 다른 종단 시스템에서 실행되는 애플리케이션의 프로세스가 서로 메시지를 보내는 방법(아래 내용)을 정의
    • 교환 메시지 타입(예: 요청 메시지와 응답 메시지)
    • 여러 메시지 타입의 문법(예: 메시지 내부의 필드와 필드 간의 구별 방법)
    • 필드의 의미,즉 필드에 있는 정보의 의미
    • 언제,어떻게 프로세스가 메시지를 전송하고 메시지에 응답하는지 결정하는 규칙
  • 네트워크 애플리케이션 != 애플리케이션 계층 프로토콜
    • 애플리케이션 계층 프로토콜 < 네트워크 애플리케이션
      (애플리케이션 계층 프로토콜은 네트워크 애플리케이션의 한 요소)
    • ex)
      • 네트워크 애플리케이션 : 웹 (사용자가 필요에 따라 웹 서버로부터 문서 제공)
      • 웹 애플리케이션 : 문서 포맷 표준(HTML), 웹 브라우저, 웹 서버(ex 아파치) 등
        => 웹 애플리케이션 계층 프로토콜인 HTTP는 메시지의 포맷과 순서를 정의 = HTTP는 단지 웹 애플리케이션의 한 요소

📖 2.1.6 이 책에서 다루는 네트워크 애플리케이션

5개의 주요 애플리케이션 분야(웹,전자메일,디렉터리 서비스,비디오 스트리밍,KP 애플리케이션)을 다룸

    • 매우 인기 있는 애플리케이션
    • 애플리케이션 계층 프로토콜(HTTP)이 이해하기 쉽고 간단
  • 전자메일
    • 인터넷의 첫 번째 킬러 애플리케이션
    • 여러 애플리케이션 계층 프로토콜을 사용 = 복잡
  • DNS
    • 인터넷을 위한 디렉터리 서비스를 제공
    • 대부분의 사용자는 DNS와 직접 상호작용X but 사용자는 다른 애플리케이션을 통해 간접 제어
    • 코어 네트워크 기능(네트워크 이름을 네트워크 주소로 변환)
  • P2P 파일 공유 애플리케이션
  • 비디오 스트리밍 온디맨드 : CDN(content distribution network) 상에서의 저장 비디오 배분
profile
인생 살자.

1개의 댓글

comment-user-thumbnail
2023년 7월 18일

너무 좋은 글이네요. 공유해주셔서 감사합니다.

답글 달기

관련 채용 정보