네트워크 (3) 응용 계층

gmlwlswldbs·2021년 12월 26일
0

Computer Science

목록 보기
15/16
  • 네트워크 계층
    • 응용 계층 : 분산된 시스템(사용자 / 시스템 제공자)을 하나의 통합된 응용 시스템(구글 검색, 통합 정보 시스템, 네이버 웹툰, 롤 등)으로 묶어주는 계층
    • 표현 계층 : 분산된 응용의 표현 방법에 대한 규약 (UI)
      • HTML (Hyper Text Markup Language)
    • 세션 계층 : 응용의 접속 및 통신의 방법과 관련된 규약
      • HTTP
    • 전송 계층 : 품질 보장 (비서)
    • 네트워크 계층 : 양 끝단으로의 전달, 경로 설정, 네트워크 코어 (switch 가 관여) (우체국)
      • 어떻게 갈 것인가
    • 링크 계층 : 어떻게 switch까지 전달, 다음 단으로의 전달
      • 어떻게 잘 전송을 할 것인가, 구체적인 전송 기술을 다룸
    • 물리 계층 : (자동차, 도로)

응용계층

  • 카톡, 게임 (롤, 스타크래프트 등), 인터넷 검색 (브라우저상의 응용들, 검색 웹툰 신문 블로그 등), 메일

인터넷 전송 계층의 서비스

  1. TCP
  • 연결 기반 전송 계층 : 두 개의 프로세스들을 연결을 해놓고 나서 통신을 한다
    • 프로세스 1, 2 간의 (가상적) 연결을 해놓고 나서 양쪽에 소켓 하나씩
  • 연결에 대한 관리
    • 데이터 유실 복구
  • 데이터 순서 보장
  • 혼잡에 민감한 패킷 전송률 조정
  1. UDP
  • 무연결 전송 계층 : 프로세스 1, 2간의 통신, 소켓을 양쪽에서 열지만 선은 없음
    • 연결된 소켓에 아무렇게나 데이터 보낼 수 있음
  • 관리가 어려움, 데이터 유실 가능성
  • 데이터 순서 역전 가능
  • 최대한 성능으로 패킷 전송

세션계층

  • FTP (File Transfer Protocol)
  • 목적 : 원격 호스트에 있는 파일을 가져오거나 원격 호스트에 파일을 보내기 위한 프로토콜
  • 가정 1 : 클라이언트 사용자는 서버의 파일을 읽을 수 있는 권한의 계정이 있다
    가정 2 : 계정이 없는 경우도 접근이 가능하도록 설정할 수 있다
  • 세션 로그인과 종료가 존재 : 가져오고 나서 명시적으로 종료를 해줘야 함.
  • 로그인을 통하여 권한 획득
  • 로그인 정보를 서버가 관리
  • stateful protocol : 사용자의 상태 정보를 사용
  • HTTP
  • www를 위한 세션 계층 프로토콜
  • HTML을 기본 프레젠테이션 계층으로 사용
  • 목적 : 전세계 인터넷에 있는 정보를 탐색
  • 동작
    • web 자료를 가져와서 (get) 보여주기
    • web에 자료를 posting 하기
  • url 입력, get 요청, 요청된 문서 가져옴
  • GET 요청 : 원하는 자원을 가져오는 목적
    • 형식 :
      • GET <서버상의 자원의 위치> <버전> ex. GET /~/ HTTP/1.1
        매개변수1 : ~
        ~
        매개변수2 :
        host : ~~
        User-agent : Mozilla/5.0 -------- HTTP 요청 헤더
        (한 줄 띄면 GET 요청 끝남)
    • 서버의 응답
      • HTTP/1.1 200 ok
        Last-modified : 날짜
        .
        .
        Content-length : 487
        . --------------헤더
        (한 줄 띄기)
        <몸통 : 실제 자원 (파일)>
  • POST 요청: 자원을 서버에 게시하고 싶을 때
    • ex. 게시판에 글 올리기, 사진 올리기, 웹브라우저를 이용해 이메일 보내기, 로그인
    • POST /~/ HTTP/1.1
      Host : ~

      user-agent : Mozilla/5.0 --------- 헤더
      (한 줄 띄기)
      <몸통 : 컨텐츠 내용>
  • URL (Universal Resource Locator)
  • http: : 프로토콜 이름
    • file: , ftp: 가능
  • //naver.com : 호스트의 이름
    • //208.76.23.69
  • /~~~/index.html : 기계 안에서 원하는 자원의 위치 (디렉토리) & 파일명
    • 윈도우 파일 : c:\windows\a.exe
  • http://naver.com:8080/ 도 가능

  • URI (Universal Resource Identifier)
    • 뒤에 인자가 붙음
    • 동적인 자원을 요청
  • Cookie
  • 웹 응용의 구조
    • 웹 클라이언트 : 현재 페이지(응용계층) - HTML 엔진(프레젠테이션 계층) - HTTP(세션 계층)
    • 웹 서버 : 서버 응용 프로그램 - 서버 응용 엔진 - HTTP (세션 계층, stateless)
  • 쿠키 : 서버 응용이 클라이언트의 이전 작업 정보(state)를 파악하기 위한 도구
  • 쿠키 프로토콜
    • HTTP Response 헤더 : Set-cookie라는 필드 (서버 -> 클라이언트)
    • HTTP Request 헤더 : cookie 라는 필드 (클라이언트 -> 서버)
  • 처음 접근했으면 쿠키 정보 없음, 응답하면서 매개변수 중 Set-cookie : visit=1, 다음번 동일한 사이트 방문할 때 cookie : visit=1 쿠키를 줌, 응답할 때 Set-cookie : visit=2
  • 방법론 : 기억해야 할 상황을 쿠키에 담아 클라이언트가 기억하도록 하고 서버는 클라이언트의 방문 시 주는 쿠키 정보에 맞추어 반환
    • 클라이언트에게 너무 많은 권한을 주고 너무 많은 정보를 오픈한다
    • 해결책 : 세션
  • 세션 : 클라이언트에게 세션 아이디 정보만 쿠키로 전달하고 세션들의 특성은 서버가 관리

    • ex. 몇번 방문했는지?
    • 쿠키 : 클라이언트가 저장 / 세션 : 서버가 저장
  • HTTP Transaction의 성능 향상 (다중 Transaction)

    • 기본 : 낭비가 심하다

  • 발전 : Persistent HTTP (connection keep alive)
    - 연결을 끊지 않고 기다림, 한번의 연결로 작업
  • Pipelined HTTP
  • 성능

    1. 지연시간 : 패킷을 보내기 시작한 시점에서 패킷을 받기 시작한 시점까지 걸리는 전송지연시간
    2. 전송률 : 단위 시간 당 전송되는 데이터의 양
      ex. 끝단 간 지연시간이 100ms이고 전송률이 100MB/s인 네트워크에서 1MB를 전송하여 수신을 완료하는데 걸리는 시간? 100ms + 10ms = 110ms
      ex. 끝단 간 지연시간 : 100ms, 전송률 : 100KB/s, 전송받고자 하는 정보 : HTML페이지(1KB) + 이미지 3개 (10KB * 3), HTTP 헤더 req, res 각 1KB, tcp 연결 & 종결시간 400ms & 200ms
  • 성능향상 2 (네트워크 구조)

    • Web Cache (Proxy Server)
      • ISP (인터넷 서비스 제공자)가 많이 요청되는 데이터는 웹 캐시(자기 내부)에 갖고 있어서 굳이 서버까지 안가고 웹 캐시에 있는 것을 가져다주면 됨 (빠르게 전송할 수 있음)
      • ISP에서 비용 절감을 위하여 이전에 가져온 적이 있는 문서를 DB에 임시 저장해놓았다가 동일 요소가 다시 요청될 때 재사용 (클라이언트에게 가상적으로 서버 역할, 서버에게는 클라이언트역할, 서버이자 클라이언트가 될 수 있음 (중개상인의 개념))
      • 이득 :
        1. 요청에 대한 응답시간 단축
        2. 제공하는 교통량 증가 -> 더 많은 사람 수용할 수 있음
        3. (서버 입장에서는) 더 적은 서버 용량으로 더 많은 사람에게 제공

      

DNS (Domain Name System, Server)

  • Internet에서의 ID (기계)
    • IP
      • IPv4, 32bit(8bit × 4), xxx.xxx.xxx.xxx
      • IPv6, 128bit(16bit × 8), xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx (16진수로 표현)
    • Domain Name
      • 순수하게 인간을 위한 시스템
      • www.naver.com
      • 응용계층에서만(5계층 중) 관여
        • 운영체제 : user (5계층 중 응용계층), kernel (나머지)
  • Domain Name System
    • 서비스
      • Domain Name -> IP주소
      • Aliasing 관리
        • 한 IP에 여러 도메인 할당
      • 전우주적으로 중앙 관리
        • 하나의 주소로 모든 사람이 접속함
      • 분산 관리 (계층적 분산 관리)
        • 중요 : 어떻게 분산관리하느냐
    • Domain Name Server의 계층
      • 최상위 : Root Name Server
        • Top Level Domain Name Server 관리
          • Top level domain : .kr .com .edu .org .net
          • Top level domain server의 IP를 반환 (유효기간과 함께)
          • 유효기간동안은 동일한 Top level domain Sercer IP 요청 X
      • Root Ns - TLDNS (.kr), TLDNS(.com) 등등 같은 .com이 수십개(이상)있을 수도 - Autherized DNS (naver.com) - Local DNS 여러 개 (Autherized DNS가 공인함) - 컴퓨터
        • Autherized DNS, Local DNS는 캐시를 갖고 있어서 자주 물어보는 것은 갖고 있음
      1. recursive Domain Name Resolution (친절, 최근X)
        • 컴퓨터가 www.google.com 을 물어보면 (모든 캐시에서 타임아웃된다면) Root Ns에게 물어보면 (Local DNS에서 Root Ns로) TLDNS(.com)에게 www.google.com 물어보고 Autherized DNS이 google.com 알려줌
      2. iteraive Domain Name Resolution (친절X)
        • Root Ns가 TLDNS(.com) 주소 목록을 Local DNS에 알려줌. 그러면 TLDNS(.com)에게 www.google.com IP물어보면 TLDNS(.com)가 google.com의 Autherized DNS의 리스트를 알려줌. Autherized DNS에게 가서 www.google.com 물어보면 알려줌
        • 가서 물어보면 어디가서 물어봐야할지를 알려주면 찾아가는 시스템

P2P (Peer-to-Peer)

  • 서버 없이 단말(Peer)들끼리 직접 상호간 서비스를 제공하는 시스템
  • 단점
    • 서비스가 보장되지 않음
    • Peer들은 IP를 바꾸며 옮겨다닐 수 있다
    • 보완 : Hybrid System

  • Hybrid System
    • 서비스 메타 정보는 서버가 관리
    • 실제적 서비스는 peer들끼리
    • ex. Skype, 스타크래프트
  • Pure P2P
    • Torrent
    • 문제
      • peer가 없음
      • 신뢰 -> 해쉬코드
      • 이기적
      • 조각들의 쏠림현상
    • Bitcoin

0개의 댓글