티스토리 뷰

Network/Theory

02)Application Layer

K_sanghoon 2017. 10. 3. 15:37

Application Layer


 : 주 서적(제가 수강하고 있는 서적)                                            : 공부하다가 참고할 서적(참고 안할 수도 있음)


[목차]

1. Computer Networks and the Internet

2. ApplicationLayer

3. TCP/IP

4. Network Layer and Routing

5. Link Layer and Local Area Networks

6. Multimedia Networking

7. Security in Computer Networks

8. Network Management


2 네트워크 애플리케이션 생성 

  - 애플리케이션

    : 서로 다른 종단에서 실행되어지는 end-system

    : 네트워크를 통해 통신이 이루어진다.

  - 네트워크 코어 장비를 위해 또다른 소프트웨어를 필요로 하지 않는다.

    : 네트워크 코어는 사용자 애플리케이션을 실행하지 않음 -> end-system의 애플리케이션을 빠르게 개발하고 전파 가능.


2.1네트워크 애플리케이션의 원리


   2.1.1 네트워크 애플리케이션 구조

       - 애플리케이션의 구조 : 다양한 end-system에서 어떻게 개발자가 설계한 애플리케이션들이 조직되어야하는지를 지시

                1) client-server 구조

                2) pear to pear 구조(p2p)

                3) 혼합 구조(hybrid)

        2.1.1.1 Client-Server 구조

             - Server

                 : 항상 켜져있는 호스트로 서비스를 제공하는 주체가 된다.

                 : 고정 IP를 사용한다.

                 : 데이터 센터로 확장되어질 수 있다.

             - Client

                 : 서버와 통신을 하게 된다 -> 서버에 서비스를 요청

                 : 클라이언트들 간 직접 통신하지 않는다 -> 서버를 거쳐서 통신이 이루어진다.

                 : 유동 IP를 갖을 수 있다.

                 : 간헐적으로 통신한다.(Client의 필요에 따라 이루어진다)

        2.1.1.2 Pear to Pear 구조

             - 항상 켜져 있는 서버가 없다 -> 서버를 통해서만 통신이 이루어지지 않는다.

             - 종단간에 직접적으로 통신이 이루어진다.

             - 각 pear들은 각각 서비스를 요청하고 제공하게 된다.

                   ->요청을 통해 받은 서비스를 다른 pear에게 서비스 제공할 수 있다. = 높은 self-scalability를 갖는다.

             - 여러 pear간에 연결 됨으로서 관리가 어렵다.


   2.1.2  애플리케이션이 필요한 transport service

         1) data integrity : 신뢰할 수 있는 데이터를 전송(Reliable data transfer)

                     - 몇몇 app는 100신뢰도를 보장해야한다.

                     - 어느정도의 data loss를 인정할 수 있다. : ex) audio 혹은 video와 같은 app

         2) throughput : 두 프로세스 간 통신 세션에 전달 할 수 있는 bits의 비율

                     - 몇몇 app는 최소한의 throughput을 요구한다. -> bandwidth-sensitive application이라고 함.

                     - 주어진 throughput을 최대한 활용한다. -> elastic application

         3) timing : 시간을 보장하는가(timing guarantee)

                     - 특정시간 내 모든 bits의 전송을 보장.

         4) security

                     - 애플리케이션에게 하나 이상의 보안 서비스를 제공

                     - 데이터를 암호화하고 데이터를 해독하여 수신 process에게 전달.



   2.1.3 인터넷 transport Layer가 제공하는 service

        1) TCP service

        2) UDP service

           -> TCP/UDP service는 프로토콜 서비스


        2.1.3.1 TCP service

            - reliable transport : 송수신간 데이터의 손실 없이 순서대로 데이터를 전송

            - flow control : sender가 receiver 보다 더 빠르게 data를 전송하지 않는다.

                                (receiver의 수신속도에 맞춰 data를 보낸다)

            - congestion control : 네트워크의 상태가 혼잡상태에 이르면 프로세스의 전송속도를 낮춘다.

                                         (sender의 control를 통해 얻는다.)

            - connection-oriented service : 클라이언트와 서버를 우선적으로 연결한 후에 데이터를 주고받는다.

                                                     ->handshaking

            - 제공하지 않는 서비스

                 : timing / minimum throughput / security

        2.1.3.2 UDP service

            - unreliable data transfer : 중간에 data loss가 발생할 수 있다.

                                               (TCP와 다르게 receiver가 데이터를 받았는지 확인하지 않으며, loss하였어도 재전송을 요구하지 않는다)

            - 비연결형 데이터 전송 : sender와 receiver를 미리 연결하지 않는다(handshaking이 없다)

                      대신, 속도면에서 이득이 있다.

            - 제공하지 않는 서비스

                  : reliability, flow control, congestion control, timing, throughput guarantee, security


   2.1.4 Processes communication

        : process - 호스트에서 현재 실행중인 프로그램

            -: 하나의 호스트내에 두개의 프로세스는 OS에서 정의한 IPC(inter-process communication)로 통신

            -: 다른 호스트간의 프로세스는 message를 통해 통신한다.

        : client와 server process

            -: client process : 통신 초기화하는 프로세스

            -: server process : client로부터의 접속을 기다리는 프로세스

            :: p2p구조의 애플리케이션들은 위 두 프로세스를 갖는다.


   2.1.5 Socket

        : process는 socket을 통해 네트워크로 message를 송수신한다.

          즉, 호스트의 application layer와 transport layer간의 Interface.(API)

        

   2.1.6 Addressing processes

        : messages를 receive하기 위해서는 process는 identifier를 가져야한다.

          여기서 identifier -> 프로세스의 하나의 주소

                   identifier =  IP 주소 + port번호

   

   2.1.7 App-layer protocol defines

        : 애플리케이션의 프로토콜 = 교환되는 메시지의 타입 + 여러 메시지 타임의 문법(syntax) + 메시지의 의미(message semantics)

                                              + 언제, 어떻게 프로세스가 메시지를 전송하고 메시지에 응답하는지를 결정하는 규칙

        : 오픈 프로토콜 - RFC(request for comments)로 정의

                              - 상호작용 허용

        : 독점적 프로토콜 -ex)Skype


 2.2 Web and HTTP

     : web page는 object들로 구성

     : object는 하나의 file

     : web page = base HTML-file + several referenced objects

     : 각 object는 URL로 지정 = host name+path name


   2.2.1 HTTP Overview

        : HTTP(HyperText Transfer Protocol) - web의 app-layer 프로토콜

        : Server-Client 모델

           - 클라이언트는 웹 객체들을 server에 요청하고 받은후 display하는 browser

           - server는 web object를 가지고 있다 요청에 보내주는 web server

        : TCP를 이용

           1) client는 80번(HTTP에 지정된 port번호) port로 server에게 연결을 요청

           2) server는 client의 요청을 수락

           3) browser(http client)와 web server(HTTP server) 사이에 HTTP message를 교환

           4) 연결을 종료한다.

        : HTTP는 stateless protocol

            - client와의 과거 요청에 대한 정보를 유지 하지 않는다.

           <-> statefull protocol : 똑같은 쿼리에 항상 같은 대답을 한다.


     [state를 유지하는 프로토콜은 복잡하다]

         -> 과거의 기록(state)를 유지, 관리해야하기 때문.

         -> 서버나 클라이언트중 하나가 깨진 경우 각각의 상태는 불일치 함으로써 조정이 필요


   2.2.2 HTTP connection

        : 2가지 연결 방식 존재

           1) Non-persistent connection

           2) Persistent connection


        2.2.2.1 Non-persistent connection

            - 하나의 Object만을 TCP연결로 보낸다. -> 이후, 닫힌다.

            - 다수의 Object를 전송하기 위해서는 다수의 connection을 필요로 한다.

               : 단점 - 하나의 객체당 2 RTT 필요

                       - 각 TCP를 연결하기 위해서 OS의 overhead발생

                       - 브라우저는 참조객체를 가져오기 위해 병렬 TCP 연결 시도.

               : 장점 - 데이터를 전송할 때만 연결을 하므로 추가적인 리소스 낭비가 없다.


            example) 10개의 object를 보낸다고 가정.

           


            - RTT : client에서 송신된 작은 패킷이 server까지 간 후 다시 client로 되돌아 오는데 걸린 시간.

            - HTML파일 요청 응답시간

                    : TCP연결을 초기화 하기 위하 1RTT

                    : HTTP요청을 하고 HTTP 응답을 받기 위해 필요한 1RTT

                    : 파일 전송 시간

             즉, Response time = 2RTT + file transmit time

   

       2.2.2.2 Persistent connection

            - 한번의 TCP연결을 통해 여러 Object를 주고 받는다.

              : 단점 - 연결 상태를 유지하기 때문에 리소스 낭비가 일어난다.

              : 장점 - 모든 참조 객체들에 대해 1RTT만 필요

                      - 객체를 참조하자 마자 요청 송신.


   2.2.3 User-server state : cookies

      : 대부분의 web-site 들은 cookies를 이용하여 user의 state를 추적하고 유지

         (모든 data를 유지하는 것은 아님)

      - 4가지 구성요소

         1) HTTP response message의 cookie header-line

         2) HTTP request message의 cookie header-line

         3) user's host에 저장되어 관리되는 cookie file

         4) web-site의 back-end database


   2.2.4 cookie의 활용

       1) 사용자 식별(id저장같은 기능)

       2) 쇼핑 카트(오늘 본 상품 같은 기능)

       3) 제품 추천

       4) 사용자의 세션 상태


   2.2.4 state 유지

       : protocol endpoint - sender와 receiver의 다 수의 전송들의 상태를 유지

       : cookie - http message가 state를 전달함.


      -> cookie와 privacy

          : cookie와 계정정보가 결합 될 경우

          : 상용자의 정보를 노출


   2.2.5 web Cache
       : 목적 - 본래의 서보를 포함하지 않고 클라이엌트의 요청을 만족시키는 것.

       : origin server를 대신하여 HTTP 요구를 충족 시켜주는 네트워크 개체 -> proxy server라고도 함
       : 브라우저는 웹캐시와 연결을 설정하고 웹캐시에 HTTP요청을 전송

       


       - 장점
         : 요청에 대한 응답 시간을 줄일 수 있다.
         : 접속 회선상의 웹 트래픽을 줄일 수 있다(빠른 다운로딩)
         : 직접적인 주소를 알수 없어 공격하기가 힘들다.


 2.3 FTP

   : 파일을 전송하기 위한 규약으로 TCP에서 사용되어진다.
   : 클라이언트 /서버 모델로 클라이어트는 전송을 시작하는 측이고 서버는 원격 호스트로 작용한다.
   : ftp 표준 - RFC 959 
    ftp server - port 21(control connection → out of band) / port 20(data connection)

   관련 이미지
    2.3.1 sepearate control, data connection
       : 제어연결과 데이터 연결을 두개의 TCP연결을 통해 사용한다.
       - control connection
        : 포트번호 21로 제어연결을 설정한다.
        : 제어 연결을 통해 사용자 계정과 비밀번호를 전송한다.
        : 제어연결은 사용자 세션동안 상태를 유지한다.
        : 별도의 제어연결을 out-of-band라고 한다.
      - data connection
        : 서버는 클라이언트의 파일 전송명령을 받으면 TCP데이터 연결을 개통한다.
        : 한파일 전송 후 서버는 데이터 연결을 닫는다.(비지속)
        : 다른 파일 전송시 다른 TCP연결을 개통한다.

 

 2.4 Electronic mail

   : 3개의 주요요소(user agent/mail server/SMTP)

   

   : mail servers가 하는 3가지
     - 받은 메시지를 유지하고 관리하는 메일박스
     - 보내는 메시지의 큐(메일 저장소)
     - 메일 서버간의 SMTP 프로토콜
         : 클라이언트 - 보내는 메일 서버
         : 서버 - 받는 메일 서버


-----------------추후 이어서 작성--------------------

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함