![](https://velog.velcdn.com/images/dragonappear/post/e29fae26-b2a1-4612-9d58-41a507895e2e/image.png)
네트워크 어플리케이션
제공 서비스
- 통신 서비스를 사용하여 최초 사용자에게 제공되는 서비스
- 네트워크에 연결된 2개 이상의 호스트에서 동작하는 프로그램으로 구현
통신 장치
- 호스트: 응용 정보를 교환하고 해석하고 처리
- 스위치: 통신 장치를 연결하고 패킷 교환(응용 정보 처리에는 관여하지 않음)
패킷
- 응용 정보를 효율적으로 교환하기 위해 작은 크기로 나눈 정보 단위
- 호스트에서 재조립되어 어플리케이션 계층에서 처리
프로세스
- 호스트에서 네트워크를 통해 응용 프로토콜을 교환하며 작동하는 프로그램
프로토콜
- 어플리케이션 프로세스 간에 교환하는 메시지 교환 규칙
- 어플리케이션 프로세스의 일부
웹 어플리케이션 구성 예
HTML, 웹 브라우저, 웹 서버, 어플리케이션 계층 프로토콜을 포함한 여러 요소들로 구성된다.
어플리케이션 구조
분산 네트워크에서 어플리케이션 프로그램이 작동하는 방식은 클라이언트-서버 or P2P 구조로 동작한다.
클라이언트-서버 구조
동작 방식
- 항상 클라이언트 프로그램이 요청하고, 서버 프로그램이 응답을 수행한다.
클라이언트
- 서버에게 응용 서비스 요청(클라이언트 간 요청 X)
- 필요할 때만 작동
- 동적(임시) IP 주소 사용 가능
서버
- 다수의 클라이언트의 요청에 응답
- 항상 작동
- 고정 IP 주소 사용
- Scalability 문제를 항상 고려해야한다.
P2P 구조
동작
- 임의의 호스트 간에 직접 통신
- 각 호스트는 클라이언트와 서버 역할을 동시에 수행하며
- 호스트 간의 관계가 대등하다.
장점
- 서버 의존성이 없음
- 구축 및 관리 비용이 낮음
- Scalability 뛰어남
단점
응용 프로세스 통신
소켓
- 통신의 endpoint
- 운영체제가 프로세스 간 통신을 위해 제공하는 서비스
- 어플리케이션과 트랜스포트 계층 사이의 인터페이스
- 응용 프로세스가 네트워크로 메시지를 송신하고, 수신할 때 사용하는 자료구조
- 운영체제의 트랜스포트 계층 상에서 구현
- 트랜스포트 계층은 OS에서 제공하는 통신 프로토콜
- 소켓 통신은 클라이언트-서버 구조로 사용된다.
주소
- 프로세스 간 통신이 소켓 통신으로 이루어질 때, 두 프로세스는 1:1 소켓 통신을 한다.
- 통신을 하기 위해서는 소켓 주소를 알아야 한다.
- 소켓 주소 = IP 주소 + 포트 번호
- 호스트 주소 = IP 주소
- 프로세스 번호 = port 번호
![](https://velog.velcdn.com/images/dragonappear/post/15655214-3376-4e42-a041-d4d3cb1178de/image.png)
트랜스포트 계층 서비스
어플리케이션 계층은 하위 계층인 트랜스포트 계층의 서비스를 이용할 수 있다.
크게 4가지 차원으로 분류할 수 있다.
모든 트랜스포트 계층의 프로토콜이 아래 4가지를 제공하는 것은 아니다.
신뢰적 데이터 전송
- 패킷은 라우터 버퍼에서 오버플로가 발생하거나, 패킷의 비트가 잘못되면 호스트 혹은 라우터에 의해 버려질 수 있다.
- 트랜스포트 프로토콜은 보장된 데이터 전송 서비스를 제공하여, 송신 프로세스는 데이터가 수신 프로세스에 오류없이 도착할 것이라고 보장받는다.
처리율
- 어느 명시된 속도에서 보장된 가용 처리율을 제공할 수 있다.
시간
- 처리율 보장과 마찬가지로 시간 보장을 제공할 수 있다.
보안
- 트랜스포트 프로토콜은 어플리케이션 프로토콜에 하나 이상의 보안 서비스를 제공할 수 있다.
응용 계층 프로토콜
프로세스는 소켓으로 메시지를 보냄으로써 통신을 할 수 있다.
어플리케이션 계층 프로토콜은 호스트에서 실행되는 어플리케이션의 프로세스가 서로 메시지를 보내는 방법을 정의한다.
- 교환 메시지 타입
- 메시지 문법
- 필드의 의미
- 언제,어떻게 프로세스가 메시지를 전송하고, 메시지에 응답하는지 결정하는 규칙