** 컴퓨터 네트워크 수업 내용 정리입니다.
** 컴퓨터 네트워크 - A Top-Down Approach (Behrouz A. Forouzan) 교재 내용을 참고하였습니다.


1. 개요

1) 서비스 제공

  • 표준 응용 계층 프토로콜: 인터넷 관리기관들에 의해 표준화와 문서화가 된 응용 계층 프로토콜
  • 비표준 응용 계층 프로토콜: 프로그래머가 전송 계층과 상호작용하여 사용자에게 서비스를 제공하기위해 만드는 프로그램

2) 응용 계층 패러다임

  • 전통적인 패러다임: 클라이언트 - 서버
  • 새 패러다임: 대등-대-대등
  • 혼재된 패러다임


2. 클라이언트-서버 패러다임

1) 응용프로그래밍 인터페이스(API)

  • 소켓: 응용프로그램에 의해 생성되고 사용되는 데이터 구조

  • 소켓 주소: 통신을 위해 사용되는 주소

  • 소켓 주소 탐색

    • 서버 부분

      • 지역 소켓 주소: 포트번호 (표준일 경우 이미 할당됨)

      • 원격 소켓 주소: 요청 패킷 속에 포함된 클라이언트 소켓 주소

    • 클라이언트 부분

      • 지역 소켓 주소: 일시적 포트번호

      • 원격 소켓 주소: URL, 이메일 주소

2) 전송 계층의 서비스 사용

  • UDP 프로토콜: 무접속, 비신뢰성, 데이터그램 서비스 제공
  • TCP 프로토콜: 연결지향적이고 신뢰성 있는 비트-스트림 서비스 제공
  • SCTP 프로토콜: 서로 다른 두 프로토콜을 결합하는 서비스 제공


3. 표준 클라이언트-서버 응용매체

1) 월드와이드 웹과 HTTP

  • 월드와이드 웹

    • 구조

      • 웹 클라이언트(브라우저): 제어기, 클라이언트 프로토콜 및 해석기로 구성
      • 웹 서버: 웹페이지는 서버에 저장되고 클라이언트의 요청이 도착할 때마다 전송
    • 단일 자원 위치기

      • 프로토콜(Protocol): HTTP, FTP가 일반적

      • 호스트(Host): IP, 도메인 네임

      • 포트(Port): 16비트 정수. (잘 알려진 포트:80)

      • 경로(Path): 파일의 위치와 이름을 식별

    • 웹 문서

      • 정적 문서(static documents)

      • 동적 문서(dynamic document)

      • 액티브 문서(active document)

  • 하이퍼텍스트 전송 프로토콜(HTTP, Hypertext Transfer Protocol)

    • 영속적 연결과 비영속적 연결

      • 비영속적 연결(nonpersistent connection): 각 응답마다 연결의 시작과 종료 발생. N번의 응답을 위해 연결 시작과 종료가 N+1번 발생

      • 영속적 연결(persistent connection): 응답을 전송한 후 차후의 요청을 위해 연결을 열어놓은 상태로 유지, 클라이언트의 요청이나 타임아웃이되면 연결을 종료.

    • 메시지 형식

      • 요청 메시지: Requestline, Header, Blank, Body

      • 응답 메시지: Status, Header, Blank, Body

    • 조건부 요청

    • 쿠키

      • 쿠키의 생성과 저장: 서버가 클라이언트에 관한 정보를 저장하고 클아이언트에게 보내는 응답에 쿠키를 포함. 클라이언트가 응답을 받으면 브라우저가 쿠키 디렉터리에 저장

      • 쿠키 사용: 서버에게 요청을 보낼 때 서버가 보낸 쿠키를 찾아 요청에 포함

  • 웹 캐싱: 프록시 서버

    • 최신 요청에 대한 응답의 복사본을 갖고 있는 컴퓨터
    • 프록시 서버 위치: 일반적으로 클라리언트 사이트에 위치

2) 파일 전송 프로토콜(FTP, File Transfer Protocol)

  • 두 연결의 라이프타임

    • 제어 연결: 전체 상호작용적인 FTP 세션동안 연결상태 유지
    • 데이터 연결: 전송되는 각 파일마다 열리고 닫힘
  • 제어 연결

    • 명령과 응답을 통하여 통신이 이루어짐
  • 데이터 연결

    • 데이터 구조: 파일 구조(구조X), 레코드 구조(레코드로 분할), 페이지 구조(페이지들로 분할) 중 하나를 사용

    • 파일 종류: ASCII, EBCDIC, 이미지

    • 전송 모드: 스트림모드(기본), 블록모드(데이터 블록), 압축모드

    • 파일전송: 파일받기(서버→클라이언트), 파일저장(클라이언트→서버), 디렉토리나열(서버→클라이언트)

3) 전자우편(Electronic Mail)

  • 구조: 두개의 UA와 두 쌍의 MTA(클라이언트와 서버), 한쌍의 MAA(클라이언트와 서버)가 필요

  • 사용자 에이전트(UA)

    • 전자우편 송신: 봉투(송신자 주소, 수신자 주소), 메시지(헤더, 본문)로 이루어진 전자우편 생성

    • 전자우편 수신: UA나 사용자 또는 타이머에 의해 기동

    • 주소: @기호에 의해 분리된 로컬 부분과 도메인 이픔 부분으로 구성

    • 주소 목록 혹은 그룹 목록

  • 메시지 전송 에이전트: SMTP(Simple Mail Transfer Protocol) - push프로토콜

    • 명령(MTA클라이언트→MTA서버) 응답(MTA서버→MTA클라이언트)

    • 전자우편 전송 단계

      • 연결 설정

      • 메시지 전송

  • 메시지 액세스 에이전트: POP과 IMAP -full프로토콜

    • POP3: 삭제(읽고난 후 편지함에서 삭제), 유지(읽고난 후 편지함에서 유지)
    • IMAP4: POP3보다 더 많은 기능 제공
  • MIME(Multipurpose Internet Mail Extensions)

    • 전자우편을 통하여 ASCII가 아닌 데이터가 송신될 수 있도록 허용하는 부가적인 프로토콜
    • MIME 헤더: 버전, 내용 유형(Content-Type), 내용 전달 인코딩(Content-Transfer-Encoding), 내용 Id, 내용 기술(Content-Description)
  • 웹기반 전자우편

  • 전자우편 보안

4) TELNET

  • 로컬 로그인과 원격 로그인
  • 네트워크 가상터미널(NVT)
  • 옵션: 클라이언트와 서버가 서비스를 사용하기 전이나 사용중에 옵션을 협상
  • 사용자 인터페이스

5) SSH

  • 컴포넌트
    • SSH 전송 계층 프로토콜(SSH-TRANS): TCP 프로토콜로 연결을 맺고 보안 변수 교환
    • SSH 인증 프로토콜(SSH-AUTH): 서버에 대해 클라이언트를 인증하는 소프트웨어 호출
    • SSH 연결 프로토콜(SSH-CONN): 다중화 수행
    • 원격 로그인을 위한 SSH: 예시) PuTTY
    • 파일 전송을 위한 SSH: 예시) SFTP, SCP
  • 포트 전달: 보안 서비스를 제공하지 않는 응용프로그램을 접속하기위해 SSH에서 이용가능한 안전한 채널 사용 가능
  • SSH 패킷의 형식: Length, Padding, Type, Data, CRC(cyclic redundancy check)

6) DNS(Domain Name System)

  • 네임 공간

    • 도메인 네임 공간

      • 레이블: 트리의 각 노드가 가지는 문자 스트링 (최대 63개)

      • 도메인 네임: 점으로 구분되는 레이블의 연속. 노드→루트

    • 도메인: 도메인 네임 공간의 서브트리

    • 네임 공간의 분포: DNS 서버라는 많은 컴퓨터에 분산

    • 영역: 서버가 책임을 지거나 권한을 가지는 곳

    • 루트 서버: 전체 트리로 구성된 영역을 가지는 서버

  • 인터넷에서 사용되는 DNS

    • 일반 도메인: com, biz, edu, info 등
    • 국가 도메인: us, fr, kr 등
  • 해석

    • 귀환적 해석: 서버들이 주소를 찾을때까지 물어보고 이전 서버에게 주소를 반환해주는 방식
    • 반복적 해석: 하나의 서버가 다른 서버들에게 주소를 물어보는 방식
  • 자원 레코드(Resource Record): 서버와 관련된 영역 정보를 자원 레코드셋으로 구현

  • DNS 메시지(DNS messages): 식별 필드, 플래그필드, 질문 영역, 회답 영역, 권한 영역, 추가 정보 영역

  • 캡슐화: 응답 메시지의 크기가 512바이트 이상일 때, 이를 미리 알고 있다면 TCP연결, 아니라면 UDP 연결 뒤 TCP연결로 512바이트 이후 부분 응답 요청

  • 레지스트라: 도메인 추가 개체

  • DDNS(Dynamic Domain Name System): DNS 주 파일의 자동 갱신

  • DNS의 보안: DNSSEC(DNS Security 송신자인증, 디지털 서명)


4.대등-대-대등 실례

1) 대등-대-대등 네트워크

  • 중앙집중형 네트워크 (Centralized Networks)

    • 디렉토리 시스템은 클라이언트 서버 개념, 파일의 저장과 다운로딩은 대등-대-대등 개념
  • 분산형 네트워크 (Decentralized Networks)

    • 비구조적 네트워크: 네트워크 내의 노드들이 도착지 주소를 주변에 물어보며 출발지에 도착지 주소를 전달
    • 구조적 네트워크: 네트워크 질의가 효과적이고 효율적으로 처리될 수 있도록 DHT(분산 해시 테이블) 등의 툴을 사용

2) 분산 해시 테이블

  • 주소 공간: 2^m 크기의 주소 중 하나의 포인트에 맵핑
  • 해싱 대등 식별자: 모든 대등들을 주소 공간의 링에 두고 해시함수를 통해 대등 식별자를 m-bit 정수(=노드ID)로 해시
  • 해싱 객체 식별자: 공유되는 객체는 같은 주소 공간에서 하나의 m-bit 정수로 해시하여 키 생성
  • 객체 저장: 객체를 소유하는 대등은 객체에의 참조는 키포인트에 가까운 ID를 가진 노드에서 만들어지고 저장
  • 라우팅: DHT에서 각 노드는 하나의 질의를 대응하는 노드와 closest 노드에 라우팅하기 위해 링에 대한 부분적 지식을 가짐
  • 노드들의 출현과 이탈: 대부분의 DHT 수행은 노드의 실패를 이탈로 간주
  • DHT 프로토콜: Chord, pastry, Kademlia

3) Chord

  • 식별자 공간: 시계방향으로 원을 2^m 포인트로 균일하게 분산
  • 핑거 테이블: 각 노드가 N+2^(i-1)의 타겟 키를 가짐
  • 인터페이스
    • 검색: https://ddongwon.tistory.com/76
    • 안정화: 노드는 주기적으로 상속자에 대한 정보 확인
    • Fix_Finger: 핑거테이블의 업데이트 유지
    • Join: 대등이 링에 합류할 때 사용
    • 이탈 또는 실패: 노드가 핑 메시지 응답을 퐁 메시지에서 받지 못할 때 이웃노드가 죽은것으로 처리

4) 패스트리

  • 식별자 공간: 시계방향으로 원을 2^m 포인트로 균일하게 분산, 2^b기반(32자리 16진수)

  • 라우팅

    • 라우팅 테이블: 행은 식별자 각각의 digit을 가짐
    • 리프 집합: 라우팅에서 또 다른 개체인 2^b식별자들

5) Kademila

  • 식별자 공간: 이진트리의 잎에 분배된 2^m의 식별자 공간
  • 라우팅 테이블: 한 라우팅 테이블 유지

댓글남기기