컴퓨터 네트워크 2장 응용 계층
** 컴퓨터 네트워크 수업 내용 정리입니다.
** 컴퓨터 네트워크 - 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의 식별자 공간
- 라우팅 테이블: 한 라우팅 테이블 유지
댓글남기기