IT/Network

[Network] Application Layer (애플리케이션 계층) - 2.1 네트워크 애플리케이션의 원리 정리

wookiist 2018. 1. 5. 16:30

2.1.2 Processes Communicating


Client and Server Processes

두 프로세스 간의 통신 세션에서, 통신을 초기화(다른 프로세스와 세션을 시작하려고 접속을 초기화)하는 프로세스를 클라이언트라하고, 세션을 시작하기 위해 접속을 기다리는 프로세스를 서버라고 한다.

The Interface between the Process and the Computer Network

프로세스는 소켓(Socket)이라 불리는 인터페이스를 통해 네트워크로 메시지를 보내고 받는다.
프로세스를 집(house)으로 비유한다면, 소켓은 문(door)로 비유할 수 있다.

소켓은 Host의 Application Layer와 Transport Layer의 인터페이스이다.
소켓은 Network Application이 인터넷에 만든 프로그래밍 인터페이스이므로, 애플리케이션과 네트워크 사이의 API(Application Programming Interface)라고도 한다.

애플리케이션 개발자는 소켓의 애플리케이션 계층에 대한 통제권은 갖지만, 소켓의 트랜스포트 계층에 대한 통제권은 거의 없다.
개발자가 갖는 소켓의 트랜스포트 계층에 대한 통제권으로는 다음과 같다.

  1. 트랜스포트 프로토콜의 선택권
  2. 최대 버퍼와 최대 세그먼트 크기와 같은 약간의 트랜스포트 계층 매개변수의 설정권

Addressing Processes

특정 목적지로 우편 메일을 보내기 위해서는 목적지가 주소를 갖고 있어야 한다.
Receiving process를 식별하기 위해서는, 두 가지의 정보가 명시되어야 한다.

  1. Host의 Address
  2. Destination host의 Receiving process를 구별하기 위한 식별자(identifier)

인터넷에서 호스트는 IP Address로 식별된다.

  • 32-bit로 구성된다.
  • host를 유일하게 식별한다.

Receiving process를 구별하기 위해서는 Port Number로 식별한다.

  • 일반적으로 한 호스트가 많은 네트워크 애플리케이션을 수행할 수 있기 때문이다.
  • 예를 들어, HTTP는 80, SMTP는 25를 사용한다.

2.1.3 Transport Services Available to Applications

Reliable Data Transfer

패킷은 라우터의 버퍼에서 Overflow되거나, 비트가 잘못되면 호스트 혹은 라우터에 의해 버려질 수 있다.
따라서, 애플리케이션에 올바르고 완전한 데이터가 전달되는 것을 보장해야 한다.

Protocol이 데이터 전송을 보장하는 서비스를 제공한다면, Reliable Data Transfer를 제공한다고 한다.

트랜스포트 계층에서 이를 제공하지 않는 경우, Loss-tolerant Application의 경우 어느 정도 허용 가능하다.

  • 예를 들자면, 실시간 오디오, 비디오 혹은 저장 오디오, 비디오 (멀티미디어 애플리케이션의 경우)

Throughput

두 프로세스 간의 통신에서, sending process가 receiving process로 bit를 전달할 수 있는 비율을 나타낸다.

  • 이 처리량은 시간에 따라 변동한다.
  • 트랜스포트 프로토콜은 가용한 처리율이 항상 적어도 r bps임을 보장한다.
    처리율 요구 사항을 갖는 애플리케이션은 Bandwidth-sensitive Application이라고 하며, 인터넷 전화 애플리케이션 등을 포함한다. 이들은, 필요한 처리율의 반 정도를 수신하는 것으로는 데이터를 해석할 수 없기 때문에, 애플리케이션이 요구하는 처리율을 만족시켜주어야 한다. 대부분의 애플리케이션이 이에 해당한다. (멀티미디어 애플리케이션이 대표적이다.)

반면에, Elastic Application은 가용한 처리율을 "많으면 많은 대로, 적으면 적은 대로" 이용할 수 있다. 대표적으로, '전자 메일', '파일 전송', '웹 전송'이 이에 해당한다.

Timing

트랜스포트 계층의 프로토콜은 Timing guarantee를 제공할 수 있다.
예를 들어, 송신자가 소켓으로 내보내는 모든 비트가 수신자의 소켓에 100msec 이내로 도착하도록 하는 것이다. 이는 '인터넷 전화', '가상 환경', ' 원격회의', '멀티플레이 게임'과 같은 Interactive real-time 애플리케이션에 적절한 서비스이다.

Security

트랜스포트 프로토콜은 애플리케이션에 하나 이상의 보안 서비스를 제공할 수 있다.
이를 통해 두 프로세스 간의 비밀성을 제공한다.
이외에도 '데이터 무결성'과 '종단 인증'과 같은 보안 서비스를 제공한다.

2.1.4 Transport Services Provided by the Internet

TCP Services

- Connection-oriented service : TCP는 서버와 클라이언트가 애플리케이션 레벨의 메시지를 주고받기 전에, 트랜스포트 계층의 Control 정보를 주고받도록 한다. 이를 'Handshaking'이라고 하며, 준비하도록 하는 역할을 한다. TCP로 연결된 두 프로세스는 서로에게 동시에 메시지를 보낼 수 있는데, 이를 Full-duplex(전이중) 연결이라고 한다.메시지 전송이 완료되면, 연결이 끊어져야 한다.
- Reliable data transfer service : TCP는 Reliable data transfer service를 제공하여, 오류 없이 올바른 순서로 데이터를 전달한다.
TCP는 'Congestion-control' 메커니즘을 가진다. 이는 통신하는 두 프로세스에는 직접적인 이득을 주지는 않지만, 전체적인 인터넷의 통신을 향상하는 서비스이다. TCP 'congestion-control'은 네트워크가 혼잡 상태에 이르면, 클라이언트나 서버의 속도를 낮춘다.

++ Securing TCP
TCP나 UDP는 암호화를 제공하지 않는다. 따라서, TCP를 강화한 SSL(Secure Sockets Layer)을 개발하였다.SSL로 강화된 TCP는 기존의 TCP 기능 뿐만 아니라, 프로세스 대 프로세스 보안 서비스인 'encryption', 'data integrity', 'end-point authentication' 기능을 제공한다.

UDP Services

- 최소의 서비스만을 가진 모델(no-frill model)이며 경량화된 트랜스포트 계층의 프로토콜이다.
- Connectionless이므로, handshaking 과정이 없다.
- Unreliable data transfer service를 제공하므로, 메시지가 수신 소켓에 도착하는 것을 보장하지 않는다. 또한 도착하는 순서도 뒤바뀔 수 있다.
- congestion control을 하지 않는다.

Services Not Provided by Internet Transport Protocols

TCP와 UDP를 소개할 때, 'Throughput'과 'Timing'에 대한 언급은 빠져있었다. 오늘날의 인터넷은 때때로 시간에 민감한 애플리케이션에게 만족스런 서비스를 제공할 수 없거나, 대역폭 보장을 제공할 수 없다.

2.1.5 Application-Layer Protocols

네트워크 프로세스는 소켓으로 메시지를 보냄으로써 통신을 한다.
이 메시지는 어떻게 구성되며, 이 메시지의 여러 필드가 의미하는 바는 무엇이고, 프로세스는 언제 메시지를 보내는 지 정리해보아야 한다.

Application-layer protocol은 다른 End System에서 실행되는 애플리케이션의 프로세스가 서로 메시지를 보내는 방법을 정의한다.
이 프로토콜은 다음과 같은 내용을 정의한다.

- The types of messages exchanged, for example, request messages and response messages.
    ○ 교환 메시지 타입 (예 : 요청 메시지와 응답 메시지)
- The syntax of the various message types, such as the fields in the message and how the fields are delineated.
    ○ 여러 메시지 타입의 문법 (예: 메시지 내부의 필드와 필드 간의 구별 방법)
- The semantics of the fields, that is, the meaning of the information in the fields.
    ○ 필드의 의미, 즉 필드에 있는 정보의 의미
- Rules for determining when and how a process sends messages and responds to messages.
    ○ 언제, 어떻게 프로세스가 메시지를 전송하고 메시지에 응답하는지 결정하는 규칙

Application-layer protocol은 Network Application의 한 요소일 뿐이라는 점에 주목하여야 한다.
'웹'은 사용자가 필요에 따라 웹 서버로부터 '문서'를 얻게 해 주는 네트워크 애플리케이션이다.

웹 애플리케이션은 다음으로 구성된다.

• 문서 포맷 표준 (Standard for document formats, HTML)
• 웹 브라우저 (Firefox, Chrome, etc.)
• 웹 서버 (Apache, MS Servers)
• 웹 애플리케이션 계층 프로토콜 (HTTP, 웹 브라우저와 웹 서버 사이에서 교환되는 메시지의 포맷과 순서를 정의)


반응형