네트워크 - application layer(1)

2020. 2. 4. 15:01Security/네트워크

* 어플리케이션 계층의 구조

프로그램의 실행
- 서로 다른 종단시스템(맨 끝)간에 실행
- 네트워크 위에서 실행 ex) Web: Web 서버와 browser간에 통신
- Network core는 Network 프로그램에 대해서 투명하기 때문에 Network core의 장치와 application 개발과는 무관 
- 종단시스템으로 소프트웨어를 제한한다는 기본설계는 인터넷 application의 빠른 개발과 전개를 쉽게 해준다.

 

clinet-server 구조

- server는 항상 켜져 있고, 고정 IP를 갖는다.
- server는 다량의 client로부터 요청을 처리하기 위해 server farm를 구성(가상 서버)
- client는 server에 서비스를 요청하고 필요에 따라 서버에 접속한다.
- clinet는 동적인 IP를 사용하는 경우도 있고 client간에 직접 통신하지 않는다.

- 대부분의 application 구조는 clinet-server 구조.

 

프로세스간 통신

- 동일 시스템의 프로세스간 통신은 inter-process communication이라 불리며 이 통신의 규칙은 종단 시스템의 운영체제에 의해서 좌우된다.
- 서로 다른 시스템간의 process간에는 message 교환으로 통신.

- Client process : Process간에 통신 세션에서 통신을 초기화.(능동적)
- Server process : 세션을 시작하기 위해서 접속을 기다린다.(수동적)
- Note : P2P application은 client process와 serverprocess 두가지 기능을 모두 가지고 있다.

 

Socket

- 2개의 process는 네트워크를 통해서 message를 주고 받는데 socket을 통해 네트워크에 message를 주고받음.
- Socket은 문(door)에 비유될 수 있다.
- 송신쪽 process는 door바깥쪽으로 message를 밀어낸다.
- 송신쪽 process는 네트워크를 거쳐 수신 process로 message가 전달되는 구조가 문 바깥쪽에 있다고 신뢰.
- 전달된 message는 door을 통해 수신 process로 전달 된다.

addressing processes

- process가 message를 수신하기 위해서는 반드시 자신에 대한 인식 정보가 필요.
- 호스트들은 32bit의 unique한 IP 주소를 갖는다.
- 동일한 host에는 많은 process가 존재하기 때문에 종단 시스템의 IP 주소만으로 process를 정확히 구별이 불가능
- 호스트의 각 process를 정확히 구별하기 위해서는 IP주소와 port number가 모두 필요.

- 동일 프로세스가 메모리에 복사되어있으면 IP주소와 port number로도 구분이 안 되기 때문에 socket으로 구분
- 유명한 application protocol들은 특정 port number가 할당 되어 있다. ex) HTTP server: 80, mail server : 25

 

protocol

- 교환되는 message의 타입(request와 response 구분) 
- 여러 message type의 syntax(message 내부의 각 field를 구별하는 방법)
- Filed의 semantics (각 field의 의미, 담고 있는 정보의 내용)
- 언제 어떻게 process가 message를 전송하고 응답하는지를 결정하는 규칙

- protocol의 3요소는 timing(시간안에), syntax(해석하기 위해 끊는 단위), semantics(내용)이다.

 

public domain protocol(공공 프로토콜)
- RFC에 정의되어있으며 RFC에서 제공되는 규칙에 따른다면 상호 운영이 가능.
ex)HTTP, SMTP

 

proprietary protocol(개별적인 프로토콜) 
- 개인이 사용하는 프로토콜.

TCP service
- 연결지향형 서비스 : message를 전송하기 전에 client와 server process간에 전송 제어정보가 전달.
- 신뢰적인 전송 서비스 : 모든 데이터가 오류 없이 올바른 순서로 전달.
- 혼잡 제어 : 네트워크가 혼잡 상태에 이르면 송신자가 전송 속도를 낮춘다.(process의 직접적인 이득보다는 인터넷 전체 성능 향상)
- 최소전송률을 보장하지 않는다.
- 지연보장을 하지 않는다.

UDP service
- 비신뢰적인 data전송 서비스를 제공한다. (도착여부나 순서를 보장하지 않는다.)
- 통신 전에 제어 정보를 전송하는 connection setup 과정이 없다.
- 신뢰성, 혼잡 제어, 흐름 제어, 지연, 최소 전송률 등을 보장하지 않는다.

- 모든 data가 전달되지 못하더라도 송신 process는 원하는 속도로 data를 전송 해야 하는 실시간 application
에 사용. 이런 application들은 data의 일부 손실은 감수 가능

 

 

* Application이 필요로 하는 전송 서비스

data 손실

- application에 따라서는 data의 손실을 허용하기도 함.
- 일부 application들은 데이터 손실이 전혀 없는 신뢰적인 전송을 요구 ex) FTP, telnet

 

timing

- 인터넷, 스마트폰, 게임등의 application들은 효과적인 data전송을 위해 매우 낮은 수준의 지연만 허용.
- 엄격한 시간조건을 요구한다.