CS/컴퓨터망

CH2) Application Layer

코딩하는 포메라니안 2021. 7. 7. 22:03

1. Principles of network applications

1. network & app

1) end system은 모든 계층 프로토콜을 다 가져야 함

2) 라우터는 network 계층까지만 있어도 됨

 

2. app 관계 종류

1) Client-Server paradigm

          - server

         1) 항상 켜져있고, 자신만의 고유한 주소를 가진다.

          - client

          1) 자기가 서비스 받을 때만 연결, IP주소를 할당 받음

          2) client끼리 직접적 통신은 불가

 

2) Peer-Peer paradigm : 서버 or 클라이언트 역할이 정해지지 않음

 

3. 통신

1) 한 컴퓨터 내에 process끼리 통신 : OS 차원에서 IPC(Inter Process Communication 프로세스 간 통신)을 제공한다.

2) 다른 컴퓨터 host간의 통신 : socket 통신

 

4. Process들의 주소

1) IP주소 = 컴퓨터 주소(논리적)

2) port번호 = 프로세스 주소

*client는 서버의 IP주소, port번호를 알고 있어야 한다.

 

5. Application이 원하는 서비스들 = network가 제공해야하는 서비스

1) data integrity : 보낸 것, 받은 것을 동일하게 ex)파일 전송 vs loss가 있어도 괜찮다. ex) 오디오, 비디오

2) timing : 빨리 전송돼야 하는가

3) throughput(주어진 시간에 얼마나 많은 데이터를 보낼건가) : 최소한의 양만 있어도 괜찮음 vs 가능하면 많은 데이터

4) security : 보안

 

6. 인터넷 transport protocol service

= network에서 제공하는 서비스를 application에서 요구하는 서비스로 변환해주는 서비스

*network에서 제공하는 서비스 = Best-effort(loss가 생기거나 순서가 엉망일 수 있음) <=> guaranteed service

 

1) TCP

  • reliable transport : 보낸 것 = 받은 것
  • flow control : 수신측(buffer)에서 수용 가능한 양만큼만 보내야 한다.
  • congestion control : packet 수를 조절해서 network가 혼잡해지는 것을 막자
  • 제공하지 않는 서비스 : timing, throughput, security
  • connection-oriented : 송신측과 수신측의 연결 설정이 필요하다. (물리적이든 논리적이든)

 

2) UDP

  • unreliable 전송 & 다른 일 처리 X => network 계층에서 온 거 그대로 전달

 

2. Web과 HTTP

1. Web과 HTTP란?

1) HTTP = object들 받아오는 약속

2) 웹페이지는 여러 object들을 포함한 HTML파일로 구성

3) 각 object들은 URL로 표현되어있다.

 

2. HTTP 개요

1) TCP 사용 => 브라우저 프로세스 & 서버 프로세스간의 통신

2) stateless (과거 정보 관리 X)

 

3. HTTP connection types

1) Non-persistent HTTP = 한 object 전송할 때마다 connection을 열고 닫음

2) Persistent HTTP = connection 한 번 열면 여러 개 주고 받고나서 닫자, response time측면에서 좋다.

 

4. HTTP request message

- method 종류

  • POST = form으로 input 받고 싶을 때 받아서 서버로 보낸다. (특정한 데이터 생성 요청)
  • GET = 우리가 필요한 object를 내놔라 (특정한 데이터 조회 요청)
  • HEAD = object말고 header 정보만 먼저 달라
  • PUT = 새로운 object를 서버에 업로드 (특정한 데이터 수정 요청)
  • DELETE (특정한 데이터 삭제 요청)

 

5. HTTP response message

- status code

  • 200 OK = 성공적으로 받았고, 여기 object가 있으니 써라.
  • 301 Moved Permanently = object가 다른 곳으로 이동했다. 여기로 가봐라
  • 400 Bad Request = 무슨 말인지 모르겠다. parsing해서 읽어가는 데 이해가 안 안된다.
  • 404 Not Found = 옮긴 것도 아니고, 그냥 그 object는 존재 하지 않는다.
  • 505 HTTP Version Not Supported

 

6. Cookies

= 원래 HTTP는 stateless지만 cookie를 이용하면, stateful하게 작동할 수 있다.

 

7. Web cache(=proxy server)

1) 다른 client가 동일한 object를 요청하면 origin을 갈 필요 X, 시간 단축

2) Conditional GET

           - 캐시에 데이터와 같이 저장한 날짜 정보로 이 시간 이후로 수정했는지 origin한테 물어본다.

           - 수정됐으면 응답하면서 바뀐 데이터도 같이 보내줌

 

8. HTTP1.1

1) persistent HTTP

2) pipelined GET 가능 (한 TCP connection에서) = 연속으로 여러 packet을 전송함

3) in-order (FCFS : first come first served) = 순서대로 서비스

4) Head of Line Blocking

- 1번 object의 크기가 크고 2번은 작지만, 1번 전송이 끝날 때까지 기다려야 함.

- 앞에 object의 loss recovery하느라 뒤에 전송을 block

5) 아스키코드로 전송 ex) G : 10010..., E : ...

 

9. HTTP2

1) push 서비스 = A object와 B object가 상호관련 있으니 A를 요청할 때 B를 요청하지 않아도 push!

2) HOL blocking 해결 = object들을 frame으로 나눠서 frame을 스케쥴링

3) binary로 전송 ex) GET : 1011

 

10. HTTP3

 

3. E-mail, SMTP, IMAP

1. User agent = 메일 reader & writer

 

2. mail server

1) mailbox = 수신한 메일 저장

2) message queue = 송신하는 메시지 보관

 

3. SMTP 프로토콜 = 메일 서버끼리 이메일 주고 받을 때 쓰는 프로토콜

 

4. IMAP 프로토콜 = user agent와 mail server간의 통신을 위한 프로토콜

 

4. Domain name system (DNS)

1. DNS 서버란?

*distributed database : 여러 사람이 한 DB를 쓰면 일이 너무 많으니 분산시키자. 여러 DB가 내용을 나눠 가짐

 

2. DNS가 제공하는 서비스들

1) hostname => IP주소

2) host aliasing = canonical name(원래 이름 mail.xy.tistory.com) <=> alias name(간단한 이름 mail.tistory.com)

3) load distribution

- 한 서버가 수용할 수 있는 client 수에 한계가 있다.

- 서버를 여러 개로 나눠서 DNS에게 같은 이름으로 물어보면 3개 중 1개의 주소를 알려준다.

 

3. DNS 계층구조

 

4. DNS name resolution

 

5. P2P applications : 파일 공유

1. P2P(peer to peer) 파일 공유하는 법

1) 모두가 서버에 업로드 & 다운로드 : client-server 모델

2) 해당 파일이 누구한테 있는지 서버에 저장

- 파일 공유하는 것만 보면 P2P

- 서버가 고장나면 끝..

3) Bit Torrent = file 공유하고 싶은 사람끼리 망을 만들자

 

6. Video streaming & content distribution networks

1. Multimedia(video)

1) video는 이미지의 연속

2) data rate은?

- 1초에 24개 이미지를 보낼 때, 24images * x * y * 24bits(=1 pixel) /sec

*x : 이미지 1개의 가로 픽셀 수

*y: 이미지 1개의 세로 픽셀 수

 

- 줄이는 방법

           1. spatial coding = 색이 어디서 어디까지 같은지에 대한 정보를 보내자.

           2. temporal coding = 두 프레임(보낸 프레임과 현재 보낼 프레임)의 차이 정보만 보내자.

 

- CBR(constant bit rate) = 한 pixel당 24bits로 여러 이미지를 일정한 수의 pixel으로

- VBR(variable bit rate) = redundancy를 고려해서 코딩한 후 보내면 rate이 계속 변한다.

 

2. DASH (Dynamic Adaptive Streaming over HTTP)

1) 서버

          - 큰 데이터를 chunk단위로 자름

          - 각 chunk를 고~저화질로 모두 인코딩 해놓는다.

          - 각 chunk의 고~저화질 각각의 URL을 manifest 파일에 담아서 제공한다.

2) 클라이언트

          - 제일 처음 서버가 준 manifest파일을 보고 네트워크 상황에 따라 필요한 chunk를 URL로 요청한다.

 

3. CDN (Content distribution networks)

= 서버 하나면 멀리 있는 client에게 못 주니까 컨텐츠를 복사해서 가지고 있는 서버

1) Netflix 서버한테 A영상 어디있냐 물어본다.

2) 서버는 manifest파일을 준다.

*manifest 파일 : 우리 집에서 제일 가까운 서버에서 받도록 되어 있다.

 

 

 

'CS > 컴퓨터망' 카테고리의 다른 글

CH1) Introduction  (0) 2021.07.02