컴퓨터네트워크 03주차 Application Layer_02

2022. 12. 26. 14:42CS/컴퓨터네트워크

주 교재 : Computer Networking : A Top-Down Approach

 

3주차 Application Layer_2

  1. Web and HTTP
  2. E-mail, SMTP, IMAP
  3. The Domain Name System DNS

1. Web and HTTP

  • 웹 페이지는 objects로 구성되어 있다.
  • object : HTML file, JPEG image, audio file, etc...
  • object는 위치 주소를 가지고 있으며, 각각 URL로 주소를 지정할 수 있다.

#HTTP Overview

  • HTTP : HyperText Transfer Protocol
    - Web의 application layer protocol
    - client/server model

 

HTTP는 TCP를 (기본적으로) 사용한다.

  1. client가 TCP Connection을 port 80번으로 연다.
  2. server가 TCP Connection을 승낙한다.
  3. HTTP message를 서로 교환한다.
  4. TCP Connection을 닫는다.

HTTP는 Stateless.

  • 모든 connection에 대한 state를 서버가 관리하면 서버에 부하가 심해진다.

#HTTP Connections: two types

Non-persistent HTTP(1.0)

  1. TCP 연결을 연다.
  2. object 하나를 TCP 연결로 전송한다.
  3. TCP 연결을 닫는다.

   여러 object를 받으려면 여러 개의 연결이 필요하다.

 

RTT : request - response에 걸리는 시간

  • RTT 하나는 TCP 연결을 시작하는 것
  • 나머지 RTT는 request와 response를 주고 받는 것
  • Non-persistent HTTP에서 응답 시간을 줄이기 위해서 Persistent HTTP 연구?개발?

 

Persistent HTTP(1.1)

  1. TCP 연결을 연다.
  2. 여러 object를 single TCP 연결로 전송한다.
  3. TCP 연결을 닫는다.
  • server는 응답을 보낸 후에 연결을 열어 놓는다.
  • 뒤따라 오는 HTTP message는 열려있는 연결로 전송된다.

TCP 연결을 끊는 방법이 5가지가 있다. (나중에 배움)

https://community.f5.com/t5/technical-articles/multiplexing-tcp-vs-http2/ta-p/282918

HTTP request message: general format

general format
example

  • POST
    - user input을 전송하는 데 쓰임
  • GET
    - 데이터를 읽어오는 데 쓰임
  • HEAD
    - 요청 헤더를 반환하는 데 쓰임
  • PUT
    - 이미 존재하는 파일을 완전히 대체하는 데 쓰임

 

RFC는 가이드 라인임.

1:1 관계에서는 취사선택해서 사용해도 괜찮음.

1:N 관계에서는 RFC를 따르는 것이 좋음.

(여기서 1:1, 1:N 은 서비스 제공자와 서비스를 이용하는 사람 간의 관계임)

 

#HTTP Response Message

HTTP Response example

 

#Maintaining user/server state: cookies

HTTP는 stateless이다.

state를 관리하려면 데이터를 lock-unlock 하는 일이 필요하다. => 복잡함

Web site와 client browser는 cookies를 이용해서 상태를 유지함.

  • Session = Server
  • Cookies = Client

#Web caches (proxy servers)

  • request-response 속도를 높이기 위해 고안
  • 일반적으로 cache는 ISP에 설치된다.
  • client request의 response 시간을 줄여준다. (cache는 client에 가깝다.)
  • Traffic을 줄여준다.
  • 시간(data)으로 cache data를 관리

Web caching의 효과

  • for client, 응답 시간을 줄여줌
  • for server, 더 많은 유저를 지원함
  • for local ISP, traffic을 줄임으로써 access link 대역폭을 효과적인 관리함

#HTTP 1.1 / HTTP 2

  • HTTP 1.1 : FCFS(FIFO) 구조라서 큰 파일이 먼저 가면 나머지 파일이 기다려야한다. (Head-Of-Line Blocking(HOLB))
    - 은행창구 기다리는 것 생각하면 됨.
  • HTTP 2.0 : server에서 client로 object 전송하는 것의 유연함을 증가시킴.
    - object를 frame 단위로 쪼개서 스케쥴링함으로써 HOL을 피함.

HTTP 1.1
HTTP 2.0


2. E-mail, SMTP, IMAP

#E-mail

  • user agents
  • mail servers
  • simple mail transfer protocol: SMTP
  • TCP 통신을 이용함
  • header와 body를 가지고 있음

#User Agent

  • aka mail reader
  • 메일을 읽고, 쓰고, 수정하는 행위
  • ex : Outlook, iPhone mail client

#mail servers

  • mailbox : 사용자에게 들어오는 메일
  • message queue : 보내지는 메일
  • SMTP : 메일 서버 간의 protocol
    - client : 메일 전송 서버
    - server : 메일 수신 서버

#Mail access protocols

  • SMTP : 수신자의 서버로 이메일을 전달/저장
  • IMAP(Internet Mail Access Protocol) : 서버에 저장된 message을, 수정, 삭제, 폴더에 저장하는 것을 제공
  • HTTP : gmail, Hotmail, etc. 웹에 기반한 STMP, IMAP(또는 POP) interface를 제공한다.


3. DNS : Domain Name System

#Domain Name System

  • 많은 name server 계층으로 구현된 분산된 DB
  • application-layer protocol : host와 name server는 이름을 확인하기 위해 소통(communication)한다.

#DNS: Services, Structure

  • DNS services
    - IP 주소를 translation함
    - host aliasing
    - load distribution : 많은 IP가 하나의 이름에 할당됨
    - DNS 본분을 하면서 다른 일도 가능함(load balancing)

DNS Hierarchical Database

  • Root : ICANN에서 root DNS domain을 관리함
  • Top Level Domain : 목적에 맞게 이름이 할당되어 있음
  • Authoritative Server : 우리가 실제로 쓰는 domain들. ex) google.com, naver.com, kookmin.ac.kr, etc.

#Local DNS Name Server

  • 계층 구조에 속하지 않음
  • 각각의 ISP는 하나를 가지고 있음
  • host가 DNS query를 만들면, querys는 local DNS server로 보내짐.

#DNS name resolution: iterated query & recursive query

Iterated query
recursive query

#Caching DNS Information

cache에 mapping한 데이터를 저장하고, 요청이 오면 즉시 mapping된 데이터를 query에 대한 응답으로 제공

  • caching은 응답 시간을 빠르게 해준다.
  • cache에 저장된 값은 시간이 지나면 사라진다.
  • TLD(Top Level Domain)은 일반적으로 local name server에 캐싱한다.

#DNS Records

  • DNS : 분산 DB는 resource records(RR)를 저장한다.
  • RR format : (name, value, type, ttl)

#DNS Protocol and Messages

  • DNS query와 reply message는 같은 format를 가진다.