[네트워크] 2.1 Application Layer

PADO·2020년 11월 5일
1

컴퓨터 네트워크

목록 보기
6/27
post-thumbnail

지난 시간 배운 내용

  • transmission delay와 propagation delay

transmission delay: "L bit"를 signal로 바꾸는데 소요되는 시간 (link의 성질)

propagation delay: "한 비트가" link를 travel 하는데 소요되는 시간

1 hop end to end delay: Dproc + Dqueue + Dtrans + Dprop

  • Layer

Layer마다 다른 프로토콜 사용. 계층별로 필요한 기능들을 분리해 미션을 수행하는 프로토콜들이 여러 개 있음. 완벽하게 분산이 되진 않음

Layer마다 다른 PDU 이름을 가짐.

각 계층마다 계층끼리의 필요한 정보를 담은 헤더를 붙임.

내려오면서 헤더를 붙이고 올라가면서 헤더를 뗌.

아랫계층의 서비스를 받아 윗계층으로 서비스

  • history

60, 70, 80, 90, 현대로 구분

  • security

새 소프트웨어를 내놔서 취약점을 모를 때 공격해 버리는 것: Zero Day attack → 백신을 만들어 다음 버전을 만들어 내야함

(D DOS: 서버에 쓸데없는 패킷을 계속 보내서 응답하게 하여 진짜 customer에게 응답을 못 하도록 하는 공격)


Chapter 2: Application Layer

앱들을 support 하기 위한 application layer의 protocols (Ex. HTTP)

2.1 Principles of network applications

  • transport-layer service models: application layer는 실제 실행되는 최종 application에 서비스를 제공, 아래 계층의 transport layer의 서비스를 제공 받으므로 service model을 알아야 함.
  • 네트워크 어플리케이션의 두 가지 구조
    • client-server paradigm: 대부분의 웹
    • peer-to-peer paradigm: p2p 서비스

2.2 Web and HTTP

웹 이라는 network application을 support하는 application layer 프로토콜인 http (서비스를 제공 받는 user는 Web)

HTTP는 밑단인 transport layer의 TCP를 제공 받음

Ex. HTTP, SMTP는 application layer의 프로토콜이고, web browser, email은 이 프로토콜을 사용하는 사용자(network application)

2.3 electronic mail

  • SMTP, POP3, IMAP: E-mail이라는 network application을 support하는 application layer 프로토콜들

    밑단인 transport layer의 TCP를 제공 받음

2.4 DNS

network 관련된 일을 application layer에서 수행

2.5 P2P applications

동일한 size의 file을 n명의 users가 share 할 때 p2p 구조와 client-server 구조 network의 delay 비교

2.6 video streaming and content distribution networks / DASH

2.7 socket programming with UDP and TCP

TCP와 UDP의 동작 이해


2.1 Principles of network applications

Some network apps

: application layer의 protocol들이 support 하는 application들

(network 성능을 측정하는 파라미터: loss, delay, throughput)

Loss-sensitive applications

  • e-mail
  • web
  • text messaging
  • remote login (remote terminal access)
  • P2P file sharing

Delay-sensitive applications

  • multi-user network games

  • voice over IP (Ex. Skype)

  • streaming stored video (Youtube, Hulu, Netflix)

    • 두 가지 streaming의 차이
  • real-time video conferencing

    Bandwidth sensitive applications

    ⇒ 최소한 보장 되어야 하는 throughput이 존재

Creating a network app

application layer와 transport layer는 end system에만 존재.

core망의 router들에는 존재하지 않음. 왜? postal service(delivery)가 목적이니 application service를 할 필요 x

⇒ application layer와 transport layer는 end system이 해야할 일 구현

Application architectures

application layer의 두 가지 구조

  • client-server
  • HTTP, SMTP, DNS
  • peer-to-peer (P2P)
  • BitTorrent (file sharing), Internet Telephony (Skype), IPTV

Client-server architecture

client와 server가 존재해야 함.

Server

  • always-on host 언제 요청이 들어올 지 모름

  • permanent IP address 항상 고정된 위치(not private IP addr)에 있어야 함

    IP addr : network 상에서 end host의 router를 identify (3계층에서 사용)

    Pop Quiz

    한 기기에서 wifi, Ethernet 모두 사용해 링크가 두 개라면 IP 주소는 하나이다? F

    ⇒ 동시에 쓰는 IP 주소는 두 개이다. Network Interface Card에 붙는 주소이므로 host에 붙는 게 아니고 link에 붙음

    Router에 16개의 port가 있다 ⇒ IP 주소는 16개

  • data centers for scaling

Client

  • communicate with server
  • do not communicate directly with each other
  • may be intermittently connected
  • may have dynamic IP addresses

한계: 중앙 서버의 cpu power와 연결된 link들을 잘 관리 해줘야 함. (provisioning)

P2P architecture

client끼리 통신하는 것 처럼 보이는 구조

중앙 서버 없이 컴퓨터 끼리 흩어진 peer들이 각각 서버와 클라이언트가 되고, 서로 파일을 주고 받음 (서버: 원하는 content를 갖고 있음)

  • no always-on server 서버는 항상 켜져 있지 않음

  • Doesn't require significant server infrastructure & server bandwidth

    서버 대신 각 노드들이 트래픽과 자원을 할당해 부하를 분산 시켜 부담이 적음

  • arbitrary end systems directly communicate 서로 서버와 클라이언트가 됨

  • peer request service from other peers & provide service in return to other peers 클라이언트면서 동시에 서버 역할을 해 서비스를 제공하고 제공받음

    self scalability 새로운 peer의 join은 더 많은 server가 생기는 것

    new peers bring new service capacity

  • peers are intermittently connected and change IP addresses

    일시적으로 연결되며, IP도 고정되지 않음

한계: security가 취약할 수 있음. upstream보다 downstream 용량이 더 큰 대부분의 ISP들이 p2p friendly 설계를 해줘야 함.

Processes communicating

5계층에서 구현된 protocol이 support하는 software가 running

→ Process

Process: program running within a host(end system), port 번호 할당 받음

  • within same host, 두 프로세스는 inter-process communication
  • in different hosts, 두 프로세스는 exchanging messages

Clients-Servers

client process: initiates communication

server process: waits to be contacted

→ Client Process in Client Host & Server Process in Server Host

P2P

Applications with P2P architectures have both client processes & server processes

→ Client Process & Server Process in the same host

Socket

network 몰라도 socket만 알면 network application을 만드는 데엔 문제 없음

why? application layer 아래로는 OS에서 동작 시키기 때문

스크린샷 2020-11-05 오후 3 42 19
  • process sends/receives messages to/from its socket

  • socket analogous to door between application & transport layer

    (1) sending process shoves message out door

    (2) sending process relies on transport infrastructure on other side of door to deliver message to socket at receiving process

    : 프로세스가 쓰고 싶은 protocol에 따라 (TCP or UDP) socket 생성

    (server process의 socket port를 알아야 client가 보낼 수 있음)

Addressing processes

  • identifier includes both IP address and port numbers

    두 process끼리 msg를 주고 받을 때, machine을 찾기 위해서는 machine에 연결된 link에 부착된 IP address를, machine 안에서 해당 process를 찾기 위해서는 port번호를 알아야 함.

    (OS가 machine에서 실행되고 있는 process들의 port를 관리)

    Ex. 집 주소는 IP address, 송신인 이름이 port number

    IP address: xxx.xxx.xxx.xx (각 8bits: 0~255까지 표현할 수 있음)

  • well-known port numbers:

    HTTP server: 80

    mail server: 25

App-layer protocol defines

  • types of messages exchanged,

    Ex. request, response

  • message syntax: what fields in messages & how fields are delineated

  • message semantics: meaning of information in fields

  • rules for when and how processes send & respond to messages

open protocols:

  • defined in RFCs

  • allows for interoperability

    Ex. HTTP, SMTP

proprietary protocols:

Ex. Skype

What transport service does an app need?

data integrity (loss-sensitive)

file transfer, web transactions require 100% reliable data transfer

(링크의 에러 혹은 라우터 버퍼 에러로 인한 bit 변형 or 손실로 인해 source가 보낸 정보와 destination에서 받은 정보가 일치하지 않을 수 있음)

audio, video can tolerate some loss

timing (delay-sensitive)

Internet telephony, interactive games require low delay to be "effective"

throughput (bandwidth-sensitive)

multimedia require minimum amount of throughput to be "effective"

"elastic apps" ex. email, FTP, Web transfer make use of whatever throughput they get

security

: 의도적으로 data를 바꾸는 것

encryption, data integrity (중간에 의도적인 개입이 없이 전송되어 수신자가 받은 정보가 송신자가 보낸 정보와 일치한다는 확신을 주는 것)

Internet transport protocols services

transport layer에서 application layer protocol에 제공해 줘야 하는 것

TCP service (for loss-sensitive application)

  • reliable transport between sending and receiving process

  • connection-oriented: setup required between client and server

    setup: sender/receiver에 buffer 할당, buffer & window size

  • flow control: sender son't overwhelm receiver

    받는 쪽 버퍼 넘치지 않도록

  • congestion control: throttle sender when network overloaded

    가다가 loss 생기지 않도록

  • does not provide: timing, minimum throughput guarantee, security

UDP service

  • unreliable data transfer between sending and receiving process

  • does not provide:

    reliability, connection setup, flow control, congestion control, timing, minimum throughput guarantee, security


Quiz

(37) 소프트웨어 출시된 후 patch가 나오기전에 취약점을 공격하는 malware를 뭐라고 하는가?

⇒ zero day attack

(38) Network application을 P2P 구조로 설계할 때 고려해야 할 사항 두가지를 적으시오.

⇒ 대부분의 ISP가 upstream보다 downstream이 큰 용량을 가지고 있으므로, p2p friendly 하도록 설계 되어야 하며 security 문제를 보완하여야 한다.

(1) peer들이 인터넷 곳곳에 분산(distributed)되어있고 하나의 관리자가 운영하는 것이 아니므로 보안을 강화하기 어렵다.

(2) P2P의 서버(peer)는 주로 개인 호스트, 이 호스트가 위치한 access network이 residential network인 경우 해당 ISP의 uplink가 서비스 품질(throughput)의 bottleneck이 될 수 있다.

(3) P2P의 서버에 해당하는 peer가 사설 IP주소(private IP address)를 가지는 경우가 있으므로, 정상적인 서비스 동작을 위해서는 라우터에 추가 기능이 필요하다

(39) Flow control과 congestion control의 공통점은 버퍼의 overflow를 막는 것이다. 그러나 traget하고 있는 buffer가 다르다. Flow control은 ( a ) 의 버퍼를 congestion control은 ( b )의 버퍼 overflow를 제어하는 것이다.

⇒ (a) receiver (b) router in networks

(40) T/F 를 표시하시오.

(a) 라우터에 application 계층과 transport 계층이 없는 이유는 두 계층이 데이터(패킷) 라우팅과 관련된 임무를 수행하지 않기 때문이다.

⇒ T. 라우터의 목적은 costal service(delivery)이므로 network application을 support 할 필요가 없기 때문이다.

(b) 서버는 변하기 않는 영구적인 IP 주소를 가지고 있으나 클라이언트는 인터넷 접속 때 마다 다른 IP 주소를 가져도 무방하다.

⇒ T.

(c) Client-Server구조와 P2P 구조 모두에서 서버는 always-on 서비스를 제공한다.

⇒ F. P2P 구조에서 각 peer들은 서버도 될 수 있고 클라이언트도 될 수 있으므로, 서버는 intermittent하게 실행 된다.

(d) network application을 설계하는 소프트웨어 엔지니어는 application이 주고받는 메세지가 네트워크에서 전달(routing)되는 절차를 포함하여 프로그래밍해야 한다.

⇒ F. transport layer와 그 하위 계층들은 OS에 의하여 실행 되므로, network application을 설계하는 소프트웨어 엔지니어는 socket만 알면 된다.

(e) end host의 Transport 계층과 Network 계층은 OS (Operating System)에 포함되어 있다.

⇒ T. Link 계층은 Network Interface Card(NIC)에 포함되어 있다.

(f) Circuit-switching에서 데이터 전송 전에 call set-up하는 것은 전송 경로를 설명함과 동시에 중간 링크의 대역폭도 할당하는 것이지만, TCP의 connection은 양쪽 호스트 transport계층에서 필요한 정보를 미리 주고받는다는 의미이다.

⇒ T.

(g) TCP는 loss-sensitive한 어플리케이션 프로토콜을 지원할 뿐만 아니라 delay-sensitive한 어플리케이션 프로토콜도 지원한다.

⇒ F. TCP는 loss-sensitive한 어플리케이션 프로토콜만 지원한다.

1개의 댓글

comment-user-thumbnail
2023년 4월 16일

잘 봤습니다 !
Internet transport protocols services에서
오타발견한거같습니다!
flow control: sender son't overwhelm receiver << 여기서 son't가 아닌거같습니당!!

답글 달기