[Network] 애플리케이션 계층

2024. 10. 4. 17:15·Computer Science/Network

"컴퓨터 네트워킹 : 하향식 접근(제7판)"을 읽고 정리한 내용입니다.

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

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

애플리케이션 구조 2가지

  1. 클라이언트-서버(Client-server) 구조
  2. P2P(peer-to-peer) 구조

클라이언트-서버 구조

  • 서버
    • 항상 켜져있는 호스트이다.
    • 고정 IP 주소를 갖는다.
    • 데이터 센터가 사용되기도 한다.
  • 클라이언트
    • 서버와 통신한다.
    • 클라이언트끼리 직접적으로 통신하지 않는다.
    • 유동적인 IP 주소를 가질 수 있다.

P2P 구조

  • 서버가 항상 켜져있지 않는다.
  • 피어(Peer)라는 임의의 종단 시스템과 직접적으로 통신한다.
    • 피어는 다른 피어에게 서비스를 요청하고, 다른 피어에게 서비스를 제공한다. (즉, 자체 확장성(Self scalability)을 갖는다.)
    • 피어는 간혈적으로 연결되고 IP 주소가 변한다.

 

2.1.2 프로세스 간 통신

프로세스

  • 하나의 호스트 내에서 실행되는 프로그램이다.
  • 같은 호스트 내에서 두 개의 프로세스는 IPC(Inter-Process Communication)을 사용해서 통신한다. (이는 OS의 영역이다.)
  • 다른 호스트에서의 프로세스들은 메세지 교환에 의해 통신한다.

클라이언트 프로세스

  • 통신을 초기화하는 프로세스

서버 프로세스

  • 연결을 기다리는 프로세스

소켓

  • 프로세스는 소켓을 통해서 메세지를 주고 받는다.
  • 애플리케이션과 네트워크 사이의 API라고도 한다.

프로세스 주소 배정

  • 메세지를 받기 위해서 프로세스는 식별자를 반드시 가지고 있어야 한다.
    • 식별자는 호스트 프로세스와 연관된 IP 주소와 PORT 번호를 모두 가져야 한다.
  • IP 주소는 32비트로 구성된다.
    • 같은 호스트에서 많은 프로세스들이 작동되기 때문에 IP 주소만으로는 프로세스를 식별할 수 없다. 따라서, PORT 번호도 필요하다.

2.1.3 애플리케이션이 이용 가능한 트랜스포트 서비스

트랜스포트 계층에서 애플리케이션에 제공하는 서비스

  • 데이터 무결성(Data Integrity)
    • 프로세스 간 신뢰적 데이터 전송을 제공한다.
    • 몇몇 애플리케이션(파일 전송)은 100% 신뢰 가능한 데이터 전송을 필요로 한다.
    • 다른 애플리케이션(오디오)은 약간의 손실은 견딜 수 있다.
  • 처리량(Throughput)
    • 어느정도 명시된 속도에서 보장된 처리율을 제공한다. 
    • 몇몇 애플리케이션은 효과적이려면 최소한의 처리량을 필요로 한다.
  • 시간(Timing)
    • 시간 보장을 제공한다.
    • 몇몇 애플리케이션은 효과적이려면 낮은 딜레이를 필요로 한다.
  • 보안(Security)
    • 암호화, 암호 해독 등을 제공한다.

* reliable : no loss, no delay, inorder delivery

 

2.1.4 인터넷 전송 프로토콜이 제공하는 서비스

  • 인터넷은 애플리케이션에게 2개의 전송 프로토콜, 즉 UDP와 TCP를 제공한다.

 

TCP 서비스

  1. 신뢰할 수 있는 전송(reliable transport) : 전송 프로세스와 수신 프로세스 사이의 신뢰할 수 있는 전송
  2. 흐름 제어(flow control) : sender가 receiver를 압도하지 않는다.
  3. 혼잡 제어(congestion control) : 네트워크가 과부화될 때 sender를 스로틀한다.
  4. 연결지향형(connection-oriented) : 클라이언트와 서버 프로세스 사이에 setup 과정이 필요하다. (3-way handshaking)

 

UDP 서비스

  1. 신뢰할 수 없는 데이터 전송(unreliable data transfer) : 전송 프로세스와 수신 프로세스 사이의 신뢰할 수 없는 전송
  2. 비연결형(connection loss service)

 

2.2 웹과 HTTP

2.2.1 HTTP 개요

  • HTTP는 웹의 애플레이케이션 계층 프로토콜이다.
  • 클라이언트-서버 모델
    • 클라이언트 : 요청, 수신, 웹 객체를 나타내는 브라우저
    • 서버 : 웹 서버는 요청에 응답하여 객체를 보낸다.
  • TCP를 전송 프로토콜로 사용한다.
    • 클라이언트가 서버에 PORT 번호 80으로 TCP 연결을 시작한다.
    • 서버는 클라이언트로부터 TCP 연결을 승인한다.
  • 무상태(Stateless)이다.
    • 서버는 과거의 클라이언트 요청들에 대해 정보를 유지하지 않는다.
  • 기본적으로 지속 연결을 사용한다.

웹 페이지

  • 웹 페이지는 객체들로 구성된다.
    • 객체는 HTML 파일, JPEG 이미지, 자바 애플릿, 오디오 파일 등이 될 수 있다.

2.2.2 비지속 연결과 지속 연결

비지속 연결 HTTP(non-persistent HTTP)

  • 최대 1개의 객체가 TCP 연결을 통해 전송된다.
    • 그 다음에 연결은 종료된다.
    • 그러므로 여러개의 객체들을 다운로드하려면 여러개의 연결이 필요하다.

지속 연결(persistent HTTP)

  • 클라이언트와 서버 사이의 단일 TCP 연결을 통해 여러개의 객체들을 전송될 수 있다.

2.2.3 HTTP 메세지 포맷

HTTP 응답 상태 코드

  • 200 OK
  • 301 Moved Permanently
  • 400 Bad Request
  • 404 Not Found
  • 505 HTTP Version Not Supported

 

2.3 인터넷 전자메일

전자메일의 3가지 주요 구성요소

  1. User agents(mail reader)
    • 메일 메세지를 작성하거나 수정하거나 읽거나 한다.
  2. Mail servers
    • 사용자를 위한 수신 메세지를 포함하는 메일박스가 있다.
    • 보내질 메일 메세지를 위한 메세지 큐가 있다.
    • 이메일 메세지를 보내기 위해 메일 서버 사이에서 SMTP 프로토콜을 사용한다.
  3. SMTP : Simple Mail Transfer Protocol
    • 클라이언트 : 상대 메일 서버로 메일을 보낼 때 SMTP 클라이언트로 동작한다.
    • 서버 : 상대 메일 서버로부터 메일을 받을 때 SMTP 서버로 동작한다.

2.3.1 SMTP

  • 클라이언트에서 서버의 25 PORT 번호로 신뢰할 수 있는 메일 메세지를 전송하기 위해서 TCP를 사용한다. 
  • 3단계로 이루어진다.
    1. Handshaking
    2. 메세지의 전송
    3. 폐쇄
  • 명령/응답 상호작용이다.
    • 명령(command) : 아스키 텍스트
    • 응답(response) : 상태 코드와 문구
  • 메세지는 7비트 아스키여야 한다.

 

2.3.4 메일 접속 프로토콜

  • 메일 서버로부터 메일을 꺼내오는 프로토콜이다.
  • POP(Post Office Protocol) : 110 PORT 번호를 사용한다.
    • 3단계로 이루어진다.
      • 인증(authorization phase)
      • 트랜젝션(transaction phase)
      • 갱신
  • IMAP(Internet Mail Access Protocol)
  • HTTP

 

2.4 DNS(Domain Name Service) - 인터넷의 디렉토리 서비스

2.4.1 DNS가 제공하는 서비스

  • 호스트 네임을 IP 주소로 변환해주는 서비스이다. (name resolution)
  • 호스트 엘리어싱 서비스 : 복잡한 호스트 네임(정식 호스트 네임)을 가진 호스트는 하나 이상의 별명(별칭 호스트 네임)을 가질 수 있도록 한다.
  • 메일 서버 엘리어싱 : 별칭 호스트 네임에 대한 정식 호스트 네임을 얻어올 수 있다.
  • 로드 분산 : 여러 중복 서버 사이의 부하를 분산하기 위해서 사용한다.

DNS

  • 다양한 네임 버서의 계층 구조로 구현된 분산된 데이터베이스이다.
  • 호스트와 네임 서버가 이름을 알기위해 통신하는 애플리케이션 계층 프로토콜이다.

 

2.4.2 DNS 동작 원리 개요

분산 계층 데이터베이스

  • 확장성 문제를 다루기 위해 DNS는 많은 서버를 이용하고 이들을 계층 형태로 구성하며 전 세계에 분산시킨다.
  • 3가지 유형의 DNS 서버가 있다.
    • 루트(Root) DNS 서버
    • 최상위 레벨 도메인 네임(TLD, top-level domain) DNS 서버
    • 책임(Authoritative) DNS 서버
저작자표시 비영리 변경금지 (새창열림)
'Computer Science/Network' 카테고리의 다른 글
  • [Network] 컴퓨터 네트워크와 인터넷
SiwonHae
SiwonHae
프로그래밍을 공부하고 있는 학생입니다.
  • SiwonHae
    시원해의 블로그
    SiwonHae
  • 전체
    오늘
    어제
    • 전체보기 (149)
      • PS(Problem Solving) (94)
        • C (25)
        • C++ (33)
        • JAVA (36)
      • Algorithm & Data Structure (13)
      • Computer Science (12)
        • Network (2)
        • Design Pattern (10)
      • Back-end (6)
        • Spring (5)
      • Front-end (1)
        • React (1)
      • JAVA (4)
      • 정보처리기사 (17)
      • SQLD (2)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
  • 인기 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
SiwonHae
[Network] 애플리케이션 계층
상단으로

티스토리툴바