컴퓨터 네트워크 4강 - Application Layer

늘보·2021년 7월 6일
0

컴퓨터 네트워크

목록 보기
3/10

→ Open in Slid

  • 본 글은 이전에 사용하던 영상 강의 필기 앱인 'Slid'에서 필기 했던 내용을 Velog로 옮긴 내용입니다.
  • 본 글은 이화여대 이미정교수님 2014학년도 1학기 컴퓨터 네트워크 강의를 기반으로 작성되었습니다.
  • 강의 링크 : http://www.kocw.net/home/search/kemView.do?kemId=1046412

어플리케이션 아키텍쳐는 크게 두 종류로 나뉜다.

클라이언트-서버 아키텍쳐

  • 클라이언트란?
  • 클라이언트 프로세스는 서버로부터 서비스를 받는 프로세스이다. 예를들어 웹클라이언트( == 웹브라우저)는 웹서버에게 웹 서비스를 요청(Request)하고 웹서버로부터 응답(Response)을 받는다.
  • 클라이언트는 서비스를 받는 입장이므로 당연히 클라이언트끼리 직접적으로 통신하지않는다.
  • 항상 켜져있을 필요도 없고 서버는 특정 클라이언트가 고유하게 누군지 식별할 필요 없으므로 고정된 IP가 필요없다.
  • 서버란?
  • 서버 프로세스는 클라이언트에게 서비스를 제공해주는 프로세스이다. 예를들어 웹서버는 웹클라이언트에게 요청을 받아서 필요한 경우 Database나 다른 서버들과 통신하여 응답을 만들어 클라이언트에게 보낸다.
  • 클라이언트는 특정 서버를 고유하게 알고있어야 하므로 고정 IP를 가져야한다.(변동 IP도 가능하긴 하나 논외로 하자. 본질적으로는 고정 IP가 필요하다.)
  • 여러 클라이언트들이 언제든지 요청을 보낼 수 있기 때문에 항상 켜져있는 상태여야한다.
  • 서버와 클라이언트의 구분
  • 서버인지 클라이언트인지 헷갈릴 때는 이렇게 구분하자.
  • 클라이언트는 통신을 시작하는 프로세스이다.
  • 서버는 통신을 기다리는 프로세스이다.
  • 다른 호스트에 있는 프로세스들은 메세지를 교환함으로써 통신한다.

P2P 아키텍쳐

  • P2P 아키텍쳐란?
  • P2P 아키텍쳐에 참여하는 어떤 호스트가 서버이기도 하고 클라이언트이기도 하는 아키텍쳐다.
  • 예를들어 P2P 파일 공유 서비스를 생각해보자. 한 사용자는 다른 사람으로부터 파일을 전송받기도 하고 동시에 다른 사람에게 파일을 전송해주기도 한다.
  • 항상 켜져있는 서버가 없고 사용자는 서버 역할을 동시에 하므로 사용자가 늘어나면 동시에 서비스할 수 있는 능력(Capacity)도 늘어나는 Self-Scalability한 특징을 가진다.
  • 임의의 Endsystem을 peer라고 한다.
  • 당연히 관리가 복잡하다.

소켓, Socket

  • 잠깐 복습하자면 인터넷 계층은 애플리케이션-전송-네트워크-링크-물리 계층순이다.
  • 소켓이란 계층간의 인터페이스이다.

애플리케이션마다 원하는게 달라!

컴퓨터 네트워크 4강 - Application Layer image

  • Application마다 제각기 목적이 있다. 예를들어 멜론은 오디오 재생이 목적이고, 카카오톡은 메세지 전송이 목적이다.
  • 목적이 다르면 요구하는 성능도 다르다. 세가지 측면에서 살펴보자.
  • Data Integrity!
  • File Transfer는 예민하다. Audio는 순간적으로 잡음이 발생도 큰 문제는 아니다.
  • Timing!
  • Game은 예민하다. File Transfer는 덜 예민하다.
  • Throughput!
  • Streaming은 최소한의 프레임이 유지되어야 하므로 예민하다.File Transfer는 당연히 덜 예민할 것이다.
  • Streaming은 최소한의 프레임이 유지되어야 하므로 예민하다.
  • File Transfer는 당연히 덜 예민할 것이다.

인터넷 Transport 계층의 두 프로토콜, TCP와 UDP

  • TCP(Transmission Control Protocol)
  • 말 그대로 전송 제어를 담당하는 프로토콜이다. 믿을만한 (reliable) 전송을 보장해준다. Flow, Congestion Control을 제공해준다.
  • Connection Oriented : 서로 커넥션을 맺고 통신한다.
  • Timing, min throughput, security는 보장하지 않는다. 기능이 많은 많큼 Overhead도 크다.
  • UDP (User Datagram Protocol)
  • TCP와 달리 Control이 들어가있지 않다. Unreliable한 전송을 한다.
  • Flow, Congestion Control 없이 최선을 다해서 전송한다. Application 계층에서 Integrity를 체크하는 경우 UDP를 사용한다.
  • 최선을 다해서 전송하므로 Real Time에 적합하다. http 3.0은 UDP를 사용한다.

Application-Layer Protocol

무엇을 정의하나?

  • 메세지의 타입이 메세지가 서버에게 요청을 보내는 Request인지서버의 응답인 Response인지 구분한다.
  • 메세지의 문법(Syntax)메세지를 몇비트씩으로 쪼개서 그 부분엔 어떤 필드를 넣을까?예를들어 메세지의 첫 1비트는 메세지의 타입을 명시하자!라고 정할 수도 있다.
  • 메세지의 의미(Sementics)무슨 의미인지 정의한다.
  • 전송, 응답 규칙

Web과 Http 프로토콜

  • Web은 World Wide Web (www)의 약자로서 인터넷 상에서 동작하는 정보교류 서비스이다.
  • Http 프로토콜은 Web이 사용하는 프로토콜이다.
  • Web 페이지는 URL(Universal Resource Locater)로 연결된 Html 파일, 자바스크립트, 이미지 등으로 구성되어 있다.
  • 이런 웹페이지를 구성하는 항목들을 Object라고 한다. 웹페이지는 Base Html파일 아래 여러 오브젝트들이 연결된 형태다.

Http의 개괄적인 내용

  • Http는 Web상에서 정보(문서)를 주고받기 위한 프로토콜이다.
  • 문서 전송도 File Transfer이므로 앞에서 얘기했듯이 Data Integrity가 매우 중요하다!
  • 그러므로 UDP가 아닌 TCP를 이용한다. (http 3.0은 최적화를 위해 UDP를 사용한다.)
  • Http 자체는 Stateless하다. Http는 Client가 보낸 request history를 전혀 기억을 안하고 있다. Http가 Stateful하기 위해서는 Overhead가 매우 심해지게 된다.
  •  예를들어 로그인 상태가 유지되는 것이 아니라 매번 로그인을 해야한다고 생각하자. 쿠키를 사용해서 session-id로 stateless한 특성을 보완할 수도 있다.
  • Http의 port번호는 80번

컴퓨터 네트워크 4강 - Application Layer image

Non-persistent http VS Persistent http

  • 한번 맺어진 TCP 커넥션을 재사용 하냐 / 안하냐의 차이다.
  • Non-persistent는 Base Html파일에 담겨진 Object마다 새로 TCP연결을 맺어 가져와야하므로 성능저하가 크다.

0개의 댓글