//
Search
🌍

컴퓨터네트워크 #2

강의
컴퓨터네트워크
학기
3학년1학기
공부한 날
2022/03/19

Chapter 2. Application Layer

2.1 Principle of Network Applications

본 장에서는 네트워크 애플리케이션 레벨의 개념과 프로토콜들에 대해서 배울 것임.
네트워크를 사용하는 프로그램은 다른 서로 다른 환경에서 네트워크를 통해서 커뮤니케이션을 합니다.
레이어를 분리함으로서 네트워크 코어 디바이스(Router)를 위해서 별도의 프로그램을 작성할 필요가 없다.
이때 서버는 항상 켜져 있어야 하고, 고정적인 IP가 있어야 하며 스케일링이 가능해야 함.
클라이언트는 즉시 연결되어야 하고, 고정적이지 않은 IP를 갖으며 클라이언트들끼지 직접 통신하지 않음

Process Communicating

Process: 호스트에서 실행되는 프로그램.
만약에 두 프로세스가 동일한 host 내에서 실행되고 있다면 inter-process communication 을 이용해서 두개의 프로세스가 통신을 하게 됩니다.
만약에 두 프로스세가 다른 host 에서 실행되고 있다면 메세지(message)를 교환하는 방식으로 통신을 하게 됩니다.
Client Process: 커뮤니케이션을 처음 수행하는 프로세스
Server Process: 상대방으로 부터 커뮤니케이션 요청이 들어오길 기다리는 프로세스
P2P 어플리케이션인 경우 각자가 클라이언트, 서버 두 역할을 모두 수행해야 함.

Socket

프로세스가 다른 프로세스와 통신하기 위해서는 Application Layer 에서 소캣을 생성함.
Transport Layer 에 상대방에 대한 정보를 주고, 상태방과 연결을 하게 됨. Application Layer 에서는 Socket 만 알면 되고 Transport Layer 는 신경쓰지 않아도 됨. 운영체제가 알아서 관리해 줌.
Client 와 Server Process 각각 소켓을 생성하고, 소켓을 이용해서 서로 통신을 하게 됨.

Address Process

상대방의 프로세스의 주소를 알아내야 함.
각 host 는 고유한 32bit의 고유한 IP Address 를 보유하고 있음.
여러 프로세스가 호스트에서 동작하기 때문에 IP만으로는 특정 Process 를 특정하기에는 정보가 부족함. → 그래서 Port Number 가 존재함.
소캣을 만들 때 IP/Port 넘버를 갖은 프로세스와 통신을 하고 싶다를 알려주면, 해당 소캣을 통해서 메세지를 보낼 수 있게 됨.

Application-Layer Protocol Defines

메세지의 종류: request, response
메세지의 문법: 메세지에 어떤 field 가 있고, 어떤 값들이 들어가야 하는지
메세지의 의미: field 안의 정보가 어떤 의미를 갖는지
메세지의 규칙: 언제, 어떻게 프로세스가 메세지를 발신/수신해야 하는지
Open Protocol: HTTP, SMTP 등과 같이 공개되어 있는 프토토콜
Proprietarty Protocol: 예) Skype 는 어떤 프로토콜을 사용하는지 모름

Transport Layer 가 Application Layer 로 제공해야 하는 서비스는?

Data Integrity
몇몇 앱들은 100% 신뢰 가능한 데이터 전송이 필요로 할 수 있음.
몇몇 앱들은 어느정도의 데이터 손실을 감수할 수 있음.
Timing
몇몇 앱들은 특정 Latency 를 보장해야 하는 경우가 있음.
Throughput
몇몇 앱들은 최소한의 Throughput 을 보장해야 함.

Internet Transport Protocol Services

어플리케이션이 실행이 될 때 두개중 하나를 골라야 하고, 거기에 해당하는 소캣을 생성해야 함.
TCP Service
Reliable Transport: 데이터 손실이 절대 없음. 신뢰성이 높음.
Flow Control: 메세지를 너무 빨리 보내면 수신자가 처리하지 못할 수 있기 때문에 데이터 플로우를 컨트롤 해 줌.
Congestion Control: 네트워크 상황이 안좋으면 조절을 해서 혼잡을 컨트롤함.
제공해 주지 않는 것
throughput & timing: 최소 latency 조건을 무조건 맞출 수 있는 방법은 없음.
보안도 보장해 주지 않음.
Connection Orientied: 데이터를 보내기 전에 상대방의 프로세스와 내 프로세스 간의 연결을 성립하고 메세지를 보낼 수 있음.
UDP Services
Unreliable Data Transfer: 데이터 전송의 신뢰성이 낮음.
TCP 가 제공해주는 기능들 다 지원해 주지 않음. → 근데 왜 사용될까...?
Data Loss 가 생겨도 빠른 데이터 전송이 더 중요하다면 UDP 를 사용하는게 더 유리함.
바로 Connection Setup 하는데 시간이 발생하지 않기 때문\

Securing TCP

TCP 와 UDP 는 암호화를 하지 않기 때문에 도청에 대한 이슈가 있음.
SSL 은 암호화된 TCP Connection 을 제공함.
Application Layer 에 존재함. (라이브러리 형태)

2.2 Web and HTTP

What is Web

웹페이지는 오브젝트들로 구성되어 있음. HTML, JPEG, Audio 파일 등이 오브젝트
웹페이지는 HTML 파일 안에 여러 오브젝트들이 포함되어 있음.
각 오브젝트들을 식별하는 것이 Unique Resource Location (URL)
www.google.com /image/logo.html ----hostname-- ----pathname----
JavaScript

HTTP Overview

HTTP: HyperText Transfer Protocol, Application Level Protocol.
Request, Response 두개의 메세지가 있음.
TCP 연결을 사용함
시작하면 자연스럽게 소캣을 만듦.
소캣 연결을 허용하면 connection 을 맺음
HTTP message 가 교환됨.
TCP connection close
HTTP 는 Stateless 함. 서버가 과거의 정보를 보존하지 않음.

HTTP Connections

non-persistent HTTP
한 connection 에 한개의 object 만 전송될 수 있음.
Response Time: 2 RTT + File Transmission Time
Round Trip Time (RTT): 작은 패킷을 보내고 돌아오는 시간
TCP Connection 만드는데 필요하는 시간: 1 RTT
Object 를 요청하고, 이에 대한 결과를 돌려 받는 시간: 1 RTT
실제 파일을 전송받는 시간: File Transmission Time
persistent HTTP:
non-persistent HTTP 의 한계점
non-persistent HTTP 는 2RTT per object 가 소요됨
TCP Connection 을 생성하기 위해서 OS overhead 가 발생함
persistent HTTP: 여러 오브젝트를을 전송하려면 TCP connection 을 반복해서 사용함.
Connection 을 끊지 않고 유지시켜서 계속 HTTP Message 를 전달할 수 있음.
첫 연결 이후에 전송되는 message 는 동일한 Connection 을 사용할 수 있음.

HTTP Request Format

POST: 웹브라우저로부터 서버로 데이터가 전송되어야 함
URL method: GET 에 parameter 를 붙여서 body 없이 질의하는 방법