기록하는 개발자

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

3-1/컴퓨터네트워크

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

밍맹030 2021. 1. 4. 09:44
728x90

º 네트워크 애플리케이션의 예시

E-mail, 웹, 문자, 원격 로그인, P2P 파일 공유, 다중 사용자 네트워크 게임, 소셜 네트워킹
스트리밍 저장 비디오(Youtube, Hulu, Netflix), VolP(Skype), 실시간 화상회의, 검색 등

º 네트워크 애플리케이션의 개발

1. 애플리케이션 프로그램

서로 다른 종단 시스템에서 동작
네트워크에서 통신
ex) 웹 서버 프로그램과 통신하는 웹 브라우저 프로그램

*네트워크 코어 장비에서 실행되는 소프트웨어의 개발은 불필요
-네트워크 코어 장비는 사용자 애플리케이션을 실행하지 않음
이에 따라 종단 시스템의 애플리케이션을 개발하고 전파 가능

-->네트워크의 코어, 라우터 에는 어플리케이션 레이어가 없기 때문에
우리가 어플리케이션 레이어를 개발할 때 코어에서 돌아가는 프로그램은 필요 없고
종단 시스템에서 돌아가는 서버와 클라이언트 프로그램만 개발하면 된다

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

1. 애플리케이션의 구조(applicative architecture): 개발자가 설계하는 애플리케이션이 다양한 종단 시스템에서 어떻게 조직되어야하는 지를 지시

2. 클라이언트 / 서버 구조

클라이언트 Client
-서비스를 요청하므로써 서버와 통신한다.
-클라이언트들 간에는 직접 통신하지 않는다.
-간헐적으로 통신한다.(본인이 원할 때만 통신)

서버 Server :

-클라이언트 요청에 응답하기 위해 항상 켜져있는 호스트이다.
-수 많은 클라이언트로부터 온 요청을 빠른 시간에 서비스 하기 위해 컴퓨터와 링크로 이루어진 데이터 센터 형식으로 확장되어 구성 된다.
-고정 IP 주소를 가진다.

3. P2P(Peer To Peer) 구조

p2p 구조

-항상 켜져있는 서버가 없으며 임의의 종단 시스템과 직접 통신한다.
-각 peer들이 서비스를 요청하고 서비스를 제공한다.
-peer는 간헐적으로 연결되며 IP주소를 변경한다. --> 관리가 어려움.

*높은 자기 확장성 : 새로운 peer는 새로운서비스 수요와 동시에 서비스 수용력을 가져온다.

º 프로세스 간 통신

*프로세스 : 호스트에서 실행 중인 프로그램
-호스트 내에서 두 프로세스는 os 에서 정의한 IPC(Inter-Process Communication)로 통신한다.
(하나의 컴퓨터 안에 있는 프로세스 간의 통신은 IPC를 통해 발생)
-다른 호스트 간의 프로세스들은 메시지를 교환하여 통신

*클라이언트와 서버 프로세스
-클라이언트 프로세스는 통신을 개시하는 프로세스
-서버 프로세스는 세션을 시작하기 위해 접속을 기다리는 프로세스
-p2p 구조의 애플리케이션들은 클라이언트 프로세스와 서버 프로세스를 모두 가짐

º 소켓(Socket)

-프로세스는 소켓을 통해 네트워크로 메시지를 송수신 한다.
-소켓을 출입구와 유사함.

*송신 프로세스는 소켓(출입구)를 통해 메시지를 바깥 네트워크로 밀어낸다.
--> 송신 프로세스는 수신 프로세스에 있는 소켓에 메시지를 전달하기 위해 반대 소켓의 전송 인프라에 의존

º 프로세스의 주소

-메시지 수신을 위해서는 프로세스를 구분하는 식별자가 필요하다.
-호스트는 32비트 IP 주소로 식별

Q. 프로세스가 수행되는 호스트의 IP주소로 프로세스들을 식별 할 수 있는가?
A. NO. 호스트에서는 많은 프로세스들이 동시에 수행될 수 있기 때문에 불가능하다.

-식별자는 호스트의 프로세스와 관련된 IP주소와 포트 번호를 포함

ex) 포트 번호의 예시
HTTP 서버 : 80
메일 서버 : 25

ex) HTTP 메시지를 gaia.cs.umass.edu 웹 서버에 전송
IP 주소 : 128.119.245.12
포트 번호 : 80


º 애플리케이션 계층의 프로토콜 정의하는 내용

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

º 애플리케이션이 요구하는 트랜스포트 요구사항

º 인터넷 트랜스포트 계층이 제공하는 서비스

*TCP(Transmission Control Protocol)서비스 = 연결 지향형 서비스
: 클라이언트와 서버 프로세스 간의 연결 설정

*연결 설정 : 연결에 필요한 정볼르 미리 주고 받은 후 데이터를 주고 받는 방식

*특징
1. 신뢰적인 데이터 전송
- 송수신 프로세스 간의 데이터의 손실 없이 올바른 순서로 전달
-패킷이 없어지는 Loss 발생 시 tcp 는 패킷을 재요청 하여 올바른 순서로 맞춰 어플리케이션 레이어에 올려준다.

*올바른 순서란 sender 가 reciever 에게 transport layor 의
프로토콜 계층(tcp)을 통해 전달 하면 데이터는 패킷이라는 조각으로 나뉘어 전달되는데,
각각의 패킷들이 다른 path 로 전달되면 틀린 순서로 전달 될 수가 있다 .
tcp 는 이를 맞는 순서로 바꿔 전달해준다.
--> 즉, 손실이 없으면서 순서도 맞게 전달해준다

2.흐름 제어
-송수신 프로세스가 수신 프로세스의 데이터 수신 속도에 맞추어 송신

3. 혼잡 제어
-네트워크가 혼잡 상태에 이르면 프로세스의 전송 속도를 낮춘다.

4. 제공하지 않는 서비스
-시간 보장, 최소 처리율 보장, 보안성


*UDP(User Datagram Protocol)서비스 = 비연결 지향형 서비스
: 두 프로세스가 통신 전 정보 교환을 하지 않음

*특징
1. 비신뢰적인 데이터 전송
-패킷 손실 발생 시 재전송을 요청하지 않음

2. 흐름 제어, 혼잡 제어, 시간 보장, 처리율 보장, 보안 등의 서비스도 제공하지 않음
-아무 것도 하지 않으므로 빠르다.
-따라서 실시단 애플리케이션 들이 전송 속도 향상을 위해 udp 사용

3. 실시간 애플리케이션들의 전송 속도를 위해 UDP 사용
-tcp의 혼잡 제어와 패킷 오버헤드 문제를 회피
-많은 방화벽들이 udp 트래픽을 차단하도록 설정되어 점차적으로 tcp 상에서 멀티미디어와 실시간 애플리케이션을 수행하도록 선택
-->각각의 호스트들이 독립적으로 네트워크를 사용하게 됨

ex) tcp에서 제공하는 혼잡 제어를 통해 네트워크가 바쁘면 , tcp 의 송신자는 데이터를 적게 보낸다.
그러나 udp는 혼잡제어를 하지 않으므로, 네트워크가 바빠도 데이터를 많이 보내게 된다.

이에 네트워크를 망가지는 일이 생겨 요즘에는 udp 보다는 tcp 사용을 하는 추세.

º 인터넷 애플리케이션의 트랜스포트 프로토콜

º 보안 TCP

1. tcp와 udp
-암호화를 제공하지 않음
-소켓을 통해 암호화되지 않은 비밀번호 등이 인터넷으로 전송

2.SSL
- 암호화 된 TCP 연결을 제공
-데이터 무결성
-종단 인증

3. SSL은 애플리케이션 계층에서 구현
-애플리케이션은 SSL 라이브러리를 사용하여 암호화 된 데이터를 TCP 소켓에 전달

728x90

'3-1 > 컴퓨터네트워크' 카테고리의 다른 글

2.3 FTP  (0) 2021.01.04
2.2 웹과 HTTP  (0) 2021.01.04
1.5 프로토콜 계층과 서비스 모델  (0) 2020.05.08
1.4 패킷 교환 네트워크에서의 지연, 손실과 처리율  (0) 2020.05.08
1.3 네트워크 코어  (0) 2020.05.08