Application Layer, Web, HTTP

gmkim·2023년 10월 26일
0

Network

목록 보기
3/9
post-thumbnail

Principles of Network Applications

Application

network-core devices를 위한 소프트웨어를 작성할 필요 x

  • network-core devices는 유저 애플리케이션 실행 x
  • end systems의 애플리케이션을 통해 신속한 앱 개발, 전파
  • 다른 end systems에서 작동
  • 네트워크를 통해 통신

Architecture

Client-Server

HTTP, SMTP, DNS

  • Server
    • 모든 서버는 HOST
      • BUT, 모든 HOST가 서버는 아님 (다른 장치로부터의 연결을 수락하는 HOST만 서버가 될 수 있음)
    • 영구적인 IP 주소
    • Scaling을 위한 data center
  • Client
    • 서버와 통신
    • 간헐적으로 연결 가능
    • 동적 IP 가능
    • 서로 직접적인 통신 x

P2P (Peer-to-peer)

BitTorrent, Internet Telephony, IPTV

  • 상시 서버 x
  • 임의의 end systems들이 직접적으로 통신
  • peer끼리 서비스를 요청하고 제공 (동등 관계)
  • peer가 간헐적으로 연결 -> 관리 복잡
  • 동적 IP -> 관리 복잡

Process

  • process: 호스트 내에서 실행 중인 프로그램

Communicating

  • clients, servers
    • client process: 통신을 시작하는 프로세스
    • server process: 연락을 기다리는 프로세스
  • aside
    • P2P 구조를 사용하는 애플리케이션은 client processes & server processes를 가짐

Socket

  • 프로세스는 소켓으로부터 메시지를 받고, 보냄
    • 보내는 과정은 메시지를 문 밖으로 밀어 냄
    • 송신 프로세스는 수신 프로세스에서 소켓에 메시지를 전달하기 위해 문 반대편의 전송 인프라에 의존

Addressing

  • 메시지를 받기 위해 프로세스는 반드시 식별자가 있어야함
    • 호스트 디바이스는 유니크한 32bit IP 주소를 가짐
    • 식별자는 호스트의 프로세스들과 연관된 IP address, port numbers를 포함

App-layer Protocol

  • types of messages exchanged: 요청(request)인지 응답(response)인지
  • message syntax: 메시지의 필드 및 필드를 설명하는 방법
  • message semantics: 필드 정보의 의미
  • 프로세스가 메시지를 보내고 응답하는 시간과 방법에 대한 규칙
  • open protocols (개방형 프로토콜):
    • RFC에 정의
    • 상호 운용 가능
    • 예: HTTP, SMTP
  • proprietary protocols(독점 프로토콜):
    • 예: skype

Transport Service

  • data integrity
    • file transfer, web transactions 등의 몇 몇 앱들은 100% 믿을만한(reliable) 데이터 전송이 필요하다.
    • 다른 앱들은 약간의 손실 용인 가능 (예: 라디오)
  • timing
    • 인터넷 전화, 상호통신하는 게임 등의 앱들은 지연이 거의 없어야 한다.
  • throughput
    • 송신자와 수신자 사이에서 bits가 전송되는 속도
    • 멀티미디어같은 앱들은 throughput 양이 최소화되어야 한다.
  • security
    • 암호화(encryption), 데이터 무결성

TCP

UDP

Web & HTTP

HTTP Connection

  • HTTP(Hypertext transfer protocol)
    • Web's application layer protocol
    • client/server model
      • client: web objects를 요청, 수신(HTTP 프로토콜 사용) 및 "displays" 하는 브라우져
      • server: 웹 서버가 요청에 대한 응답으로 HTTP 프로토콜을 사용하여 객체를 보낸다.
  • TCP 사용:
    • client는 서버와 TCP 연결을 시작한다 (port 80으로)
    • 서버는 클라이언트로부터 TCP 연결을 수락한다
    • 브라우져(HTTP client)와 웹 서버 사이에서 HTTP 메시지(application-layer protocol messages)를 교환한다.
    • TCP 연결 종료
  • HTTP는 "stateless"
    • 서버는 과거 클라이언트 요청에 대한 정보를 보관하지 않는다.
    • stateless: 이전에 했던 것(history)이 지금 상황에 영향을 끼치지 않음

Non-persistent HTTP

  • TCP 연결을 통해 전송된 최대 하나의 object
    • 연결 후 닫힘
  • 여러 objects를 다운로드하려면 여러 연결이 필요
  • RTT: 작은 패킷이 클라이언트에서 서버로 갔다가, 서버에서 다시 클라이언트로 돌아오는데 걸린 시간

Persistent HTTP

  • 클라이언트, 서버 간 단일 TCP 연결을 통해 여러 objects를 전송
  • 쿠키를 사용할 수 있는 항목:
    • authorization
    • shopping carts
    • recommendations
    • user session state(Web e-email)
  • 어떻게 "state"를 유지할까?
    • protocol endpoints: 여러 트랜잭션에서 송/수신자 상태를 유지
    • cookies: http 메시지는 state를 나타낸다(carry)

Proxy Server : Web Cache

목표: 원래 서버없이 클라이언트 요청 충족

  • 사용가 브라우저를 설정: 프록시 서버에 요청된 내용들을 캐시를 통한 웹 접근
  • Proxy Server: 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 컴퓨터
  • 서버와 클라이언트 사이에서 중계기로서 통신을 수행하는 기능을 가리켜 proxy라고 한다
  • 브라우저는 모든 HTTP 요청을 캐시로 보낸다
    • 캐시의 객체: 캐시는 객체를 반환
    • 아니면 캐시는 원래 서버에서 객체를 요청한 다음 객체를 클라이언트에게 반환
profile
🌊 Flooding loads of work

0개의 댓글