728x90
네트워크 애플리케이션
- 종단 시스템에서 통신하는 프로그램
네트워크 애플리케이션 구조
클라이언트-서버
- 클라이언트 : 서버에 요청을 발신하는 호스트
- 서버 : 항상 켜져있음, 고정 IP, 데이터센터를 구축해서 가상 서버 생성함
P2P
- 서버에 거의 의존하지 않음
- 애플리케이션은 peer라는 연결된 호스트 쌍이 통신함
- peer는 데스크톱, 랩톱 등
- 자가 확장성이 있음
프로세스 간 통신
- 운영체제 관점에서 실제로 통신하는 것은 프로그램이 아닌, 프로세스
- 프로세스는 메시지를 교환함으로써 종단 시스템간 통신함
- 클라이언트-서버
- 클라이언트 : 통신 세션에서 통신을 초기화하는 프로세스
- 서버 : 세션을 시작하기 위해 접속을 기다리는 프로세스
- 프로세스는 소켓을 통해 네트워크로 메시지를 송수신함
- 프로세스 --> 집, 소켓 --> 출입구로 비유
- 소켓 : 호스트의 애플리케이션(응용) 계층과 전송 계층 간 인터페이스, 애플리케이션과 네트워크 사이의 API
- 프로세스 주소 배정 : 수신 프로세스를 식별하기 위해서
- 호스트 주소(
IP adress
) - 호스트 내 프로세스 식별자(
port
)
- 호스트 주소(
전송 계층이 애플리케이션에 제공할 수 있는 서비스
- 신뢰적 데이터 전송 : 데이터가 안전하게 전달되도록 보장
- 처리량
- 시간
- 보안
인터넷 전송 프로토콜이 제공하는 서비스
- 전송 프로토콜 : TCP, UDP
- 전송 프로토콜은 시간과 대역폭을 보장하지 않음
TCP
- 연결 지향형 : 메시지 전송 전 핸드셰이킹
- 신뢰적인 데이터 전송 : 프로세스는 모든 데이터를 오류없이 순서대로 전송
- 두 프로세스가 서로에게 동시에 메시지를 보낼 수 있음 --> 전이중 연결(
Full-duplex
)
UDP
- 최소 서비스 모델, 간단한 전송 프로토콜
- 비연결형 : 메시지 전송 전 핸드셰이킹 안함
- 비신뢰적인 데이터 전송 : 메시지가 수신 소켓에 도착하는 것을 보장 X, 메시지의 순서가 바뀔 수 있음
- 혼잡제어 X --> UDP로 송신하면 데이터를 원하는 속도로 네트워크 계층으로 전송할 수 있음
애플리케이션 계층 프로토콜
- 애플리케이션 계층 프로토콜을 다음을 정의함
- 교환 메시지 타입
- 메시지 타입의 문법
- 필드에 있는 정보의 의미
- 메시지 전송/응답 결정 규칙
- HTTP, SMTP ...
HTTP(HyperText Transfer Protocol)
- HTTP는 클라이언트 프로그램과 서버 프로그램으로 구현됨
- 클라이언트, 서버는 HTTP 메시지를 통해 통신함
- 웹 페이지는 객체로 구성
- 객체는 단일 URL로 지정할 수 있는 하나의 파일
- 웹서버는 이러한 웹 객체를 가지고 있음
- HTTP는 TCP를 전송프로토콜로 사용함
- 브라우저/서버의 프로세스는 소켓 인터페이스를 통해서 TCP로 접속함
- 서버는 클라이언트에 대한 어떤 상태 정보도 저장하지 않음 --> 비상태 프로토콜
비지속 연결, 지속 연결
비지속 연결 HTTP
- HTTP는 클라이언트가 웹 페이지를 어떻게 해석하는지 관심이 없음
- 각 TCP 연결은 하나의 요청 메시지에 하나의 응답 메시지만 전송
- 각 요청 객체마다 새로운 연결이 맺어져야 함
- 매번 TCP 연결과정을 수행하기에 송수신 시간이 객체만큼 증가함
지속 연결 HTTP(1.1)
- 서버는 응답을 보낸 후 TCP 연결을 유지함
- 진행중인 요청에 대한 응답을 기다리지 않고 계속해서 요청을 송신할 수도 있음 -->
Pipelining
- 보통 서버는 일정 시간 사용되지 않으면 연결을 끊음
- HTTP1.1의 디폴트는 파이프라이닝 지속 연결
웹 캐싱
- 웹 캐시/프록시 서버
- 웹 서버를 대신하여 HTTP 요청에 응답하는 네트워크 /개체
- 자체 저장 디스크 보유 --> 최근 호출된 객체 사본 저장
- 캐시는 서버이면서 클라이언트
- 클라이언트의 요구에 응답시간을 단축할 수 있음
- 인터넷 접속 링크 상의 트래픽을 줄여줌
- CDN(Content Distribution Network)
조건부 GET
- HTTP는 모든 객체가 최신인지 확인하며 캐싱함
인터넷 전자메일
- 인터넷 전자메일 시스템은 사용자 에이전트, 메일 서버, SMTP로 이뤄져 있음
- 사용자 에이전트 : 애플의 Mail 앱, MS의 Outlook 등
- 메일 서버 : 메일박스를 가지고 있음. 메시지 큐를 통해 재전송 등 수행
SMTP(Simple Mail Transfer Protocol)
- 메일 전송 프로토콜, TCP를 이용
- 지속 연결
- Push Protocol
- 메시지가 ASCII 포맷이도록 요구함
- Push Protocol이기 때문에 메일서버에서 메일을 확인하려면 POP3 or IMAP, HTTP 등을 이용해야 함
POP3(Post Office Protocol version 3)
- 매우 간단한 메일 접속 프로토콜
- 에이전트가 메일서버의 port : 110 를 통해서 TCP 연결을 할 때 작동
- 인증, 트랜잭션, 갱신의 과정이 있음
- 원격 폴더를 생성 X, 폴더에 메시지 할당 X
IMAP(Internet Mail Access Protocol)
- 메일 접속 프로토콜
- IMAP 서버는 폴더에 각각의 메시지를 연결
- 사용자가 폴더를 생성하고 폴더 간 메시지 이동 명령 제공
- 특정 조건에 맞는 원격 폴더 찾기 명령 제공
- IMAP 세션을 통해서 사용자의 상태 정보 유지
웹 기반 전자메일(HTTP)
- 에이전트 == 웹 브라우저
- HTTP를 통해서 메일 서버 내 메일박스와 통신
- 브라우저 - 메일 서버 --> HTTP, 메일 서버 - 메일 서버 --> SMTP
DNS
- Hostname : 호스트에 대한 식별자
- 호스트 네임은 라우터가 처리하는 데 어려움
- 호스트는 IP 주소로도 식별 가능
- 호스트를 IP로 변환해주는 디렉터리 서비스
- DNS 서버들의 계층구조로 구현된 분산 데이터베이스
- 호스트가 분산 데이터베이스로 질의하도록 허용하는 애플리케이션 계층 프로토콜
- DNS는 다른 애플리케이션 프로토콜(HTTP, SMTP, FTP 등)이 사용자가 제공한 호스트 네임을 IP 주소로 변환하기 위해 사용됨
- 주요 기능
- 호스트 네임 -> IP 주소 변환
- 호스트 앨리어싱(host aliasing) : 별칭 호스트 네임에 대한 정식 호스트 네임 확보
- 메일 서버 앨리어싱(mail server aliasing)
- 부하 분산(load distribution)
- 분산 계층 데이터베이스 : 루트 DNS 서버 <- 최상위 레벨 도메인 서버 <- 책임 DNS 서버. 자원 레코드 저장
- DNS 캐싱 제공
CDN(Contents Distribution Network)
- 다수의 지역에 분산된 서버를 배치. 서버에 콘텐츠 적재하여 운영
- 서버 배치 철학
- Enter Deep
- 서버 클러스터를 세계 곳곳 접속 네트워크에 구축 --> ISP의 접속 네트워크로 깊이 들어감
- 서버를 최대한 사용자 가까이에 위치 --> 사이의 링크와 라우터 수를 줄임
- 서버 클러스터 유지 관리 비용이 커짐
- Bring Home
- 핵심 지점에 대규모 서버 클러스터 구축
- 클러스터는 인터넷 교환지점(IXP)에 배치
- 상대적으로 지연시간, 처리율이 불리함
- Enter Deep
- 동작방식
- 사용자 호스트의 요청을 가로챔 --> 적당한 CDN 클러스터 선택 --> 요청을 해당 클러스터에 연결
'컴퓨터공학 > 네트워크' 카테고리의 다른 글
URL과 리소스 (0) | 2021.05.31 |
---|---|
[컴퓨터 네트워크] 링크 계층 (0) | 2021.01.28 |
[컴퓨터 네트워크] 네트워크 계층 (0) | 2021.01.26 |
[컴퓨터 네트워크] 트랜스포트 계층 (0) | 2021.01.25 |
[컴퓨터 네트워크] 1. 인터넷이란? (0) | 2021.01.18 |