Reference :
컴퓨터 네트워킹 하향식 접근 [8판] / 퍼스트 북 / James F. Kurose, Keith W. Ross
건국대학교 컴퓨터 네트워크 수업 / 김기천 교수님
네트워크 애플리케이션 구조
네트워크 구조
- 고정되어 있고 애플리케이션에 특정 서비스 집합을 제공
애플리케이션 구조 (application architecture)
- 개발자에 의해 설계됨
- 종단 시스템에서 어떻게 조직되어야 하는지 지시
[구조 종류 2가지]
- 클라이언트 - 서버 구조
- 설명
- 서버: 항상 커져 있는 호스트
- 클라이언트: 가끔 or 항상 켜짐
- 클라이언트에서 실행되는 브라우저가 웹서버로 서비스를 요청
- 특징
- 클라이언트는 서로 직접적으로 통신하지 않음
- 서버가 고정 IP 주소를 가짐
- 예시(이 구조로 잘 알려진 것들)
- 웹, 파일 전송, 원격 로그인, 전자메일
- 데이터 센터
- 설명
- 많은 수의 호스트를 갖춤
- 나타난 이유
- 하나의 서버 호스트가 자신의 클라이언트로부터의 모든 요청에 응답하는 것은 불가능하므로
- 기능
- 가상의 서버 생성
- TMI
- 구글은 전 세계적으로 분산된 30~50개의 데이터 센터를 가지고 있음
- P2P 구조
- peer라는 호스트 쌍이 서로 직접 통신하도록 한다
- peer : 서비스 제공자가 소유하지 않고, 사용자들이 제어하는 PC
- 특정 서버를 통하지 않고 피어가 통신하므로 이 구조를 peer to peer (P2P)라고 함
- 특징
- 자가 확장성
- 각 피어들이 파일을 요구함으로써 작업 부하를 만들어 내지만 각 피어들은 또한 일을 다른 피어들에 분배함으로써 그 시스템에 서비스 능력을 추가한다
- 비용 효율적
- 엄청난 서버 기반구조와 서버 대역폭을 요구하지 X
- 미래 P2P 애플리케이션은 고도의 분산구조로 인해 보안, 신뢰성에 문제가 생길수도 ?!
- dedeicated server와 반대임
- dedicated server : 호스트 컴퓨터가 모든 클라이언트를 전담함
- 하이브리드 구조
- P2P구조와 클라이언트-서버 구조를 합친 것
프로세스 간 통신
- 프로세스
- 설명
- 우리는 흔히 프로그램이 통신하는 것으로 알고 있지만 실제로 통신하는 것은 프로세스!
- 프로세스 : 종단 시스템에서 실행되는 프로그램
- 분류
- 같은 종단 시스템에서 실행될 때
- 프로세스 간에 통신 : 종단 시스템의 OS에 의해 좌우됨
- 다른 종단 시스템에서 실해될 때
- 컴퓨터 네트워크를 통한 메세지 교환으로 통신함
- 클라이언트와 서버 프로세서
- 두 프로세스 간의 통신 세션에서
- 클라이언트 프로세서 : 통신을 초기화 (다른 프로세서와 세션을 시작하려고 접속을 초기화)하는 프로세스
- 서버 프로세스 : 세션을 시작하기 위해 접속을 기다리는 프로세스
- 프로세서와 컴퓨터 네트워크 사이의 인터페이스
- 소켓
- 프로세스는 소켓을 통해 네트워크로 메세지를 보내고 받는다
- 비유 프로세스 : 집 / 소켓 : 출입구
- 애플리케이션 계층과 트랜스포트 계층 간의 인터페이스
- 애플리케이션과 네트워크 사이의 API
- 애플리케이션 개발자는 소켓의 애플리케이션 계층에 대한 모든 통제권을 갖지만 소켓의 트랜스포트 계층에 대한 통제권은 거의 갖지 못함
- 프로세서 주소 배정
- 수신 프로세스를 식별하기 위해 두 가지 정보가 명시되어야 함!
- 호스트 주소 (IP 주소)
- 목적지 호스트 내의 수신 프로세스를 명시하는 식별자 (포트번호)
- 한 호스트가 많은 네트워크 응용을 수행할 수 있기 때문
- 웹 서버 : 80번, 메일 서버: 25번
애플리케이션이 이용 가능한 트랜스포트 서비스
[트랜스포트 계층이 제공(보장)하는 서비스 4가지]
- 신뢰적 데이터 전송
- 패킷들은 컴퓨터 네트워크 내에서 손실될 수 있다 ==> 패킷은 라우터의 버퍼에서 오버플로(overflow)되거나, 패킷의 비트가 잘못되면 호스트 혹은 라우터에 의해 버려질 수 있다.
- 따라서 올바른 데이터를 전달하도록 보장하기 위해 조치를 취해야 한다
- 신뢰적인 데이터 전송 (reliable data transfer)을 해야 한다
- 처리율
: 두 프로세서 간의 통신 세션에서 송신 프로세스가 수신 프로세스로 비트를 전달할 수 있는 비율
트랜스포트 프로토콜은 가용한 처리율이 적어도 r bps 임을 보장함
대역폭 민감 애플리케이션
: 처리율 요구사항을 갖는 애플리케이션
ex) 인터넷 전화 애플리케이션
탄력적 애플리케이션
: 가용한 처리율을 많으면 많은대로 적으면 적은대로 이용할 수 있는 애프리케이션
ex) 전자메일, 파일 전송, 웹 전송
- 시간
트랜스포트 계층 프로토콜은 시간 보장(timing guarantee)을 제공할 수 있다
ex)
송신자가 소켓으로 내보내는 모든 비트가 수신자의 소켓에 100ms 내에 도착하게 하는 것이다 => 인터넷 전화, 가상 환경, 원격 회의 (teleconferencing), 다자간 게임과 같은 실시간 상호작용 애플리케이션에 적합
- 보안
트랜스포트 프로토콜은 애플리케이션에 하나 이상의 보안 서비스를 제공할 수 있다
ex)
- 송신 호스트에서 트랜스포트 프로토콜은 송신 프로세스가 전송하는 모든 데이터를 암호화할 수 있다
- 수신 호스트에서 트랜스포트 프로토콜은 그 데이터를 수신 프로세스로 전달하기 전에 데이터의 암호를 해독할 수 있다
인터넷 전송 프로토콜이 제공하는 서비스
인터넷은 애플리케이션에게 2개의 전송 프로토콜 (UDP, TCP)을 제공
[TCP 서비스]
- 연결지향형 서비스
- 핸드셰이킹(handshaking), 주고받기 : 정보기술과 전기통신 및 관련 분야에서 채널에 대한 정상적인 통신이 시작되기 전에 두 개의 실체 간에 확립된 통신 채널의 변수를 동적으로 설정하는 자동화된 협상 과정
- 애플리케이션 계층 메세지를 전송하기 전에 클라이언트와 서버가 서로 전송 제어 정보를 교환하도록 함
- "곧 패킷이 도달할 것이니 준비하렴"을 알려줌
- TCP 연결 (전이중 연결)이 두 프로세스 소켓 사이에 존재한다고 말함
- 전이중 연결: 두 프로세스가 서로에게 동시에 메세지를 보낼 수 있음
- 신뢰적인 데이터 전송 서비스
- 애플리케이션의 한 쪽이 바이트 스트림을 소켓으로 전달하면 그 바이트 스트림을 손실하거나 중복되지 않게 수신 소켓으로 전달함
- 혼잡제어 방식
- 각 TCP 연결이 네트워크 대역폭을 공평하게 공유할 수 있게 제한
- 네트워크가 혼잡상태에 이르면 프로세스 속도를 낮춤
- 추가 > SSL (TCP의 보안 강화 ver)
- TCP나 UDP는 암호화를 제공하지 X
- SSL = TCP + 암호화, 데이터 무결성, 보안 서비스
- 사용 방법 in 애플리케이션
- 애플리케이션의 클라이언트와 서버 측 모두에 SSL 코드를 포함해야 함!
- 송신 프로세스는 평문 데이터를 SSL 소켓에 전달
- 송신 호스트에 있는 SSL은 데이터를 암호화하고 암호화된 데이터를 인터넷을 통해 수신 프로세스에 있는 TCP 소켓으로 전달
- 수신 소켓은 암호화된 데이터를 SSL로 전달하고, 이 SSL은 암호를 푼다
- SSL 소켓을 통해 평문 데이터를 수신 프로세스로 전달
[UDP 서비스]
- 비연결형 서비스
두 프로세스가 통신을 하기 전에 핸드쉐이킹 X
- 비신뢰적 서비스
메세지가 수신 소켓에 도착하는 것을 보장 X
- 혼잡제어 포함 X
데이터를 원하는 속도로 하위 계층 (네트워크 계층)으로 보낼 수 O
인터넷 트랜스포트 프로토콜이 제공하지 않는 서비스
인터넷 전화가 효과적으로 되려면 최소한의 전송속도를 필요로 함 => 많은 방화벽들이 UDP를 차단하도록 설정됨
=> 이를 대비하여 TCP 사용
=> TCP가 데이터 도착에 대한 신뢰성을 제공하기 때문에 TCP를 씀
애플리케이션 계층 프로토콜
다른 종단 시스템에서 실행되는 애플리케이션의 프로세스가 서로 메세지를 보내는 방법을 정의
네트워크 애플리케이션의 한 종류일 뿐!
ex) HTTP (웹 브라우저 - 웹 서버) / SMTP (메일 클라이언트 - 서버)
이 책에서 다루는 네트워크 애플리케이션
- 웹 (HTTP)
- FPT (파일 송수신)
- 전자메일
- DNS
- 비디오 스트리밍
- P2P
'컴퓨터 네트워크 > Ch2. 애플리케이션 계층' 카테고리의 다른 글
6. 비디오 스트리밍과 콘텐츠 분배 네트워크 (0) | 2023.03.22 |
---|---|
5. P2P 파일 분배 (0) | 2023.03.22 |
4. DNS: 인터넷의 디렉터리 서비스 (2) | 2023.03.22 |
3. 인터넷 전자메일 (0) | 2023.03.22 |
2. 웹과 HTTP (0) | 2023.03.22 |