Application Layer

Application architectures

  • Client-Server
  • Peer-to-Peer(P2P)

Client-Server architecture

  • Server
    • always-on host
    • 영구 IP 주소
    • 규모에 따라 데이터 센터일 수도 있음
  • Clients
    • Server와 커뮤니케이션
    • 클라이언트 간 직접 커뮤니케이션 하지 못함
    • 간헐적으로 연결
    • 동적 IP 주소를 가질 수 있음

P2P architecture

  • no always-on server
  • host들이 자발적으로 직접 커뮤니케이션 -> Self scalability
  • peer는 다른 peer에게 서비스를 요청하고, 또 다른 peer에게 서비스를 제공할 수 있음
  • peer들은 간헐적으로 연결되며, IP 주소를 바꿈
    • 관리의 어려움

Process communicating

  • process: host 내에서 실행 중인 프로그램
  • 서로 다른 프로세스가 같은 host에서 실행 중이라면, IPC(Inter Process Communication)을 이용하여 통신
  • 서로 다른 프로세스가 다른 host에서 실행 중이라면, Messages를 교환하며 통신
  • Client process: 통신을 시작하는 프로세스
  • Server process: 다른 프로세스의 연결을 기다리는 프로세스

Sockets

  • 프로세스는 메시지를 socket으로부터 받거나, socket으로 전송

Addressing processes

  • message를 전달받기 위해서 프로세스는 반드시 identifier를 지녀야 함
  • identifer는 IP 주소와 포트 번호를 포함
  • ex) HTTP Server은 80번 포트 번호 사용, mail server는 25번 포트 번호 사용

App-layer protocol defines

  • message type
    • ex) request, response
  • message syntax
    • 어떤 필드값이 있어야 하며, 필드 값들이 어떻게 채워져야 하는지
  • message semantics
    • 필드 값들의 의미
  • 언제 그리고 어떻게 프로세스들이 메시지를 전송하고, 응답하는지에 대한 rules

Application에 필요한 전송 서비스

  • Data integrity
    • 어떤 app들은 100% 신뢰 가능한 데이터 전송을 요구(ex: file transfer)
    • 반면, 어떤 app들은 약간의 손실을 허용(ex: audio)
  • timing
    • 어떤 app들은 낮은 지연율을 요함(ex: interactive games)
  • throughput
  • security
    • 암호화, 데이터 무결성...

Internet transport protocols services

  • TCP service
    • 신뢰성 있는 전송
    • flow control
    • congestion control
    • connection-oriented
    • does not provide: timing, minimum throughput guarantee, security
  • UDP service
    • 비신뢰성 전송
    • does not provide: reliability, flow control, congestion control, timing, throughput guarantee, security, connection set-up

SSL

  • 암호화된 TCP 연결을 제공
  • data integrity
  • end-point authentication
  • SSL is at app layer
    • app들은 TCP와 대화하는 SSL 라이브러리를 사용

Web and HTTP

  • Web page는 object들로 구성되어 있음
    • object는 HTML file, Image, Audio 등
  • Web page는 여러 참조된 object들을 포함하는 HTML file로 구성
  • 각각의 object는 URL을 통해 접근 가능
  • ex) www.someschool.edu/someDept/pic.gif

HTTP overview

  • HTTP: HyperText Transfer Protocol
  • Web의 application layer protocol
  • Client-Server 모델
    • Client: Web object들을 요청하고, 받고 화면에 보여주는 browser
    • Server: 요청에 대한 응답으로 object를 보내는 Web server
  • uses TCP
    • 클라이언트가 80번 포트 번호를 이용하여 서버에 TCP 연결 시작
    • 서버는 클라이언트의 TCP 연결 승인
    • HTTP messages들이 browser와 Web server 간 교환
    • TCP 연결 종료
  • HTTP is "stateless(무상태)"
    • 서버는 이전 클라이언트 요청에 대한 어떠한 정보도 저장하지 않음

HTTP connections

  • non-persistent HTTP
    • 최대 하나의 object가 TCP 연결 통해 전송 가능
    • 여러 개의 object를 download하기 위해선 여러 번의 연결이 필요
  • persistent HTTP
    • 여러 개의 object가 하나의 TCP 연결을 통해 전송 가능

Response Time

  • RTT: time for a small packet to travel from client to server and back
  • Non-persistent HTTP
    • TCP 연결 시작하기 위한 RTT +
    • HTTP request 위한 RTT +
    • file transmission time =
    • 2 RTT + file transmission time
  • Persistent HTTP
    • 서버는 연결을 open 상태로 둠
    • 모든 object를 받기 위해 하나의 RTT만 필요

HTTP request message

  • 2개의 HTTP 메시지 타입: request, response

Uploading form input


Method types

  • HTTP/1.0:
    • GET
    • POST
    • HEAD
  • HTTP/1.1:
    • GET, POST, HEAD
    • PUT: URL 필드에 지정된 경로에 파일 업로드
    • DELETE: 특정 URL 필드에 명시된 파일을 삭제

HTTP response message

  • status code
    • 200 OK: request 성공, 요청된 object가 이후에 이 msg에 포함될 것
    • 301 Moved Permanently: 요청된 object가 이동함, 이후에 새로운 주소가 이 msg에 명시될 것
    • 400 Bad Request: 서버가 요청 메시지를 처리하지 못함
    • 404 Not Found: 요청된 문서가 이 서버에 존재하지 않음
    • 505 HTTP Version Not Supported

User-Server state: cookies

  • 많은 웹 사이트들이 쿠키를 사용
  • four components
    • cookie header line of HTTP response msg
    • cookie header line in next HTTP request msg
    • cookie file kept on user's host, managed by user's browser
    • back-end database at Web site

Web caches (proxy server)

  • Origin server를 거치지 않고 클라이언트의 요청을 만족하기 위해 사용
  • browser가 모든 HTTP request를 cache로 보냄
    • object가 cache에 있다면: cache returns object
    • object가 cache에 없다면: cache가 origin server에 object request 후, client에게 return

Conditional GET

  • 목표
    • 만약 cache가 최신의 cached version을 가지고 있으면 object를 전송하지 않음
    • no object transmission delay
    • lower link utilization
  • cache: HTTP request에 cached copy의 날짜를 명시
  • server: 만약 cached copy가 최신의 것이면 response는 object를 포함시키지 않음

FTP(File Transfer Protocol)

  • file을 remote host로/로부터 transfer
  • Client-Server model
    • client: side that initiates transfer
    • server: remote host
  • 하나의 file 전송 이후에 서버는 data connection 종료
  • 서버는 다른 file의 전송을 위해서 다른 TCP data connection을 open
  • FTP Server는 'state'를 유지
    • current directory, earlier authentication

E-mail

  • Three major components
    • user agents
    • mail servers
    • SMTP(Simple Mail Transfer Protocol)
  • User Agent(mail reader)
    • composing, editing, reading mail messages
    • outgoing, incoming messages stored on server
  • Mail Servers
    • mailbox는 user에게 온 messages들을 저장
    • message queue는 전송되야 할 mail messages들 담음
    • email messages의 전송을 위한 mail servers들간의 SMTP

SMTP

  • reliable transfer를 위해 TCP 사용(25번 포트 번호)
  • direct transfer: sending server to receiving server
  • Three phases of transfer
    • handshaking
    • transfer of messages
    • closure
  • persistent한 연결 사용
  • message가 7-bit ASCII로 작성되어야 함



POP3 Protocol

  • authorization phase
    • client commands:
      • user: declare username
      • pass: password
    • server responses:
      • +OK
      • -ERR
  • transaction phase
    • list: list message numbers
    • retr: retrieve message by number
    • dele: delete
    • quit
  • POP3 is stateless across sessions

DNS(Domain Name System)

  • IP 주소 대신 'name'을 사용하여 주소에 접근이 가능하게 함
  • 분산된 database가 많은 name server들의 계층을 구현
  • DNS services
    • hostname to IP addr translation
    • host aliasing
    • mail server aliasing
    • load distribution: 하나의 이름에 많은 IP 주소 설정 가능
  • Why not centralize DNS?
    • traffic volume
    • distant centralized database
    • maintenance

DNS: root name servers

  • local name server가 name을 처리하지 못할 때 접근하는 서버
  • name과 주소의 mapping을 TLD로부터 얻어와 local name server에 return
  • 전 세계적으로 13개의 root name server 존재

TLD, authoritative servers

  • Top-Level Domain servers:
    • com, org, net, eud, areo, jobs, museums 등과 모든 국가 도메인들을 관리(ex: uk, kr, ca)
  • authoritative DNS servers:
    • 기관의 name host들에게 authoritative hostname to IP mapping을 제공하는 기관 소유의 DNS Server
    • 기관 혹은 서비스 제공자에 의해 maintain

Local DNS name server

  • 각각의 ISP는 'default name server'라고 불리는 local DNS server 지님
  • host가 DNS query를 발생시키면, query는 local DNS server로 전송됨
    • 최근 name-to-address translation 쌍을 local cache에 가지고 있음
    • proxy와 같이 작동하여, query를 계층 구조로 이동시킴
  • iterated query

  • recursive query

DNS: caching, updating records

  • name server가 mapping을 하면, 해당 mapping을 caching
    • cache entry는 TTL 이후에 timeout
    • TLD 서버는 기본적으로 local name server에 cache 되어 있음
      • 그러므로 root name server는 많이 방문되지 않음
  • cached entry들은 out-of-date인 것일 수 있음 만약 name host가 IP 주소를 바꿔도, 모든 TTL이 만료될 때 까지 다른 Server들은 해당 변경을 알 수 없음

Attacking DNS

  • DDos attacks
    • root server의 traffic을 폭주 시킴
      • traffic filtering을 통해 예방 가능
    • TLD server의 traffic 폭주시키는 것이 더 위험
  • Redirect attcks
    • Man-in-middle: query 가로채기
    • DNS poisoning: DNS 서버에 위조 정보 전송


'Software Convergence > Network' 카테고리의 다른 글

HTTP 상태 코드  (1) 2018.11.15
Network Layer (2)  (0) 2018.10.08
Network Layer (1)  (0) 2018.10.07
Transport Layer  (0) 2018.10.07
OSI 7 Layers Overview  (0) 2018.10.01

+ Recent posts