2. 애플리케이션 계층

2023. 4. 16. 18:412023/컴퓨터 네트워킹

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

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

애플리케이션에 사용되는 두 가지 구조(clinet-server구조, P2P구조)

 

client-server구조

*server

-항상 동작하는 호스트

-IP 주소가 고정

-often in data centers, for scaling.(데이터 센터가 강력한 가상 서버를 생성하는데 흔히 사용됨.)

 

*client

-contact, communicate with server

-서버와 가끔씩 연결.

-IP주소가 변경됨.

-클라이언트 간에는 직접 통신하지 않음.

-ex) HTTP, IMAP, FTP

 

P2P(peer-to-peer 구조)

-서버가 항상 켜져 있지 않음.

-임의의 호스트(peer)간의 직접 통신함.

-피어는 다른 피어들에게 서비스 '요청'과 서비스 '제공'을 동시에 수행.

-자가 확장성(self-scalability) : 새로운 피어는 새로운 서비스를 요구하지만, 새로운 서비스 용량도 제공.

-피어들이 간헐적으로 연결되고, IP 주소가 변경됨--->관리가 복잡.

-ex) P2P file sharing, Skype

 

 

 

 

 

애플리케이션이 이용 가능한 트랜스포트 서비스

애플리 케이션이 요구하는 트랜스포트 서비스

1) 신뢰적 데이터 전송

2) 처리량

3) 시간 보장

4) 보안

 

1) 신뢰적 데이터 전송

-일부 애플리케이션들(파일전송, 웹 트랙잭션)은 100% 신뢰 할 수 있는 데이터 전송을 요구.

-다른 애플리케이션들(오디오)은 일부 손실을 감내.

2) 처리량(throughput)

-일부 애플리케이션(멀티미디어)은 효과적인 서비스를 이해 요구되는 최소한의 처리율을 보장.

-다른 애플리케이션들(탄력적 애플리케이션)은 처리율에 덜 민감.

3) 시간 보장

-일부 애플리케이션들(인터넷 전화, 다자간 상호작용 게임)은 효율적인 서비스를 위하여 최소한의 지연을 요구.

4) 보안

암호화(encryption), 데이터 무결성 등 서비스 제공.

 

 

인터넷 전송 프로토콜이 제공하는 서비스

인터넷은 애플리케이션에게 UDP(User Data Protocol), TCP(Transmission Control Protocol)를 제공.

 

TCP 서비스(= 연결지향형 서비스)

특징

-신뢰적인 데이터 전송

-흐름 제어-> 받는 사람에 맞춰서 속도를 조절해줌

-혼잡 제어->네트워크의 능력치 만큼 보내주는 것ㅇㅇ

 

UDP서비스(=비연결 지향형 서비스)

특징

-비신뢰적인 데이터 전송

-흐름제어, 혼잡제어, 시간 보장, 처리율 보장, 보안 등의 서비스도 제공하지 않음.

-실시간 애플리케이션들의 전송속도를 위해 UDP사용.

 

 

 

 

보안 TCP

*TCP와 UDP

-암호화(encryption)를 제공하지 않음.

-소켓을 통해 암호화되지 않은 비밀번호 등이 인터넷으로 전송

 

*TLS(Transport Layer Security)

-트랜스포트 계층보다 위에 넓게 개발된 보안 프로토콜

-암호화된 TCP연결을 제공

-데이터 무결성

-종단 인증

 

*TLS은 'application layer'에서 구현.

-애플리케이션은 TLS 라이브러리를 사용하여 암호된 데이터를 TCP소켓에 전달. 

-암호화된 데이터를  TCP소켓으로 전달.

 

 

 

2.2 웹과 HTTP

HTTP의 개요

웹의 애플리케이션 계층 프로토콜인 HTTP(HyperText Transfer Protocol)는 웹의 중심이다.

 

web

-웹 페이지는 각각 다른 웹 서버에 저장될 수 있는 객체들(objects)로 구성

-객체는 기본 HTML파일과 여러 참조 객체들로 구성.

-객체는 단순히 단일 URL로 지정할 수 있는 하나의 파일.

HTTP의 요청-응답 관계

-client가 웹 페이지를 요청할때, 브라우저는 페이지 내부의 객체에 대한 HTTP 요청 메시지를 서버에게 보낸다.

-server는 요청을 수신하고 객체를 포함하는 HTTP 응답 메시지로 응답한다.

 

ppt 2-1. 21페이지

비지속 연결과 지속 연결(차이점)

HTTP는 비지속 연결과 지속 연결 2가지 방식이 존재함.

 

비지속 연결 HTTP (Non-persistent connection)

-요구/응답 쌍이 분리된 tcp연결을 통해 송수신-> 객체 1개를 받기 위해 연결 요청해야함.

-하나의 tcp연결로 하나의 객체만 전송~> 시간이 많이 걸려 비효율적임.

 

지속 연결 HTTP (persistent connection)

-모든 요구/응답이 같은 tcp 연결 상에서 송수신->1번의 요청으로 서버에게 여러번의 data 요청 가능.

-하나의 tcp연결로 다수의 객체들이 전송.

 

 

* HTTP 1.1와 HTTP 2의 차이점

HTTP 1.1

-서버는 응답을 보낸 후에 TCP연결을 그대로 유지함.

-연결당 하나의 요청과 응답을 처리하기 떄문에~> 동시전송 문제와 다수의 리소스를 처리하기에 속도와 성능 이슈를 가지고 있음.

 

HTTP 2.2

-같은 연결상에서 다중 요청과 응답이 가능함.

-성능 뿐만 아니라 속도면에서 월등함.

 

 

 

HTTP 메시지 포맷

HTTP 메시지는 '요청 메시지'와 '응답 메시지'가 있다.

 

HTTP 요청 메시지

HTTP 요청 메시지

방식(method)필드

POST 방식 :

-웹 페이지는 보통 인풋을 포함한다.(클라이언트에서 인풋 주는거 -> 체크박스 등)
-메세지를 통해 전달한다.(entity body에 값을 넣어서 보내준다.)

 

GET 방식 :

- 클라이언트가 서버로 url을 통해 값을 전달해 준다.

 

PUT 방식 :

-파일 업로드

 

DELETE 방식 :

-파일 삭제

 

 

 

HTTP 응답 메시지

HTTP 응답 메시지

 

 

 

 

사용자와 서버 간의 상호작용 :  쿠키

HTTP는 상태를 유지하지 않음.

 

쿠키 : 어떤 사용자가 서버에 접속했던 기록을 서버가 갖게해주고, 그러한 기록을 기반으로 하여 적절한 서비스를 제공해주는 것.

 

웹사이트와 클라이언트는 거래 사이의 상태를 유지하기 위해 쿠키를 사용함.

 

* 구성요소

-HTTP 응답 메시지 쿠키 헤더라인

-HTTP 요청 메시지 쿠키 헤더라인

-사용자 호스트에 저장되어 브라우저에 의해 관리되는 쿠키파일

-웹사이트의 백엔드, 데이터 베이스

 

* 쿠키의 활용

-사용자 식별 확인

-쇼핑 장바구니

-제품 추천

-사용자 세션상태(웹, 이메일)

 

* 쿠키와 사생활 침해

-쿠키와 사용자가 제공하는 계정 정보를 결합하여 웹 사이트는 사용자에 대한 많은 것을 알 수 있음.

-쿠키는 이 정보를 제 3자에게 판매할 수도 있음.

 

 

 

웹 캐싱(proxy servers)

: 웹 서버를 대신하여 HTTP 요구를 충족시키는 네트워크 개체

 

브라우저는 사용자의 모든 HTTP 요구가 웹 캐시에 가장 먼저 보내지도록 구성될 수 있음.

 

웹 캐시에 객체가 있으면-> 객체를 전송 

웹 캐시에 객체가 없으면->웹캐시가 기점 서버와 객체를 요청하여 가져와서 클라이언트에 전송

 

웹캐싱이 왜 필요한지?

1. 웹캐시는 클라이언트의 요구에 대한 응답시간을 줄일 수 있다.

2. 웹캐시는 한 기관에서 인터넷으로 접속하는 링크상의 웹 트래픽을 대폭으로 줄일 수 있다.

3. 웹 캐시는 인터넷 전체의 웹 트래픽을 실질적으로 줄임으로써, 모든 애플리케이션을 위한 성능을 개선한다.

 

 

조건부 GET(<- 왜 필요한지?)

웹 캐싱이 사용자가 느끼는 응답 시간을 줄 일 수 있지만, 새로운 문제를 야기함

-> 캐시 내부에 있는 객체의 복사본이 새 것이 아닐 수 있음(즉, 웹 서버에 있는 객체가 갱신되었을 수도 있음)

 

 

조건부 GET : HTTP웹 캐시의 객체가 최선 버전이면 서버가 객체를 보내지 않음.

 

조건부 GET이 어떻게 동작하는지

1) 캐시는 HTTP요청에 카피된 캐시된 복사본의 시간을 명시.

2) 서버는 캐시된 복사본이 최신 것이면 객체가 생략된 응답을 전송.

 

 

 

2.3 인터넷 전자메일

사용자 에이전트

-사용자가 메일을 읽고, 응답하고, 전달하고, 저장하고, 구성하게 해줌.

 

메일 서버

-메일 박스를 포함함

-메시지 큐에 메시지를 보관.

 

SMTP(Simple Mail Transfer Protocol)

-메일을 송신자의 메일 서버로부터 수신자의 메일 서버로 전송.

client : sending mail server

server : receiving mail server

 

 

SMTP(특징,같은점,다른점 알기)

* 특징

-SMTP는 지속연결을 사용

-SMTP 메시지(헤어&몸체)는 7비트 ASCII로 표시

-SMTP 서버는 메시지의 끝을 CRLF.CRLF로 표시

 

*SMTP와 HTTP의 같은점

모두 ASCII 명령/응답 상호 작용을 하고, 응답 코드를 가짐

 

* SMTP와 HTTP와의 비교(다른점)

-HTTP : client pull -> 클라이언트가 서버로부터 받아오는 pull

-SMTP : client push -> 메시지를 보내는 프로토콜

 

-HTTP : 각 객체는 응답 메시지에 캡슐화

-SMTP : 모든 메시지의 객체를 한 메시지로 만듦

 

 

메일 접속 프로토콜

SMTP는 수신자의 서버에 메시지를 전송/저장.

메일 접속 프로토콜이 서버로부터 메시지를 추출.

 

* 메일 액세스 프로토콜

1) POP3(Post Office Protocol version3)

- by default, delete messages from the server after retrieving

- disconnects from the server after download

 

2) IMAP(Internet Mail Access Protocol)

- Keeps all messages at server and allows user to organize message folders

-synchronization(동기) across device

-stays connected until the mail client app is closed and message download is complete

 

3) HTTP

-provides web-based interface on top of SMTP (to send), IMAP (or POP) to retrieve e-mail messages

-used between browser and server

- Gmail, Yahoo! etc.

 

 

2.4 DNS-인터넷의 디렉터리 서비스

인터넷 호스트, 라우터->ip 주소: 32비트 기리의 계층적 주소

 

DNS(Domain Name System)

-DNS 서버들이 계층 구조로 구현된 분산 데이터 베이스

-호스트가 분산 데이터 베이스를 질의하도록 허락하는 어플리케이션 계층 프로토콜

-응용 계층 프로토콜로 구현된 인터넷 기능

 

DNS가 제공하는 서비스

-호스트 이름을 IP주소로 변환

-호스트 서버 엘리어싱 : 간단한 별칭 호스트 네임을 복잡한 정식 호스트 네임으로 변환

-메일 서버 엘리어싱 : 간단한 별칭 메일 서버의 이름을 복잡한 정식 메일 서버 이름으로 변환

-부하분산 : DNS는 중복 웹 서버와 같은 여러 중복 서버 사이에 부하를 분산하기 위해서도 사용됨.

 

DNS 동작 원리 개요 

분산 계층 데이터 베이스

DNS 클라이언트가 www.amazon.com 의 IP주소를 최초로 질의

1.클라이언트는 DNS서버를 찾기 위해 루트 서버에 질의

2. 클라이언트는 amazon.com의 DNS 서버 주소를 위해 .com의 DNS서버(TLD서버)에 질의.

3. 클라이언트는 www.amazon.com의 IP 주소를 얻기 위해 amazon.com의 DNS 서버(책임서버)에 질의.

 

로컬 DNS서버

-호스트의 DNS질의는 기본적으로 로컬 DNS서버로 전달.

-각 ISP에는 로컬 DNS서버가 존재.

-로컬 DNS서버는 엄격하게 계층에 속하지 않음.

 

 

DNS 동작 예시

 

반복적 질의

반복적 질의(재귀적 질의와 차이점 구분하기)

-질의를 받은 서버가 연결할 서버의 주소로 응답

-"이 이름의 IP주소는 모르나 이 서버에 질의 해봐라.

 

 

재귀적 질의

재귀적 질의

- 이름에 대한 해결을 접촉한 서버에서 부담.

-상위 계층 서버에 많은 부담

 

 

DNS캐싱(쓸때 장점, 주의할 점 알아두기)

-DNS서버는 호스트 이름과 ip주소의 짝을 캐싱하여, 같은 질의에 대한 응답으로 캐시된 ip주소를 즉시 전달함.

 

장점

-캐싱은 응답 시간을 개선함.

-캐싱된 정보는 일정시간이 지나면 소멸(time-out)됨.

-TLD서버는 일반적으로 로컬 DNS 서버에 캐시되어있음.

 

주의할 점

-캐싱된 항목은 오래된 것일 수도 있음.

-만약 DNS 호스트가 ip주소를 바꾸면 TTL이 만료되기 전까찌 인터넷 천제에 알리지 않음.

 

 

 

2.5 P2P 파일 분배

P2P(peer-to-peer)

-서버가 항상 켜져 있음.

-임의의 호스트(peer)간의 직접 통신.

-peer는 다른 peer들에게 서비스 '요청'과 서비스 '제공을 동시에 수행.

-자기 확장성(self scalability) : 새로운 피어는 새로운 서비스를 요구하지만, 새로운 서비스 용량도 제공.

-피어들이 간헐적으로 연결되고, ip주소가 변경됨.(관리 복잡)

 

 

Q. 한 서버에서 파일(크기 F bit)을 N개의 피어로 배포하는데 걸리는 시간은?

 책 p.130 보고 다시 정리

 

 

 

BitTorrent

비트토렌토는 파일 분배를 위한 인기 있는 P2P프로토콜이다.

토렌트의 피어들은 파일 청크(chunk)를 송/수신.

 

*피어가 토렌트에 가입할 때

-트랙커는 참여하고 있는 피어 집합에서 임의로 피어들의 부분집합을 선택하여 TCP 연결을 설정함.

-청크가 없지만, 시간이 지남에 따라 다른 피어로부터 축적.

 

*while downloading, peer uploads chunks to other peers.

*peer may change peers exchanging chunks.

*피어가 전체 파일을 얻으면, 토렌트를 (이기적으로) 떠나거나 혹은 (이타적으로) 토렌트에 남아 청크를 계속 업로드할 수 있음.

*무료 승차 (free-rider): 피어는 일반적으로 다른 피어에게 파일을 보내지 않고 파일을 받기를 원함

 

 

*requesting chunks

-임의의 시간에 각 피어는 서로 다른 파일 청크들을 가짐.

-주기적으로 Alice(사람이름)는 각 피어에게 가지고 있는 청크목록을 요청.

-Alice는 피어들에게 갖고 있지 않는 청크를 요청.

-어느 청크를 요청할 것인가를 결정하는데 있어, Alice는 가장 드문 것 먼저라고 하는 기술을 사용.

 

*Sending chunks : tit-for-tat

-Alice는 현재 가장 빠른 속도로 청크를 보내는 4개의 피어에게 자신의 청크를 보냄으로써 보답.(이 4개의 피어들은 활성화되었다고 표현함.)

-Alice는 다른 피어들에게 청크를 보내지 않음.(비활성화)

-10초마다 속도를 재평가하여 상위 4개 피어 집합을 수정.

-30초마다 무작위로 다른 피어를 추가로 선택하고 청크를 전송.(낙관적으로 활성화되었다고 표현함.)

-새로 선택된 피어가상위 4개의 피어 중 하나가 될 수 있음.

 

 

'2023 > 컴퓨터 네트워킹' 카테고리의 다른 글

3. 트랜스포트 계층  (0) 2023.04.19
1. 컴퓨터 네트워크와 인터넷  (0) 2023.04.15