응용계층

부서진·2023년 5월 14일

Computer Science

목록 보기
15/18

출처: https://chunggaeguri.tistory.com/entry/HTTP-%EB%8F%99%EC%9E%91-%EB%B0%8F-%EB%A9%94%EC%8B%9C%EC%A7%80-%ED%98%95%EC%8B%9D

  • 카톡
  • 게임 (스타크래프트, LoL)
  • 인터넷 브라우저 상의 응용
    • 구글 검색, 웹툰, 신문, 블로그, 카페, 금융
  • 메일
  • 토렌트
  • 클라우드 (iCloud, Ndrive)
  • 곰플레이어, iptv
  • chrome store
  • 지도
  • 스카이프
  • 예매
  1. 네트워크 응용의 구조
    • client-server 구조
      • 웹 검색
    • peer to peer (p2p) 구조
      • 토렌트
    • 하이브리드 구조
      • Skype, 스타크래프트
  2. 프로세스 간 통신
    • 응용: 네트워크로 연결된 컴퓨터들이 협력하여 제공하는 서비스 (예. 구글 검색)
    • 프로세스: 하나의 컴퓨터에서 독립된 메모리 공간을 가지고 실행되고 있는 프로그램의 단위
      • 서버 프로세스
      • 클라이언트 프로세스
      • 피어 프로세스
    • 프로세스 주소
      • 기계 주소: IP (xxx.xxx.xxx.xxx 0~255)
      • 포트 번호: 2162^{16} TCP/UDP
    • 소켓 통신
$ emacs client.py server.py


# client.py
import socket

clientSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clientSocket.connect(("203.253.146.138", 9999))

clientSocket.send("Hello, Server.")

str = clientSocket.recv(100)
print str

clientSocket.close()


# server.py
import socket

serverSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serverSocekt.bind(("", 9999))
serverSocket.listen(1)

(sock, addr) = serverSocket.accept()

sock.send("Hello, Client")

str = sock.recv(100)
print str

sock.close()
serverSocket.close()


$ python server.py
$ python client.py
  1. 인터넷 전송 계층의 서비스
    |TCP|UDP|
    |—-|—-|
    |연결기반 전송계층|무연결 전송계층|
    |연결에 대한 관리
    데이터 유실 복구|데이터 유실 가능|
    |데이터 순서 보장|데이터 순서 역전 가능|
    |혼잡에 민감한 패킷 전송률 조정|최대한 성능으로 패킷 전송|
  • FTP (File Transfer Protocol)
    • 목적: 원격 호스트에 있는 파일을 가져오거나 보내기 위한 protocol
    • 가정1: client 사용자는 server의 파일을 읽을 수 있는 권한의 계정이 있다
    • 가정2: 계정이 없는 경우도 접근 가능하도록
    • 특징
      • 세션 로그인과 종료가 존재
      • 로그인을 통하여 권한 획득
      • 로그인 정보를 서버가 인지
      • stateful protocol
  • HTTP (Hypertext Transfer Protocol)
    • 세션 계층 (www)
    • HTML을 기본 표현 계층으로 사용
    • 목적: 전세계 인터넷에 있는 정보를 탐색
    • 발명: Tim Berners-Lee가 CERN에서 1980년대 말~1990년대 초
    • 동작
      • Web 자료를 가져와서 (GET) 보여주기
      • Web 자료에 자료를 Posting 하기 (POST)
    • URL (Universal Resource Locator)
      • 예) http://formal.kau.ac.kr/connect/index.html
        • http / file / ftp: 프로토콜 이름
        • //formal.kau.ac.kr //203.76.23.69 / :8080/: 호스트 이름 [:포트번호]
        • /connect/index.html: 특정 자원의 위치
    • HTTP Transaction
      • client -> server (URL GET Request / POST)
      • TCP 연결
      • server -> client (응답 200 OK / ERROR)
      • TCP 연결 종료
      • Stateless Protocol
    • HTTP 요청 메시지 형식
      • HTTP Request Message = Request Header + 빈 줄 + Request Body
      • 첫번째 줄 (start-line)
        • 요청 메서드 + 요청 URI (Universal Resource Identifier) + HTTP 프로토콜 버전
        • GET / background.png HTTP/1.0
          • 원하는 자원을 가져오는 목적
        • POST / HTTP 1.1
          • 게시판에 글 올리기
          • 사진 올리기
          • 웹 브라우저를 이용해 e-mail 보내기
          • 로그인
      • 두 번째 줄 (http headers)
        • Header 정보들 ('Header Name: Header Value' 형태)
        • host: formal.kau.ac.kr
        • user-agent: Mozilla/5.0
        • 각 줄은 Line Feed(LF)와 Carriage Return(CR)로 구분된다.
      • 빈 줄 (empty-line)
        • 요청에 대한 모든 메타 정보가 전송되었음을 알린다.
      • Body
        • POST, PUT의 경우에만 존재
        • 요청과 관련된 내용 (HTML 폼 콘텐츠)
        • id = kau
        • pw = kau
        • action = login
    • HTTP 응답 메시지 형식
      • HTTP Response Message = Response Header + 빈줄 + Response Body
      • 첫 번째 줄 (status-line)
        • HTTP 프로토콜 버전 + 응답 코드 + 응답 메시지
        • HTTP/1.1 404 Not Found.
      • 두 번째 줄 (http headers)
        • Header 정보들 ('Header Name: Header Value' 형태)
        • 날짜, 웹 서버 이름, 웹 서버 버전, 콘텐츠 타입, 콘텐츠 길이, 캐시 제어 방식 등
        • 각 줄은 Line Feed(LF)와 Carriage Return(CR)로 구분된다.
      • 빈 줄 (empty-line)
        • 요청에 대한 모든 메타 정보가 전송되었음을 알린다.
      • Body
        • 실제 응답 리소스 데이터
        • 201, 202와 같은 상태 코드를 가진 응답에는 보통 body가 존재하지 않는다.
  • Cookie
    • 웹 응용의 구조

      클라이언트서버
      응용 계층현재 홈페이지서버 응용로그인 정보, 장바구니
      표현 계층HTML 엔진서버 응용 엔진
      세션 계층HTTPHTTPstateless
    • 서버 "응용"이 클라이언트의 이전 작업 정보(state)를 파악하기 위한 도구

    • 프로토콜

      • HTTP Response 헤더: Set-cookie라는 필드 (서버->클라이언트)
      • HTTP Request 헤더: Cookie라는 필더 (클라이언트->서버)
    • 방법론

      • 기억해야 할 사항을 쿠키에 담아 클라이언트가 기억하도록 하고 서버는 클라이언트의 방문 지수를 쿠키 정보에 맞추어 반영
    • 문제

      • 클라이언트에 많은 권한과 정보를 준다
      • 해결책: 세션
    • 세션

      • 클라이언에게 세션 ID 정보만 쿠키로 전달하고 세션들의 특성을 서버가 관리
      • 예) 몇 번 방문하는지
  • 성능 향상
    • 다중 Transaction
      • Persistent HTTP (연결 종료가 한 번으로 줄어들음)
      • Pipeline HTTP (받고 보내는 것을 반복하지 않고, 한꺼번에 받고 한꺼번에 보내기)
      • TCP 연결/종결 시간
      • 지연 시간: 패킷을 보내기 시작한 시점에서 패킷을 받기 시작한 시점까지 걸리는 전송 지연 시간
      • 전송률: 단위 시간(s) 당 전송되는 데이터의 양
      • 예) 끝단 간 지연 시간이 100ms이고, 전송률이 100MB/s인 네트워크에서 1MB를 전송하여 수신을 완료하는데 걸리는 시간? (100+10)ms
    • 네트워크 구조 (Web Cache, proxy Server)
      • ISP (Internet Service Provider) 에서 비용 절감을 위하여 이전에 가져온 적이 있는 문서를 DB에 임시 저장해 놓았다가 동일 문서가 다시 요청될 때 재사용
      • Web cache: 중개 상인의 개념 (Server -> Client)
      • Web cache가 주는 이득
        • 요청에 대한 응답 시간 단축 (HDD > memory > Cache)
        • 제공하는 교통량 증가 -> 더 많은 사용자 수용
        • 더 적은 서버 용량으로 더 많은 사용자 지원
      • client <-> cache <-> server (중간에서 엿보다가 헤더 저장, 업데이트 된 내용 있는지 서버에 물어보고 없으면 클라이언트에게 전송)
  • DNS (Domain Name System)
    • Internet에서의 ID (기계)
      • IPv4 32bit (8bit * 4)
      • IPv6 128bit (16bit * 8)
      • Domain Name
        • 순수하게 인간을 위한 시스템
        • 응용계층 (인터넷 5계층) 에서만 관여
    • 서비스
      • Domain Name -> IP 주소
      • Aliasing 관리
      • 전 우주적으로 중앙 관리
      • 분산 관리 (계층적 분산 관리)
    • 계층
      1. Root Name Server
      2. Top-level domain name server (.kr / .com)
        • Top-level domain server의 IP를 반환 (유효기간과 함께)
        • 유효기간 동안은 동일한 top-level domain server IP 요청 X
      3. Authorized DNS (kau.ac.kr)
      4. Local DNS
    • 동작
      • recursive domain name resolution
        • local DNS > Root NS > TLDNS > Authorized DNS > TLDNS > Root NS > local DNS
      • interative
        • local DNS > Root NS > local DNS > TLDNS > local DNS > Authorized DNS > local DNS
  • P2P (Peer to Peer)
    • 서버 없이 단말들끼리 직접 상호간 서비스를 제공하는 시스템 (물물 교환)
    • 서비스 보장 X
    • Peer들은 IP를 바꾸며 옮겨 다닐 수 있다.
    • Hybird System
      • 서비스 메타 정보는 서버가 관리
      • 실제적 서비스는 peer 끼리
      • Skype, Starcraft
    • Pair P2P
      • Torrent
      • 문제
        • Peer가 없다
        • 신뢰할 수 없다. (해시 코드)
        • 이기적
        • 조각들의 쏠림 현상
      • Bitcoin

0개의 댓글