2장. 애플리케이션계층 (ApplicationLayer)(Application...

61

Click here to load reader

Transcript of 2장. 애플리케이션계층 (ApplicationLayer)(Application...

Page 1: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

2장. 애플리케이션 계층(Application Layer)(Application Layer)

순천향대학교 컴퓨터공학과

이 상 정

순천향대학교 컴퓨터공학과 1

컴퓨터 네트워크

2장. 애플리케이션 계층2장. 애플리케이션 계층

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

2.2 웹과 HTTP

2 3 파일 전송: FTP2.3 파일 전송: FTP

2.4 인터넷 전자메일• SMTP POP3 IMAP• SMTP, POP3, IMAP

2.5 DNS-인터넷 디렉터리서비스

2 6 P2P 애플리케이션2.6 P2P 애플리케이션

2.7 TCP/UDP 소켓 프로그래밍

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 2

Page 2: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

강의 목표강의 목표

네트워크 애플리케이션의 개념과 구현 측면 학습 네트워크 애플리케이션의 개념과 구현 측면 학습• 애플리케이션 계층 프로토콜

• 클라이언트와 서버, P2P,

• 트랜스포트 계층 서비스 모델

주요 애플리케이션 프로토콜 계층 학습• HTTP

FTP• FTP

• SMTP / POP3 / IMAP

• DNSDNS

네트워크 애플리케이션 프로그래밍• 소켓 API

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 3

컴퓨터 네트워크

2장. 애플리케이션 계층2장. 애플리케이션 계층

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

2 2 웹과 HTTP2.2 웹과 HTTP

2.3 파일 전송: FTP

2 4 인터넷 전자메일2.4 인터넷 전자메일• SMTP, POP3, IMAP

2 5 DNS-인터넷 디렉터리서비스2.5 DNS 인터넷 디렉터리서비스

2.6 P2P 애플리케이션

2 7 TCP/UDP 소켓 프로그래밍2.7 TCP/UDP 소켓 프로그래밍

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 4

Page 3: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

네트워크 애플리케이션 예네트워크 애플리케이션 예

e-메일 (e-mail)

웹 (web)

인턴스트 메시징 (instant messaging)

원격 로그인 (remote login)

P2P 파일 공유 (P2P file sharing)( g)

다중 사용자 네트워크 게임 (multi-user network games)

스트리밍 저장 비디오 클립 (streaming stored video clips)리밍 저장 비디 클립 ( g p )

VoIP (Voice over IP)

실시간 화상 회의 (real-time video conferencing) 실시간 화상 회의 (real time video conferencing)

소셜 네트워킹 (social networking)

검색 (search)

2. 애플리케이션 계층

검색 (search)

……………순천향대학교 컴퓨터공학과 5

컴퓨터 네트워크

네트워크 애플리케이션 개발네트워크 애플리케이션 개발

애플리케이션 프로그램 애플리케이션 프로그램• 서로 다른 종단 시스템(end system)

에서 동작

• 네트워크 상에서 통신

• 예: 웹 서버 프로그램과 통신하는웹 브라우저 프로그램웹 브라우저 프로그램

네트워크 코어 장비에서 실행되는 네트워크 코어 장비에서 실행되는소프트웨어를 개발할 필요 없음• 네트워크 코어 장비는 사용자 애플리

케이션 실행하지 않음

• 따라서 종단 시스템의 애플리케이션을 빠르게 개발하고 전파가 가능

2. 애플리케이션 계층

을 빠르게 개발하고 전파가 가능

순천향대학교 컴퓨터공학과 6

Page 4: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

2장. 애플리케이션 계층2장. 애플리케이션 계층

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

2 2 웹과 HTTP2.2 웹과 HTTP

2.3 파일 전송: FTP

2 4 인터넷 전자메일2.4 인터넷 전자메일• SMTP, POP3, IMAP

2 5 DNS-인터넷 디렉터리서비스2.5 DNS 인터넷 디렉터리서비스

2.6 P2P 애플리케이션

2 7 TCP/UDP 소켓 프로그래밍2.7 TCP/UDP 소켓 프로그래밍

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 7

컴퓨터 네트워크

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

애플리케이션 구조 (application architecture) 애플리케이션 구조 (application architecture)• 개발자가 설계하는 애플리케이션이 다양한 종단 시스템에서 어떻게

조직되어야 하는지를 지시

클라이언트/서버 구조 (client-server architecture)

P2P 구조 (Peer-to-Peer architecture)

클라이언트/서버와 P2P의 혼합 (hybrid)

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 8

Page 5: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

클라이언트/서버 구조클라이언트/서버 구조

서버 (server) 서버 (server)• 항상 켜져 있는 호스트

• 서비스 제공

• 고정 IP 주소

• 데이터 센터로 확장

클라이언트 (client)• 서버와 통신• 서버와 통신

• 서비스 요청

• 클라이언트들 간 직접 통신하지 않음

• 유동 IP 가질 수 있음

• 항상 연결되어 있지 않고 간헐적으로통신할 수 있음

2. 애플리케이션 계층

통신할 수 있음

순천향대학교 컴퓨터공학과 9

컴퓨터 네트워크

P2P 구조P2P 구조

항상 켜져 있는 서버 없음 항상 켜져 있는 서버 없음

임의의 종단 시스템과 직접 통신

각 피어(peer)들이 각각 서비스를 각 피어(peer)들이 각각 서비스를요청하고 제공• 높은 자기 확장성(self-scalability)높은 자기 확장성(self scalability)

• 새 피어가 새로운 서비스를 제공하고,새 서비스를 요청

( ) 피어(peer)는 간헐적으로연결되고 IP 주소를 변경

관리가 어려움• 관리가 어려움

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 10

Page 6: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

프로세스 간 통신(P C i ti )(Processes Communicating)

프로세스(process)는 호스트에서 실행 중인 프로그램 프로세스(process)는 호스트에서 실행 중인 프로그램• 호스트 내에서 두 프로세스는 OS에서 정의한 IPC(inter-process

communication)로 통신

• 다른 호스트 간의 프로세스들은 메시지(message)를 교환하여 통신

클라이언트(client)와 서버(server) 프로세스• 클라이언트는 두 프로세스 간의 통신 세션을 초기화(접속을 초기화)

하는 프로세스

• 서버는 세션을 시작하기 위해 접속을 기다리는 프로세스서버는 세션을 시작하기 위해 접속을 기다리는 프로세스

• 웹 예

• 브라우저는 웹 서버 프로세스와 접속을 초기화

• 브라우저는 클라이언트 프로세스, 웹 서버는 서버 프로세스

• P2P 구조의 애플리케이션들은 클라이언트 프로세스와 서버 프로세스를 가짐

2. 애플리케이션 계층

스를 가짐

순천향대학교 컴퓨터공학과 11

컴퓨터 네트워크

소켓 (Socket)소켓 (Socket)

프로세스는 소켓(socket)을 통해 네트워크로 메시지를 송수신 프로세스는 소켓(socket)을 통해 네트워크로 메시지를 송수신• 소켓은 호스트의 애플리케이션 계층과 트랜스포트 계층 간의

인터페이스

• 프로세스는 집(house), 소켓은 출입구(door)에 비유

• 송신 프로세스는 출입구(소켓) 바깥 네트워크로 메시지를 밀어냄

• 소켓은 애플리케이션과 네트워크 사이의 API(Application• 소켓은 애플리케이션과 네트워크 사이의 API(Application Programming Interface)

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 12

Page 7: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

프로세스의 주소프로세스의 주소

호스트 상의 프로세스는 IP 주소와 포트 번호로 구분 호스트 상의 프로세스는 IP 주소와 포트 번호로 구분

포트 번호 예 포트 번호 예• HTTP 서버: 80

• 메일 서버: 25메일 서버 5

• 인터넷 표준 프로토콜에 대한 알려진(well-known) 포트번호 리스트는 www.iana.org 참조

HTTP 메시지를 gaia.cs.umass.edu 웹 서버에 전송IP 주소: 128 119 245 12• IP 주소: 128.119.245.12

• 포트 번호: 80

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 13

컴퓨터 네트워크

애플리케이션 계층 프로토콜애플리케이션 계층 프로토콜

애플리케이션 계층 프로토콜은 다음과 같은 내용을 정의• 교환되는 메시지의 타입

• 예: 요청 메시지, 응답 메시지

• 여러 메시지 타입의 문법(syntax)여러 메시지 타입의 문법(syntax)

• 예: 메시지 내부의 필드(field)와 필드 간의 구별 방법

• 메시지 의미 (message sematics)

• 필드에 있는 정보의 의미

• 언제, 어떻게 프로세스가 메시지를 전송하고 메시지에 응답하는지를결정하는 규칙결정하는 규칙

오픈 프로토콜 (open protocol)• RFC(Request For Comments)로 정의( q )

• 상호작용(interoperability) 허용

• 예: HTTP, SMTP

2. 애플리케이션 계층

독점적인 프로토콜 (proprietary protocol): Skype순천향대학교 컴퓨터공학과 14

Page 8: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

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

트랜스포트 계층이 애플리케이션에게 제공하는 서비스 트랜스포트 계층이 애플리케이션에게 제공하는 서비스• 신뢰적 데이터 전송 (reliable data transfer)

• 프로토콜이 데이터 손실(data loss) 없이 보장된 데이터 전송 서비스를제공하면 신뢰적 데이터 전송

• 신뢰적 데이터 전송을 제공하지 않는 손실 허용 애플리케이션(loss-tolerant application)

– 오디오/비디오를 전송하는 멀티미디어 애플리케이션

• 처리율 (throughput)

• 처리율은 두 프로세스 간의 통신 세션에서 비트를 전달할 수 있는 비율• 처리율은 두 프로세스 간의 통신 세션에서 비트를 전달할 수 있는 비율

• 대역폭 민감 애플리케이션(bandwidth-sensitive application)은 보장된처리율 서비스를 요구

멀티미디어 응용은 효과적인 서비스를 위해 요구되는 최소의 처리율 보장– 멀티미디어 응용은 효과적인 서비스를 위해 요구되는 최소의 처리율 보장

» 예: 인터넷 전화는 32kbps로 음성을 인코드/디코드

• 융통성 있는 애플리케이션(elastic application)은 처리율에 덜 민감

2. 애플리케이션 계층

– 전자메일, 파일 전송, 웹 전송

순천향대학교 컴퓨터공학과 15

컴퓨터 네트워크

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

• 시간 (time)시간 (time)

• 시간 보장 (timing guarantee)를 제공

– 특정 시간 내의 모든 비트의 전송을 보장

상호작용 실시간 애플리케이션들은 효율적인 서비스를 위해 엄격한 시간• 상호작용 실시간 애플리케이션들은 효율적인 서비스를 위해 엄격한 시간제한 조건을 요구

– 인터넷 전화, 원격회의, 다자간 게임

• 보안 (security)

• 애플리케이션에게 하나 이상의 보안 서비스를 제공

• 송신 프로세스의 데이터를 암호화하고, 데이터를 해독하여 수신 프로세스에게 전달

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 16

Page 9: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

애플리케이션들의트랜스포트 서비스 요구사항트랜스포트 서비스 요구사항

애플리케이션 데이터 손실 대역폭 시간 민감성

파일 전송 비손실 가변적 아니요

전자메일 비손실 가변적 아니요

웹 문서 비손실 가변적(수 kbps) 아니요

/실시간 오디오/비디오 손실 허용 오디오: 수 kbps~1Mbps비디오: 10kbps~5Mbps

네: 100msec

저장 오디오/비디오 손실 허용 오디오: 수 kbps~1Mbps 네: 수 초비디오: 10kbps~5Mbps

상호작용 게임 손실 허용 수 kbps ~ 10kbps 네: 100msec

인스턴트 메시징 비손실 가변적 네 그리고 아니오인스턴트 메시징 비손실 가변적 네 그리고 아니오

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 17

컴퓨터 네트워크

인터넷 트랜스포트 계층이제공하는 서비스 (1)제공하는 서비스 (1)

TCP (Transmission Control Protocol) 서비스 TCP (Transmission Control Protocol) 서비스• 연결지향형 서비스 (connection-oriented service)

• 클라이언트와 서버 프로세스들 간에 연결 설정

– 서로 간 전송 제어 정보 교환(handshaking)하고 송수신 준비

• 신뢰적인 데이터 전송

• 송수신 프로세스 간에 데이터의 손실 없이 올바른 순서로 전달• 송수신 프로세스 간에 데이터의 손실 없이 올바른 순서로 전달

• 흐름제어 (flow control)

• 송신 프로세스가 수신 프로세스의 데이터 수신 속도에 맞추어 송신

• 혼잡제어 (congestion control)

• 네트워크가 혼잡상태에 이르면 프로세스의 전송 속도를 낮춤

• 제공하지 않는 서비스• 제공하지 않는 서비스

• 시간 보장, 최소 처리율 보장, 보안

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 18

Page 10: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

인터넷 트랜스포트 계층이제공하는 서비스 (2)제공하는 서비스 (2)

UDP (User Datagram Protocol) 서비스 UDP (User Datagram Protocol) 서비스• 비연결형으로 두 프로세스가 통신 전에 정보 교환(handshaking)을

하지 않음

• 비신뢰적인 데이터 전송 서비스를 제공

• 흐름제어, 혼잡제어, 시간 보장, 처리율 보장, 보안 등의 서비스도 제공하지 않음공하지 않음

• 실시간 애플리케이션들이 전송속도를 위해 UDP 사용

• TCP 혼잡제어와 패킷 오버헤드 문제 회피

• 많은 방화벽들이 UDP 트래픽을 차단하도록 설정되어 점차적으로 TCP 상에서 멀티미디어와 실시간 애플리케이션을 수행하도록 선택

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 19

컴퓨터 네트워크

인터넷 애플리케이션의 트랜스포트 프로토콜인터넷 애플리케이션의 트랜스포트 프로토콜

애플리케이션 애플리케이션 프로토콜 트랜스포트 프로토콜

전자메일 SMTP [RFC 2821] TCP

원격 터미널 접속 T l t [RFC 854] TCP원격 터미널 접속 Telnet [RFC 854] TCP

웹 HTTP [RFC 2616] TCP

파일 전송 FTP [RFC 959] TCP파일 전송 FTP [RFC 959] TCP

스트리밍 멀티미디어 HTTP(예: YouTube), RTP UDP 혹은 TCP

인터넷 전화 SIP, RTP, 독점적인(예: Skype) 일반적으로 UDP

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 20

Page 11: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

2장. 애플리케이션 계층2장. 애플리케이션 계층

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

2.2 웹과 HTTP

2.3 파일 전송: FTP

2 4 인터넷 전자메일2.4 인터넷 전자메일• SMTP, POP3, IMAP

2 5 DNS-인터넷 디렉터리서비스2.5 DNS 인터넷 디렉터리서비스

2.6 P2P 애플리케이션

2 7 TCP/UDP소켓 프로그래밍2.7 TCP/UDP소켓 프로그래밍

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 21

컴퓨터 네트워크

웹과 HTTP웹과 HTTP

웹 페이지 (web page)는 객체(object)들로 구성 웹 페이지 (web page)는 객체(object)들로 구성

객체는 하나의 파일• HTML 파일 JPEG 이미지 자바 애플릿 오디오 파일 ……HTML 파일, JPEG 이미지, 자바 애플릿, 오디오 파일

웹 페이지는 기본 HTML 파일과 여러 참조 객체들로 구성

각 객체는 URL (Uniform Resource Locator)로 지정• URL은 객체를 가지고 있는 서버의 호스트 이름과 객체의 경로 이름URL은 객체를 가지고 있는 서버의 호스트 이름과 객체의 경로 이름

으로 구성

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 22

Page 12: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

HTTP 개요 (1)HTTP 개요 (1)

HTTP (HyperText Transfer Protocol)는 HTTP (HyperText Transfer Protocol)는웹의 애플리케이션 계층 프로토콜

클라이언트/서버 모델• 클라이언트는 웹 객체들을 요청하고클라이언 는 웹 객체들을 청하

받아서 디스플레이 하는 브라우저(browser)

• 서버 는 요청에 응답하여 객체들을• 서버 는 요청에 응답하여 객체들을보내는 웹 서버

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 23

컴퓨터 네트워크

HTTP 개요 (2)HTTP 개요 (2)

HTTP는 TCP 트랜스포트 프로토콜을 사용 HTTP는 TCP 트랜스포트 프로토콜을 사용• 클라이언트는 80번 포트로 서버에게 TCP 연결(소켓을 생성)을 시작

• 서버는 클라이언트의 TCP 연결 요청을 수락

• 브라우저(HTTP 클라이언트)와 웹 서버(HTTP 서버) 사이에 HTTP 메시지(애플리케이션 계층 프로토콜 메시지)를 교환

TCP 연결 종료• TCP 연결 종료

HTTP는 비상태 프로토콜(stateless protocol)• 서버는 클라이언트의 과거 요청들에 대한 정보를 유지하지 않음• 서버는 클라이언트의 과거 요청들에 대한 정보를 유지하지 않음

참고: 상태를 유지하는 프로토콜은 복잡 참고: 상태를 유지하는 프로토콜은 복잡• 과거의 기록들(상태)를 유지 관리해야 함

• 서버나 클라이언트 중 하나가 깨진 경우 각각의 상태는 불일치하게

2. 애플리케이션 계층

되어 조정이 필요

순천향대학교 컴퓨터공학과 24

Page 13: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

HTTP 연결 (HTTP Connections)HTTP 연결 (HTTP Connections)

HTTP 연결은 비지속 연결과 지속 연결 2가지 방식이 있음 HTTP 연결은 비지속 연결과 지속 연결 2가지 방식이 있음

비지속 연결 (nonpersistent connection) 비지속 연결 (nonpersistent connection)• 요구/응답 쌍이 분리된 TCP 연결을 통해 송수신

• 하나의 TCP 연결로 하나의 객체만 전송

지속 연결(persistent connection)• 모든 요구/응답 쌍이 같은 TCP 연결 상에서 송수신

• 다수의 객체들이 하나의 TCP 연결로 전송

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 25

컴퓨터 네트워크

비지속 연결 HTTP (1)비지속 연결 HTTP (1)

다음 URL를 접속하는 예• www.someSchool.edu/someDepartment/home.index

• 웹 페이지는 한 개의 기본 HTML 파일과 10개 JPEG 이미지로 구성

1a. HTTP 클라이언트는www.someSchool.edu 서버의 80번 포트로 TCP 연결을 시도 1b. 80번 포트로 TCP 연결을 기다리는

S h l d 호스트의결을 시

2 HTTP 클라이언트는 TCP 연결

www.someSchool.edu 호스트의HTTP 서버는 연결을 수락

2. HTTP 클라이언트는 TCP 연결소켓을 통해 HTTP 요청 메시지(request message)를 보냄.

요청 메시지에는 다음 경로 이름이 3. HTTP 서버는 요청 메시지를 받고,요청 메시지에는 다음 경로 이름이포함.someDepartment/home.index

3. HTTP 서버는 요청 메시지를 받고, 요청된 객체들이 포함된 응답 메시지(response message)를 생하고, 소켓을 통해 송신시간

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 26

,

Page 14: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

비지속 연결 HTTP (2)비지속 연결 HTTP (2)

서버 연결을

5. HTTP 클라이언트는 HTML 파일이 포함된 응답 메시지를 받아서

4. HTTP 서버는 TCP 연결을 종료

HTML을 디스플레이.HTML 파일을 파싱하여 10개의JPEG 객체에 대한 참조를 획득.

6. 10개의 JPEG 객체에 대해 1-5 단계를 반복

시간

단계를 반복

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 27

컴퓨터 네트워크

비지속 연결: 응답 시간 (Response Time)비지속 연결 응답 시간 (Response Time)

RTT (Round-Trip Time) RTT (Round Trip Time)• 클라이언트에서 송신된 작은 패킷이

서버까지 간 후 (그 응답이) 다시 클라이언트로 되돌아오는데 걸리는 시간

HTML 파일 요청 응답 시간 HTML 파일 요청 응답 시간(response time)• TCP 연결을 초기화 하는 1 RTT

• HTTP 요청을 하고 HTTP 응답으로처음 몇 바이트를 받는데 필요한 1 RTTRTT

• 파일 전송 시간

• 2 RTT + 파일 전송 시간

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 28

Page 15: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

지속 연결 HTTP지속 연결 HTTP

비지속 연결의 단점 비지속 연결의 단점• 각 객체 당 2 RTT 필요

• 각 TCP 연결에 대한 OS 오버헤드

• 브라우저는 참조 객체들을 가져오기 위해 종종 병렬 TCP 연결을 시도

지속 연결 HTTP (persistent connection HTTP)• 서버는 응답을 보낸 후에 TCP 연결을 그대로 유지

클라이언트/서버 간의 이 후 HTTP 메시지들은 같은 연결을 통해 송수• 클라이언트/서버 간의 이 후 HTTP 메시지들은 같은 연결을 통해 송수신

• 클라이언트는 객체를 참조하자마자 요청을 송신

• 모든 참조 객체들에 대해 1 RTT 만 필요

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 29

컴퓨터 네트워크

HTTP 요청 메시지 (HTTP Request Message)HTTP 요청 메시지 (HTTP Request Message)

두 유형의 HTTP 메시지: 요청(request) 응답(response) 두 유형의 HTTP 메시지: 요청(request), 응답(response)

HTTP 요청 메시지• ASCII 텍스트ASCII 텍스트

요청 라인(request line)(GET, POST, ( , ,HEAD commands)

헤더 라인헤더 라인(header lines)

CR(Carriage Return), LF(Line Feed )

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 30

LF(Line Feed )메시지의 끝을 표시

Page 16: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

HTTP 요청 메시지: 일반 포맷HTTP 요청 메시지 일반 포맷

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 31

컴퓨터 네트워크

폼 입력 (Form Input)폼 입력 (Form Input)

웹 페이지는 폼 입력을 포함 웹 페이지는 폼 입력을 포함• 사용자가 브라우저의 폼 필드(form field)에 입력하여 서버에 전달

POST 방식 (POST method)• 입력은 개체 몸체(entity body)로 서버에 업로드

URL 방식• GET 방식(method) 사용

• 입력은 요청 라인의 URL 필드로 서버에 업로드

www.somesite.com/animalsearch?monkeys&banana

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 32

Page 17: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

방식 유형 (Method Type)방식 유형 (Method Type)

HTTP/1 0 HTTP/1.0• GET

• POST

• HEAD

• GET 방식과 유사하나 서버가 응답 시 요청된 객체는 보내지 않음

HTTP/1.1• GET POST HEAD• GET, POST, HEAD

• PUT

• URL 필드에 명시된 경로로 개체 몸체 안의 파일을 업로드

• DELETE

• URL 필드에 명시된 파일을 삭제

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 33

컴퓨터 네트워크

HTTP 응답 메시지(HTTP R M )(HTTP Response Message)

상태 라인(status line)( )프로토콜(protocol)

상태 코드(status code)상태 문장(status phrase)

헤더 라인(header lines)

데이타, e.g., 요청된 HTML file

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 34

요청된 HTML file

Page 18: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

HTTP 응답 상태 코드(HTTP R St t C d )(HTTP Response Status Code)

응답 메시지의 상태 라인에서 표시 응답 메시지의 상태 라인에서 표시

일반적인 상태 코드• 200 OK200 OK

• 요청이 성공되었고, 요청된 객체가 이 메시지로 보내짐

• 301 Moved Permanently

• 요청된 객체가 이동되었고, 새로운 위치는 메시지의 “Location:” 헤더로표시

• 400 Bad Request400 ad Request

• 서버가 요청을 이해할 수 없다는 일반 오류 코드

• 404 Not Found

요청된 문서가 서버에 재하지 않음• 요청된 문서가 서버에 존재하지 않음

• 505 HTTP Version Not Supported

• 요청된 HTTP 프로토콜 버전을 서버가 지원하지 않음

2. 애플리케이션 계층

요청된 HTTP 프로토콜 버전을 서버가 지원하지 않음

순천향대학교 컴퓨터공학과 35

컴퓨터 네트워크

HTTP 응답 메시지 확인HTTP 응답 메시지 확인

1. 웹 서버에 텔넷으로 접속:1. 웹 서버에 텔넷 접속

cis.poly.edu 호스트의 80번 포트로 TCP 연결설정

telnet cis.poly.edu 80설정(이 후 입력된 문자는 cis.poly.edu 호스트의80번 포트로 전송)

2. GET HTTP 요청 입력:

/ / /1 1 마지막 줄 입력 후 엔터를 두 번 입력GET /~ross/ HTTP/1.1Host: cis.poly.edu

마지막 줄 입력 후 엔터를 두 번 입력( HTTP 서버에 GET 요청을 전송)

3. HTTP 서버에서 보낸 응답 메시지를 확인

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 36

Page 19: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

실습 과제 2-1:HTTP 텔넷 접속 메시지 확인HTTP, 텔넷 접속 메시지 확인

특정 웹 서버에 텔넷으로 접속하여 GET HTTP 요청을 입력 특정 웹 서버에 텔넷으로 접속하여 GET HTTP 요청을 입력한 후 응답 메시지를 확인• 방문하는 웹 사이트는 다른 사람과 중복되지 않도록 권장

텔넷 (Telnet) 사용 힌트• 리눅스에서 실행 권장 (VirtualBox 가상머신)

• 윈도우에서 telnet 사용

• 제어판 프로그램 및 기능• 제어판, 프로그램 및 기능

– Windows 기능 사용/ 사용 안함

» Telnet Client 기능 추가

• 콘솔 창에서 실행 시 메시지 출력 깨짐• 콘솔 창에서 실행 시 메시지 출력 깨짐

– 다른 통신 프로그램 실행 대안

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 37

컴퓨터 네트워크

사용자와 서버 간의 상호작용: 쿠기 (C ki ) (1)쿠기 (Cookie) (1)

대부분의 상용 웹 사이트들이 쿠키(cookie)를 사용하여 사용 대부분의 상용 웹 사이트들이 쿠키(cookie)를 사용하여 사용자 상태를 추적하고 유지• 쿠키는 4가지 요소로 구성

• HTTP 응답 메시지의 쿠키 헤더 라인

• HTTP 요청 메시지의 쿠키 헤더 라인

사용자 호스트에 저장되어 브라우저에 의해 관리되는 쿠키 파일• 사용자 호스트에 저장되어 브라우저에 의해 관리되는 쿠키 파일

• 웹 사이트의 백엔드(back-end) 데이터베이스

• 예

• 수전은 항상 PC로 인터넷을 접속

• 처음 특정 전자상거래 사이트 방문처음 특정 전자상거래 사이트 방문

• 사이트에 첫 HTTP 요청이 들어올 때 서버는 다음을 생성

– 유일한 식별번호 (unique ID)

식별번호로 인덱스되는 백엔드 데이터베이스 안의 엔트리

2. 애플리케이션 계층

– 식별번호로 인덱스되는 백엔드 데이터베이스 안의 엔트리

순천향대학교 컴퓨터공학과 38

Page 20: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

사용자와 서버 간의 상호작용: 쿠기 (C ki ) (2)쿠기 (Cookie) (2)

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 39

컴퓨터 네트워크

쿠키 (Cookie)쿠키 (Cookie)

쿠키의 활용 쿠키의 활용• 사용자 식별 확인

• 쇼핑 카트

• 제품 추천

• 사용자 세션 상태 (웹 e-메일)

상태 보존• 일반 프로토콜 종단은 송신자/수신자 사이의 다 수의 전송들 간에 상

태 유지태 유지

• 쿠키는 http 메시지가 상태를 전송

쿠키와 사용자 사생활 침해• 쿠키와 사용자 계정정보(이름, 메일주소 등)와 결합

2. 애플리케이션 계층

• 사용자의 많은 정보가 노출

순천향대학교 컴퓨터공학과 40

Page 21: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

웹 캐시 (Web Cache) (1)웹 캐시 (Web Cache) (1)

웹 캐시(web cache)는 원래 웹 서버를 대신하여 HTTP 요구 웹 캐시(web cache)는 원래 웹 서버를 대신하여 HTTP 요구를 충족 시켜주는 네트워크 개체• 프록시 서버 (proxy server) 라고도 함(p y )

브라우저는 웹 캐시와 연 브라우저는 웹 캐시와 연결을 설정하고 웹 캐시에HTTP 요청 전송HTTP 요청 전송• 웹 캐시에 객체가 있으면

객체를 전송

• 없으면 웹 캐시가 기점 서버에 객체를 요청하여 가져와서 클라이언트에 전

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 41

컴퓨터 네트워크

웹 캐시 (Web Cache) (2)웹 캐시 (Web Cache) (2)

웹 캐시는 클라이언트와 서버로 동작 웹 캐시는 클라이언트와 서버로 동작

일반적으로 웹 캐시는 ISP (대학, 회사, 인터넷 업체)에 의해설치설치

웹 캐싱(web caching) 이점 웹 캐싱(web caching) 이점• 클라이언트의 요청에 대한 응답 시간을 줄일 수 있음

• 인터넷으로의 기관 접속 회선 상의 웹 트래픽(web traffic)을 줄일 수있음

• 웹 캐시를 갖는 고밀도 인터넷(기관,지역,국가)

• 콘텐츠가 제공자가 저속도의 접속 회선을 가진 느린 서버에서 사이트를• 콘텐츠가 제공자가 저속도의 접속 회선을 가진 느린 서버에서 사이트를운영하더라도 빠른 콘텐츠 분배를 위한 기반 구조 제공

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 42

Page 22: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

웹 캐시 예웹 캐시 예

가정

평균 객체 크기 1 M 비트• 평균 객체 크기: 1 M 비트

• 브라우저에서 서버로 평균 요청 비율:15 요청/초

접속회선: 15 Mbps• 접속회선: 15 Mbps

• 기관 라우터에서 서버까지 요청을 전달하고 응답을 받는 평균 소요 시간(RTT): 2초

성능 성능

• LAN 이용율(15 요청/초 x 1 M 비트 ) / 100 Mbps = 0.15, 15%15%

• 접속 회선(access link) 이용율(15 요청/초 x 1 M 비트 ) / 15 Mbps = 1, 100% 문제 발생!!!

• 전체 지연인터넷 지연 + 접속 회선 지연 + LAN 지연= 2초 + 수 분(minutes) + 마이크로초 (usec.)

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 43

컴퓨터 네트워크

웹 캐시 예 - 더 빠른 접속 회선웹 캐시 예 더 빠른 접속 회선

가정

평균 객체 크기 1 M 비트• 평균 객체 크기: 1 M 비트

• 브라우저에서 서버로 평균 요청 비율:15 요청/초

접속회선: 15 Mbps 150 Mbps

접속 회선의 전송률 증가 시 큰 비용 필요 !!

• 접속회선: 15 Mbps 150 Mbps

• 기관 라우터에서 서버까지 요청을 전달하고 응답을 받는 평균 소요 시간(RTT): 2초

성능 성능

• LAN 이용율(15 요청/초 x 1 M 비트 ) / 100 Mbps = 0.15, 15%15%

• 접속 회선(access link) 이용율(15 요청/초 x 1 M 비트 ) / 15 Mbps = 0.1, 100% 10% 150 Mbps

• 전체 지연인터넷 지연 + 접속 회선 지연 + LAN 지연= 2초 + 수 분(minutes) + + 마이크로초 (usec.)

2. 애플리케이션 계층

msec.

순천향대학교 컴퓨터공학과 44

Page 23: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

웹 캐시 예 – 캐시 추가웹 캐시 예 캐시 추가

기관 웹 캐시 설치 기관 웹 캐시 설치

• 요청의 40%는 히트라고 가정

이용율(utilization)과 지연

• 요청의 60%만 접속 회선을 이용하므로회선 이용율도 60%

• 80% 미만의 이용율의 경우 접속회선 지연은 수십 밀리초 소요(10ms 라 가정)

• 전체 지연인터넷 지연 + 접속 회선 지연 + LAN 지연= 0.6 x (2초+0.01초) +

( )0.4 x 마이크로 초 (usec.) = ~ 1.2 초

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 45

컴퓨터 네트워크

조건부 GET (Conditional GET)조건부 GET (Conditional GET)

조건부 GET은 웹 캐시의 객체들인 최신 버전이면 서버가 객체를 보내지 않음가 객체를 보내지 않음

• 캐시는 HTTP 요청에 캐시된캐시는 HTTP 요청에 캐시된복사본의 시간을 명시If-modified-since: <date><date>

• 서버는 캐시된 복사본이 최신의 것이면 객체가 생략된 응답을 전송HTTP/1.0 304 Not Modified

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 46

Page 24: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

실습 과제 2-2: HTTP, Wireshark 실습실습 과제 2 2 HTTP, Wireshark 실습

Wireshark를 다운로드 받아 설치 Wireshark를 다운로드 받아 설치

브라우저를 통해 특정 웹 사이트를 방문한 후 Wireshark를 브라우저를 통해 특정 웹 사이트를 방문한 후 Wireshark를실행하여 HTTP 패킷을 캡처하고 분석• 방문하는 웹 사이트는 다른 사람과 중복되지 않도록 권장방문하는 웹 사이 는 다른 사람과 중복되지 않 록 권장

“디스플레이 필터”에 http 입력하여 http 메시지만 디스플레이

캡처된 내용을 분석• 방식(method), 헤더 내용 등

• 상태코드, HTML 파일 등

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 47

컴퓨터 네트워크

2장. 애플리케이션 계층2장. 애플리케이션 계층

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

2.2 웹과 HTTP

2 3 파일 전송: FTP2.3 파일 전송: FTP

2 4 인터넷 전자메일2.4 인터넷 전자메일• SMTP, POP3, IMAP

2 5 DNS-인터넷 디렉터리서비스2.5 DNS 인터넷 디렉터리서비스

2.6 P2P 애플리케이션

2 7 TCP/UDP 소켓 프로그래밍2.7 TCP/UDP 소켓 프로그래밍

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 48

Page 25: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

FTP (File Transfer Protocol)FTP (File Transfer Protocol)

FTP는 원격 호스트와 파일을 송수신하는 프로토콜 FTP는 원격 호스트와 파일을 송수신하는 프로토콜• RFC 959

클라이언트/서버 모델 클라이언트/서버 모델• 클라이언트는 전송을 시작하는 측

• 서버는 원격 호스트 (remote host)

• 21번 포트

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 49

컴퓨터 네트워크

FTP: 제어 연결, 데이터 연결FTP 제어 연결, 데이터 연결

FTP는 제어 연결과 데이터 연결 두 개의 TCP 연결을 사용제어 과 데이터 두 개의 사용• 제어 연결 (control connection)

• 클라이언트는 FTP 서버 포트 21로 제어 연결 설정

클라이언트는 제어 연결을 통해 사용자 계정과 비밀번호 전송• 클라이언트는 제어 연결을 통해 사용자 계정과 비밀번호 전송

• 클라이언트는 제어연결을 통해 원격 디렉토리 검색, 변경

• 별도의 제어 연결을 아웃밴드(out-of-band, 대역 외)라고도 함

• 제어 연결은 사용자 세션 동안 사용자의 상태(사용자 계정, 현재 디렉토리 등)를 유지

• 데이터 연결 (data connection)• 데이터 연결 (data connection)

• 서버는 클라이언트의 파일 전송 명령을받으면 TCP 데이터 연결을 개통

한 파일 전송 후 서버는 데이터 연결을• 한 파일 전송 후 서버는 데이터 연결을닫음

• 서버는 다른 파일 전송 시 또 다른연 개

2. 애플리케이션 계층

TCP 연결을 개통

순천향대학교 컴퓨터공학과 50

Page 26: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

FTP 명령과 응답FTP 명령과 응답

FTP 명령 (FTP command) FTP 명령 (FTP command)• 제어 연결을 통해 ASCII 텍스트로 전송

• USER username 서버에게 사용자 계정 전송

• PASS pasword 서버에게 비밀번호 전송

• LIST 서버에게 현재 디렉토리의 파일 리스트를 요청

• RETR filename 서버의 파일을 추출 (retrieve, get)

• STOR filename 서버에 파일을 저장 (store, put)

응답 코드 (response code) 응답 코드 (response code)• HTTP와 유사하게 상태 코드와 문장으로 구성

• 331 Username OK, password required33 Use a e O , pass o d equ ed

• 125 data connection already open; transfer starting

• 425 Can’t open data connection

2. 애플리케이션 계층

• 452 Error writing file

순천향대학교 컴퓨터공학과 51

컴퓨터 네트워크

실습 과제 2-3: FTP, Wireshark 실습실습 과제 2 3 FTP, Wireshark 실습

Wireshark를 실행하여 FTP 패킷을 캡처하고 적용된 FTP 명 Wireshark를 실행하여 FTP 패킷을 캡처하고 적용된 FTP 명령, 응답코드를 확인하고 분석

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 52

Page 27: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

2장. 애플리케이션 계층2장. 애플리케이션 계층

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

2.2 웹과 HTTP

2 3 파일 전송: FTP2.3 파일 전송: FTP

2.4 인터넷 전자메일• SMTP POP3 IMAP• SMTP, POP3, IMAP

2.5 DNS-인터넷 디렉터리서비스2.5 DNS 인터넷 디렉터리서비스

2.6 P2P 애플리케이션

2 7 TCP/UDP 소켓 프로그래밍2.7 TCP/UDP 소켓 프로그래밍

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 53

컴퓨터 네트워크

전자메일 (Electronic Mail)전자메일 (Electronic Mail)

3개 주요 요소 3개 주요 요소• 사용자 에이전트 (user agents)

• 메일 서버 (mail server)( )

• SMTP (Simple Mail Transfer Protocol)

사용자 에이전트• 메일 리더(mail reader)라고도 함

메시지를 읽고 작성하고 보내고• 메시지를 읽고, 작성하고, 보내고, 전달

• MS Outlook, Mozilla Thunderbird 등,

• 송수신 메시지는 서버에 저장

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 54

Page 28: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

전자메일: 메일 서버전자메일 메일 서버

메일 서버 (mail server) 메일 서버 (mail server)• 받은 메시지를 유지하고 관리하는

메일박스(mail box)

• 보내는 메시지의 메시지 큐(message queue)

• 메일 서버들 간의 SMTP 프로토콜• 메일 서버들 간의 SMTP 프로토콜

• 클라이언트: 보내는 메일 서버

• 서버: 받는 메일 서버

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 55

컴퓨터 네트워크

전자메일: SMTP [RFC 2821]전자메일 SMTP [RFC 2821]

클라이언트의 메일 메시지를 25번 포트의 TCP 연결 클라이언트의 메일 메시지를 25번 포트의 TCP 연결• 보내는 서버에서 받는 서버로 직접 전송

3단계 전송 과정• 핸드세이킹

• 메시지 전송

• 종료

명령/응답 상호 작용• 명령: ASCII 문자• 명령: ASCII 문자

• 응답: 상태 코드와 문장

메시지는 7-비트 ASCII이어야 함

2. 애플리케이션 계층

메시지는 7 비트 ASCII이어야 함

순천향대학교 컴퓨터공학과 56

Page 29: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

시나리오: 앨리스가 밥에게 메시지 전송시나리오 앨리스가 밥에게 메시지 전송

1 앨리스는 사용자 에이전트(UA)를 사용하여 밥에게 보낼 메1. 앨리스는 사용자 에이전트(UA)를 사용하여 밥에게 보낼 메

시지를 작성

2 앨리스의 UA는 메시지를 메일서버에 보냄 메시지는 서버2. 앨리스의 UA는 메시지를 메일서버에 보냄. 메시지는 서버의 메시지큐에 놓임

3. SMTP의 클라이언트는 밥의 메일 서버로 TCP 연결 설정의 라이 의 메 서버 정

4. SMTP의 클라이언트는 TCP 연결로 앨리스의 메시지를 보냄

5. 밥의 메일서버는 메시지를 메일박스에 놓음5. 밥의 메일서버는 메시지를 메일박스에 놓음

6. 밥의 UA는 메시지를 읽음

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 57

컴퓨터 네트워크

SMTP 상호동작 예SMTP 상호동작 예

S: 220 hamburger.eduS: 220 hamburger.edu C: HELO crepes.fr S: 250 Hello crepes.fr, pleased to meet you C: MAIL FROM: <alice@crepes fr>C: MAIL FROM: <[email protected]> S: 250 [email protected]... Sender ok C: RCPT TO: <[email protected]> S 250 b b@h b d R i i t kS: 250 [email protected] ... Recipient ok C: DATAS: 354 Enter mail, end with "." on a line by itself C: Do you like ketchup? C: How about pickles? C: . S: 250 Message accepted for delivery C: QUITS: 221 hamburger.edu closing connection

2. 애플리케이션 계층

g g

순천향대학교 컴퓨터공학과 58

Page 30: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

SMTP 상호동작 실습SMTP 상호동작 실습

텔넷을 사용하여 SMTP 서버와 직접 대화 텔넷을 사용하여 SMTP 서버와 직접 대화• 사용자 에이전트를 사용하지 않고 메일을 전송

telnet servername 25

서버로 부터 220 응답을 확인 서버로 부터 220 응답을 확인

SMTP 명령 HELO, MAIL FROM, RCPT TO, DATA, QUIT 을사용하여 입력사용하여 입력

위 과정을 프로그래밍하면 메일 클라이언트의 사용자 에이 위 과정을 프로그래밍하면 메일 클라이언트의 사용자 에이전트• p.166 프로그래밍 문제 3

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 59

컴퓨터 네트워크

SMTP 특징SMTP 특징

SMTP는 지속 연결을 사용 SMTP는 지속 연결을 사용

SMTP 메시지(헤더 & 몸체)는 7-비트 ASCII로 표시

SMTP 서버는 메시지의 끝을 CRLF CRLF 로 표시 SMTP 서버는 메시지의 끝을 CRLF.CRLF 로 표시

HTTP와 비교 HTTP와 비교• HTTP: 풀(pull) 프로토콜

• SMTP: 푸시(push) 프로토콜SMTP 푸시(push) 프로토콜

• 모두 ASCII 명령/응답 상호 작용을 하고 응답 코드를 가짐

• HTTP: 각 객체는 응답 메시지에 캡슐화

• SMTP: 모든 메시지의 객체를 한 메시지로 만듬

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 60

Page 31: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

메일 메시지 포맷 (Mail Message Format)메일 메시지 포맷 (Mail Message Format)

전자메일 메시지SMTP: 전자메일 메시지를 주고받는 프로토콜

RFC 822: 텍스트 메시지 포맷의

headerblanklineRFC 822 텍스트 메시지 포맷의

표준

헤더 라인

line

헤더 라인, e.g.,

• To:

• From:

body

• Subject:

SMTP 명령과는 다름!

몸체

• ASCII 문자의 메시지

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 61

컴퓨터 네트워크

MIME (M lti I t t M il E t i )(Multipurpose Internet Mail Extensions)

ASCII가 아닌 데이터를 메일로 전송 시 사용되는 RFC 822 ASCII가 아닌 데이터를 메일로 전송 시 사용되는 RFC 822의 확장• 비 ASCII 텍스트 메시지(이미지,오디오,비디오, 다국적 언어 등)는( , , , )

SMTP가 이해하는 ASCII 포맷으로 인코딩

• RFC 2045, 2046에 추가 헤더 정의

Content Transfer Encoding: 인코딩된 코드 타입 기술• Content-Transfer-Encoding: 인코딩된 코드 타입 기술

• Content-Type: 메시지 몸체의 타입을 기술

NVT(Network Virtual terminal)

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 62

NVT(Network Virtual terminal)

Page 32: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

MIME 메시지 예MIME 메시지 예

앨리스가 밥에게 JPEG 이미지를 전송하는 예 앨리스가 밥에게 JPEG 이미지를 전송하는 예

From: [email protected]: [email protected]

To: [email protected]

Subject: Picture of yummy crepe.

MIME-Version: 1.0

Content-Transfer-Encoding: base64

C t t T i /jContent-Type: image/jpeg

(base64 인코딩 데이터 …………………………………(base64 인 딩 데이터 ………………………………………………………………………………………………………………………

………………………………… base64 인코딩 데이터)

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 63

컴퓨터 네트워크

Base64 인코딩Base64 인 딩

RFC 1421 RFC 1421

인코딩 절차• 8 비트 3 개를 6 비트 4개로 변형8 비트 3 개를 6 비트 4개로 변형

• 각 6비트가 64개의 출력가능 문자를 인덱스

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 64

Page 33: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

Base64 인코딩 예Base64 인 딩 예

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 65

컴퓨터 네트워크

메일 접속 프로토콜(M il A P t l)(Mail Access Protocol)

SMTP는 수신자의 서버에 메시지를 전송하고 저장 SMTP는 수신자의 서버에 메시지를 전송하고 저장

메일 접속 프로토콜이 서버로부터 메시지를 추출• POP: Post Office Protocol [RFC 1939]POP: Post Office Protocol [RFC 1939]

• 인증(에이전트 <--> 서버)과 다운로드

• IMAP: Internet Mail Access Protocol [RFC 1730]

• POP 보다 다양한 특성을 갖고 복잡함

• 서버에 저장된 메시지를 관리

• HTTPHTTP

• gmail, Hotmail, Yahoo! Mail, etc.

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 66

Page 34: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

POP3 프로토콜POP3 프로토콜

인증(authorization )인증(authorization )

클라이언트 명령:

• user: 사용자 이름

S: +OK POP3 server ready C: user bob S: +OK C: pass hungry

• pass: 비밀번호

서버 응답

+OK C: list

p g yS: +OK user successfully logged on

• +OK

• -ERR

트랜잭션(transaction), client:

:S: 1 498 S: 2 912 S: . C: retr 1트랜잭션(transaction), client

list: 메시지 번호를 나열

retr: 지정된 번호의 메시지

C: retr 1 S: <message 1 contents>S: . C: dele 1 C: retr 2

를 추출

dele: 삭제

quit

C: retr 2 S: <message 1 contents>S: . C: dele 2 C: quit

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 67

quit C: quit S: +OK POP3 server signing off

컴퓨터 네트워크

POP3와 IMAPPOP3와 IMAP

POP3 IMAP POP3• 앞의 예는 다운로드와 삭제

(download-delete) 모드를

IMAP• 모든 메시지를 서버 한 장소에

보관사용

• 밥은 클라이언트가 바뀌면(PC에서 스마트폰) 다시 메

• 사용자가 메시지를 (원격) 폴더로저장하고 구성 가능

• 세션 간에 사용자 상태 정보를(PC에서 스마트폰) 다시 메일을 읽을 수 없음

• 다운로드 및 유지(d l d k ) 모드를

• 세션 간에 사용자 상태 정보를유지

• 폴더의 이름과 어떤 메시지가(download-keep) 모드를사용하여 여러 클라이언트에 메시지의 복사해야 함

어떤 폴더와 연결되어 있는가를 유지

• POP3는 세션 간 상태를 유지하지 않음(stateless)

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 68

Page 35: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

실습 과제 2-4:SMTP 텔넷 접속 상호동작 실습SMTP, 텔넷 접속 상호동작 실습

텔넷을 사용하여 SMTP 서버와 직접 대화 텔넷을 사용하여 SMTP 서버와 직접 대화• 사용자 에이전트를 사용하지 않고 메일을 전송

telnet servername 25

서버로 부터 220 응답을 확인 서버로 부터 220 응답을 확인

SMTP 명령 HELO, MAIL FROM, RCPT TO, DATA, QUIT 을사용하여 입력사용하여 입력

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 69

컴퓨터 네트워크

2장. 애플리케이션 계층2장. 애플리케이션 계층

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

2.2 웹과 HTTP

2 3 파일 전송: FTP2.3 파일 전송: FTP

2.4 인터넷 전자메일• SMTP POP3 IMAP• SMTP, POP3, IMAP

2.5 DNS-인터넷 디렉터리서비스

2.6 P2P 애플리케이션

2 7 TCP/UDP 소켓 프로그래밍2.7 TCP/UDP 소켓 프로그래밍

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 70

Page 36: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

DNS (Domain Name System)DNS (Domain Name System)

사람은 여러 방식을 자신을 식별 사람은 여러 방식을 자신을 식별• 이름, 주민등록번호, 운전면허번호, 여권번호

인터넷 호스트 라우터 인터넷 호스트, 라우터• IP 주소 (32비트 주소, IPv4)

• 호스트 네임(hostname), www.sch.ac.kr

DNS (Domain Name System)• 호스트 네임을 IP 주소 변환하는 디렉터리 서비스

• DNS 서버들이 계층구조로 구현된 분산 데이터베이스 (distributed database)database)

• 호스트가 분산 데이터베이스로 질의하여 호스트 네임에서 IP 주소를획득하는 애플리케이션 계층 프로토콜

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 71

컴퓨터 네트워크

DNS 서비스DNS 서비스

호스트 네임을 IP 주소로 변환 호스트 네임을 IP 주소로 변환

호스트 에일리어싱 (host aliasing)• 간단한 별칭 호스트 네임(enterprise.com)을 복잡한 정식 호스트 네임

( i l h t )으로 변환(canonical host name, relay1.west-coast.enetrprise.com)으로 변환

메일 서버 에일리어싱 (mail server aliasing)

부하 분산 (load distribution) 부하 분산 (load distribution)

• 여러 IP 주소들이 하나의 정식 호스트 네임과 연관되는 중복 웹 서버(replicated Web server)

• 중복 웹 서버에서는 서버들이 부하 분산• 중복 웹 서버에서는 서버들이 부하 분산

단일 중앙 집중 방식 DNS를 사용하지 않는 이유

• 서버 고장 시 전체 작동하지 않음

• 트래픽 양

• 먼 거리의 중앙 집중 데이터베이스

2. 애플리케이션 계층

먼 거리의 중앙 집중 데이터베이

• 유지관리

순천향대학교 컴퓨터공학과 72

Page 37: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

DNS -분산 계층 데이터베이스(Di t ib t d Hi hi l D t b(Distributed, Hierarchical Database

DNS 클라이언트가 www amazon com 호스트 네임의 IP 주 DNS 클라이언트가 www.amazon.com 호스트 네임의 IP 주

소를 질의 과정1. com의 DNS 서버를 찾기 위해 루트(root) 서버에 질의( )

2. amazon.com의 DNS 서버 주소를 위해 com의 DNS 서버(TLD 서버, top-level domain server)에 질의

3 의 IP 주소를 얻기 위해 amazon com의 DNS 서3. www.amazon.com의 IP 주소를 얻기 위해 amazon.com의 DNS 서

버(책임 서버, authoritative server)에 질의

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 73

컴퓨터 네트워크

DNS - 루트 DNS 서버DNS 루트 DNS 서버

질의된 호스트 네임을 해결하지 못한(IP 주소를 알지 못하는) 질의된 호스트 네임을 해결하지 못한(IP 주소를 알지 못하는) 로컬 DNS 서버가 접촉

인터넷에서는 전세계에 13개의 루트 DNS 서버 인터넷에서는 전세계에 13개의 루트 DNS 서버

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 74

Page 38: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

TLD와 책임 DNS 서버TLD와 책임 DNS 서버

TLD (Top-Level Domain) 서버 TLD (Top Level Domain) 서버• com, org, net, edu 같은 상위 레벨 도메인과 kr, uk, fr, jp 등과 같은

국가의 상위 레벨 도메인에 대해 책임

• Network Solutions 사가 com의 TLD 서버를 관리

• Educause가 edu의 TLD 서버 관리

책임 DNS 서버• 기관(회사 대학 등)의 서버(웹 서버 메일 서버 등)의 호스트 네임을• 기관(회사, 대학 등)의 서버(웹 서버, 메일 서버 등)의 호스트 네임을

IP 주소 매핑

• 기관이나 서비스 제공자 등이 서버를 관리

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 75

컴퓨터 네트워크

로컬 DNS 서버 (Local DNS Server)로컬 DNS 서버 (Local DNS Server)

로컬 네임 서버는 DNS 계층에 속하지 않음 로컬 네임 서버는 DNS 계층에 속하지 않음

각 ISP(가정 ISP 회사 대학)는 로컬 DNS 서버를 가짐 각 ISP(가정 ISP, 회사, 대학)는 로컬 DNS 서버를 가짐• 디폴트 네임 서버(default name server)라고도 함

호스트가 DNS 질의를 하면 로컬 DNS 서버로 질의가 전송• 프록시와 같은 역할을 하며 질의를 계층으로 전달

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 76

Page 39: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

DNS 동작 예 (1)DNS 동작 예 (1)

호스트 cis poly edu는 호스트 cis.poly.edu는gaia.cs.umass.edu의

IP 주소를 질의

반복적 질의복적 의(iterative query)• 접촉된 서버가 연결할 서버의

주소로 응답주소로 응답

• "이 이름의 IP 주소는 모르지만 이 서버에 질의해 보아라"이 서버에 의해 아라

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 77

컴퓨터 네트워크

DNS 동작 예 (2)DNS 동작 예 (2)

재귀적 질의(recursive query)(recursive query)• 이름에 대한 해결(name

resolution)을 접촉한 서버에부담부담

• 상위 계층 서버에 많은 부담

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 78

Page 40: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

DNS 캐싱 (DNS Caching)DNS 캐싱 (DNS Caching)

DNS 서버가 어떤 이름에 대한 받은 응답 정보를 저장 DNS 서버가 어떤 이름에 대한 받은 응답 정보를 저장(caching)• 캐싱된 정보는 일정 시간이 지나면 소멸

• 일반적으로 로컬 DNS 서버에 TLD 서버들이 캐싱

• 따라서 루트 DNS 서버는 자주 방문하지 않음

IETF의 갱신/알림(update/modify) 메커니즘• RFC 2136• RFC 2136

• http://www.ietf.org/html.charters/dnsind-charter.html

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 79

컴퓨터 네트워크

DNS 레코드 (DNS Record)DNS 레 드 (DNS Record)

DNS는 자원 레코드(resource record, RR)를 저장하는 분산데이터베이스

Type=A Type=CNAME

• name은 별칭(alias) 호스트yp

• name은 호스트 네임• value는 IP 주소

• name은 별칭(alias) 호스트네임, www.ibm.com

• value는 정식 호스트 네임,servereast.backup2.ibm.

Type=NS• name은 도메인

servereast.backup2.ibm.com

Type=MX(e.g. foo.com)

• value는 이 도메인에 대한

책임 DNS 서버의 호스트

Type MX• value 는 별칭 호스트 네임name 을 갖는 메일서버의 정식호스트 네임

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 80

책임 DNS 서버의 호스트네임

Page 41: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

DNS 프로토콜, 메시지 (1)DNS 프로토콜, 메시지 (1)

DNS 프로토콜은 같은 메시지 포맷을 갖는 질의(query) DNS 프로토콜은 같은 메시지 포맷을 갖는 질의(query), 응답(response) 메시지로 구성

메시지 헤더• 식별자(identification)

질의를 식별하는 16비 질의를 식별하는 16비트 식별자

응답 메시지도 질의와같은 식별자를 가짐같은 식별자를 가짐

• 플래그(flags) 질의/응답 구분 질의/응답 구분 재귀적 질의 요청 재귀적 질의 가능 책임 서버 응답

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 81

책임 서버 응답

컴퓨터 네트워크

DNS 프로토콜, 메시지 (2)DNS 프로토콜, 메시지 (2)

질의되는 이름과 타입

질의대한 응답으로 RR

책임 서버에 대한 레코드

추가 도움 정보

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 82

Page 42: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

DNS 데이터베이스에 레코드 삽입DNS 데이터베이스에 레 드 삽입

“Network Unitopia” 새로 설립된 회사 예 Network Unitopia 새로 설립된 회사 예

DNS 등록기관(registrar e g Network Solutions)에 도메인 DNS 등록기관(registrar, e.g., Network Solutions)에 도메인네임 networkuptopia.com을 등록

• 주 책임 서버와 부 책임 서버의 이름과 IP 주소를 등록기관에 제공주 책임 서버와 부 책임 서버의 이름과 IP 주 를 등록기관에 제공(dns1.networkutopia.com, 212.212.212.1)(dns2.networkutopia.com, 212.212.212.2)

• 등록기관은 두 개의 자원 레코드를 com TLD 서버에 등록• 등록기관은 두 개의 자원 레코드를 com TLD 서버에 등록(networkutopia.com, dns1.networkutopia.com, NS)(dns1.networkutopia.com, 212.212.212.1, A)

책임 DNS 서버에 두 개의 레코드 등록• www.networkuptopia.com을 위한 Type A 레코드

2. 애플리케이션 계층

p p yp• mail.networkuptopia.com을 위한 Type MX 레코드

순천향대학교 컴퓨터공학과 83

컴퓨터 네트워크

2장. 애플리케이션 계층2장. 애플리케이션 계층

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

2.2 웹과 HTTP

2 3 파일 전송: FTP2.3 파일 전송: FTP

2.4 인터넷 전자메일• SMTP POP3 IMAP• SMTP, POP3, IMAP

2.5 DNS-인터넷 디렉터리서비스

2 6 P2P 애플리케이션2.6 P2P 애플리케이션

2 7 TCP/UDP 소켓 프로그래밍2.7 TCP/UDP 소켓 프로그래밍

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 84

Page 43: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

순수한 P2P 구조 (Pure P2P Architecture)순수한 P2P 구조 (Pure P2P Architecture)

항상 켜져 있는 서버 없음

임의의 종단 시스템들이 직접 통신 임의의 종단 시스템들이 직접 통신

피어(peer)들은 간헐적으로 연결되며 IP 주소를 변경되며 IP 주소를 변경

예: 예:• 파일 분배: BitTorrent

• 스트리밍: KanKan• 스트리밍: KanKan

• VoIP : Skype

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 85

컴퓨터 네트워크

파일 분배: 클라이언트-서버 vs. P2P파일 분배 클라이언트 서버 vs. P2P

한 서버에서 N개의 피어들에 크기 F의 파일 분배 시간은? 한 서버에서 N개의 피어들에 크기 F의 파일 분배 시간은?• 피어들 간의 다운로드/업로드 대역폭(capacity) 한정된 자원

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 86

Page 44: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

파일 분배 시간: 클라이언트-서버파일 분배 시간 클라이언트 서버

서버전송: 파일 복사본 N개를 피어들에게 순차적으로 전송

• 1개 복사본 전송 시간: F/us

• N개 복사본 전송 시간: NF/us

클라이언트: 각 클라이언트가 파일을다운로드다운

• dmin = 가장 낮은 다운로드 속도를갖는 피어의 다운로드 속도

• 가장 낮은 속도 피어의 파일 다운• 가장 낮은 속도 피어의 파일 다운로드 시간: F/dmin

클라이언트 서버 방식으로Dcs ≥ max { NF/us, F/dmin }

클라이언트-서버 방식으로파일 F를 N 클라이언트에분배하는 시간

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 87

피어 수 N에 따라 선형적으로 증가

컴퓨터 네트워크

파일 분배 시간: P2P파일 분배 시간 P2P

서버: 하나의 복사본만 전송 서버: 하나의 복사본만 전송

• 1개 복사본 전송 시간: F/us

클라이언트: 각 클라이언트가 파일을 다운로드

• 가장 낮은 속도 피어의 파일다운로드 시간: F/dmin다운로드 시간 F/dmin

클라이언트들: 시스템 전체 업로드 용량은 서버 업로드 속도와 각피어 업로드 속도를 더한 것피어 업로드 속도를 더한 것

• 업로드 속도: us + ui

• 최소 분배시간: NF/ (us + ui )s i

Dcs ≥ max { F/us, F/dmin , NF/(us + ui) }

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 88

Page 45: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

클라이언트-서버 vs. P2P: 비교 사례클라이언트 서버 vs. P2P 비교 사례

클라이언트 업로드 속도= u, F/u = 1 hour, us = 10u, dmin ≥ us클라이언트 업로드 속도 u, F/u 1 hour, us 10u, dmin us

3.5e P2P

2.5

3

tion

Tim

e P2P

Client-Server

1.5

2

m D

istr

ibut

0.5

1

Min

imum

0

0 5 10 15 20 25 30 35

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 89

N

컴퓨터 네트워크

파일 분배 - 비트토렌트(BitTorrent)파일 분배 비트토렌트(BitTorrent)

파일은 256KB 청크(chunk)로 분할 파일은 256KB 청크(chunk)로 분할

피어들은 파일 청크를 송수신

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 90

Page 46: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

비트토렌트(BitTorrent) (1)비트토렌트(BitTorrent) (1)

토렌트에 가입(joining)하는 피어:• 처음에는 청크가 없지만 시간이 지남에 따라 청크들이 누적됨• 처음에는 청크가 없지만 시간이 지남에 따라 청크들이 누적됨

• 트랙커로부터 피어들의 리스트를 얻어서, 이들 중 일부와 연결(“이웃 피어”)

청크를 다운로드하는 동안에 다른 피어들에게 업로드

전체 파일을 얻은 후 토렌트를 (이기적으로) 떠나거나 또는 (

2. 애플리케이션 계층

이타적으로) 남을 수 있음순천향대학교 컴퓨터공학과 91

컴퓨터 네트워크

비트토렌트(BitTorrent) (2)비트토렌트(BitTorrent) (2)

청크 가져오기(Pulling Chunks) 청크 보내기: 되갚음 청크 가져오기(Pulling Chunks)• 임의의 주어진 시간에 서로 다른

피어들이 파일의 서로 다른 청크

청크 보내기: 되갚음(tit-for-tat)

• 현재 가장 속도가 빠른 4개의들을 가지고 있음

• 주기적으로 한 피어(앨리스)는 이웃 피어들에게 각자 가지고 있는

이웃들에게 청크들을 보냄

매 10초 마다 가장 빠른 4개의 피어 다시 선택웃 피어들에게 각자 가지고 있는

청크의 리스트를 요청

• 앨리스는 본인이 가지고 있지 않은 청크를 요청

개의 피어 다시 선택

• 매 30초마다 임의로 하나의 피어를 추가 선택하여 청크를 보

은 청크를 요청

• 청크를 요청하는 순서

• 이웃들이 가지고 있는 복사본 중

새로운 선택된 피어가 가장빠른 4개의 피어일 수 있음이웃들이 가지 있 복사 중

가장 드문 것을 먼저(rarest first)요청

빠른 4개의 피어일 수 있음

모든 이웃이 소외되지 않고낙관적으로 중단 없는 전송( ti i ti ll h k )

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 92

(optimistically unchoke)

Page 47: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

비트토렌트 - 되갚음(Tit-for-Tat)비트토렌트 되갚음(Tit for Tat)

1 앨리는 밥이 소외되지 않도록 선택 (optimistically unchoke)1. 앨리는 밥이 소외되지 않도록 선택 (optimistically unchoke)

2. 앨리스는 밥의 가장 빠른 4개의 제공자가 됨; 밥이 보답을 함

3. 밥이 앨리스의 가장 빠른 4개의 제공자가 됨

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 93

컴퓨터 네트워크

P2P 정보 검색P2P 정보 검색

P2P 애플리케이션의 중요한 요소 중 하나는 정보 색인(index, 간단한 데이터베이스)

동적으로 색인을 검색( h)하고 갱신( d ) 동적으로 색인을 검색(search)하고 갱신(update)

정보를 호스트 위치로 매핑파일 공유 시스템에서는 파일의 정보(노래제목 가수 영화제목 등)로• 파일 공유 시스템에서는 파일의 정보(노래제목, 가수, 영화제목 등)로부터 파일의 복사본을 가진 피어의 IP 주소로 매핑

• 인스턴트 메시징에서는 사용자의 이름으로부터 위치(IP 주소)를 매핑메시징에서 사용자의 이 부터 위치( 주 ) 매핑

분산 해시 테이블(DHT, distributed hash table) 방식 사용

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 94

Page 48: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

분산 해시 테이블(DHT Di t ib t d H h T bl )(DHT, Distributed Hash Table)

DHT는 분산 P2P 데이터베이스 DHT는 분산 P2P 데이터베이스

데이터베이스에 저장되는 정보는 (key, value) 쌍으로 구성• key: 주민등록번호 value: 이름key: 주민등록번호, value: 이름

• key: 컨텐츠 이름, value: IP 주소

• 예, (Led Zeppelin IV, 203.17.123.38)

• 클라이언트-서버 구조에서는 (key, value)가 하나의 중앙 서버에 저장되지만, P2P 시스템에서는 (key, value) 쌍이 모든 피어들에 분산저장저장

피어는 키 값을 가지고 데이터베이스에 질의(query)• 데이터베이스는 키 값과 일치하는 value 값을 리턴

피어는 데이터베이스에 (key, value) 쌍을 삽입(insert)할 수도 있음

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 95

컴퓨터 네트워크

키 값의 분배키 값의 분배

(key value) 쌍을 피어들에게 할당하는 것이 주요 문제 (key, value) 쌍을 피어들에게 할당하는 것이 주요 문제

기본 아이디어 기본 아이디어• 키 값을 정수로 변환

• 정수를 각 피어에 지정정수를 각 피어에 지정

• (key, value) 쌍을 키 값에 가장 가까운 피어에 저장

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 96

Page 49: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

DHT 식별자 (DHT Identifier)DHT 식별자 (DHT Identifier)

각 피어들에게 [0 2n-1] 범위 안의 정수 식별자를 지정 각 피어들에게 [0,2n 1] 범위 안의 정수 식별자를 지정• 각 식별자는 n 비트로 구성

각 키 값도 같은 범위의 정수 식별자로 표시

원래의 키를 해싱(hashing)하여 정수 키를 획득• 해시 함수(hash function) 적용

• 예, key = h(“Led Zeppelin IV”)

• 이 방식이 “분산 해시 테이블” 이라 불리는 이유

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 97

컴퓨터 네트워크

피어에 키 할당피어에 키 할당

DHT의 주요 이슈 DHT의 주요 이슈• (key, value) 쌍을 피어에 지정하는 규칙

가장 가까운 ID(closest ID)를 갖는 피어에 키를 할당• 교재에서는 키의 인접 후속 피어(immediate successor)를 가장 가까

운 것으로 간주

예: 예:• n=4, [0, 15]; 피어: 1,3,4,5,8,10,12,14;

• (11 Jonny Wu) 쌍을 8개 피어 중 어느 피어에 저장?(11, Jonny Wu) 쌍을 8개 피어 중 어느 피어에 저장?

• 후속 피어는 12 이므로 피어 12에 저장

• 만약 키 값과 일치하는 피어 11이 있다면 피어 11에 저장

2. 애플리케이션 계층

• key=15이면 후속 피어는 1

순천향대학교 컴퓨터공학과 98

Page 50: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

원형 DHT (Circular DHT) (1)원형 DHT (Circular DHT) (1)

각 피어는 인접 후속 피어만 감지 각 피어는 인접 후속 피어만 감지• 예, 피어 5는 피어 8의 IP 주소와 식별자만 감지

오버레이 네트워크(overlay network)• 실제 물리적인 링크,라우터,호스트로

구성된 하부 네트워크 상위의 추상적논리 네트워크(abstract logical network)을논리 네트워크(abstract logical network)을형성

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 99

컴퓨터 네트워크

원형 DHT (Circular DHT) (2)원형 DHT (Circular DHT) (2)

0001 누가 키 1110 을

책임지나?나요

N개 피어가 있는경우 질의 해결을위해 O(N) 메시지 필요

0011

1111

나요

0100

1110

1110

01011100

1110

1110 0101

10001010

1110

1110인접 후속 피어를가장 가까운 것으로정의

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 100

1000정의

Page 51: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

최단경로(shortcut)을 갖는 DHT최단경로(shortcut)을 갖는 DHT

각 피어는 전 후 최단경로의 IP 주소를 추적 각 피어는 전,후,최단경로의 IP 주소를 추적

6개의 메시지에서 2개의 메시지로 줄임

O(log N) 이웃들의 최단경로 설계 가능하여 질의에 대해 O(log N) 이웃들의 최단경로 설계 가능하여, 질의에 대해O(log N) 메시지 1

누가 키1110을 책임지나?

315

을 책임지나?

4

125

10

12

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 101

810

컴퓨터 네트워크

피어 변동 (Peer Churn)피어 변동 (Peer Churn)

피어들은 임의로 탈퇴하거나 피어들은 임의로 탈퇴하거나가입할 수 있음• 이를 다루기 위해 각 피어는 두

개의 후속 피어들의 IP 주소를알고 있어야 함

• 각 피어는 두 후속 피어들이 살• 각 피어는 두 후속 피어들이 살아 있는지 확인을 위해 주기적으로 ping

예: 피어 5가 임의로 탈퇴• 피어 4가 감지; 피어 8을 인접

후속자로 하고 8의 인접 후속후속자로 하고, 8의 인접 후속자 10을 두 번째 후속자로 함

피어 13이 새로 가입하면?

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 102

Page 52: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

2장. 애플리케이션 계층2장. 애플리케이션 계층

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

2.2 웹과 HTTP

2 3 파일 전송: FTP2.3 파일 전송: FTP

2.4 인터넷 전자메일• SMTP POP3 IMAP• SMTP, POP3, IMAP

2.5 DNS-인터넷 디렉터리서비스

2 6 P2P 애플리케이션2.6 P2P 애플리케이션

2.7 TCP/UDP 소켓 프로그래밍

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 103

컴퓨터 네트워크

소켓 프로그래밍 (Socket Programming) (1)소켓 프로그래밍 (Socket Programming) (1)

소켓(socket)을 사용하여 클라이언트/서버 응용을 구축하는 소켓(socket)을 사용하여 클라이언트/서버 응용을 구축하는방법 소개

소켓(socket) 소켓(socket)• 애플리케이션 프로세스와 종단 간 트랜스포트 프로토콜 사이의 인터

페이스

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 104

Page 53: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

소켓 프로그래밍 (2)소켓 프로그래밍 (2)

두 가지 형태의 트랜스포트 서비스 두 가지 형태의 트랜스포트 서비스• UDP: 비연결형, 비신뢰적인 데이터 전송

• TCP: 연결형, 신뢰적인 데이터 전송,

애플리케이션 예1. 클라이언트는 키보드로 한 줄의 문자(데이터)를 읽고, 그 데이터를

서버로 송신

2 서버는 데이터를 수신하고 문자를 대문자로 변환2. 서버는 데이터를 수신하고, 문자를 대문자로 변환

3. 서버는 수정된 데이터를 클라이언트에게 송신

4. 클라이언트는 수정된 데이터를 수신하고 화면에 출력

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 105

컴퓨터 네트워크

UDP 소켓 프로그래밍UDP 소켓 프로그래밍

UDP는 클라이언트와 서버 사이에 비연결형(no connection) UDP는 클라이언트와 서버 사이에 비연결형(no connection) 서비스• 초기 핸드셰이킹 과정 없음

• 송신 프로세스는 각 패킷 마다 수신 프로세스의 IP와 포트 번호를 명시해야 함

서버는 수신된 패킷에서 IP 주소와 포트 번호를 추출해야 함• 서버는 수신된 패킷에서 IP 주소와 포트 번호를 추출해야 함

UDP는 비신뢰적인 전송 서비스를 제공하여 전송된 데이터의 순서가 뒤바뀌거나 데이터를 손실할 수도 있음의 순서가 뒤바뀌거나 데이터를 손실할 수도 있음

애플리케이션 관점

UDP 는 클라이언트와 서버 사이에바이트들 그룹(“데이터그램”)의

비신뢰적인 전송을 제공

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 106

Page 54: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

UDP 클라이언트/서버 소켓 상호동작UDP 클라이언트/서버 소켓 상호동작

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 107

컴퓨터 네트워크

UDP 클라이언트 프로그램 예 – 파이썬UDP 클라이언트 프로그램 예 파이썬

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 108

Page 55: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

UDP 서버 프로그램 예 - 파이썬UDP 서버 프로그램 예 파이썬

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 109

컴퓨터 네트워크

TCP 소켓 프로그래밍TCP 소켓 프로그래밍

클라이언트는 서버에 초기 접속

• 서버 프로세스가 먼저 수행 중에 있어야 함

• 서버는 클라이언트의 초기 접속을 처리하는 소켓을 생성해야 함

• 클라이언트는 TCP 소켓을 생성하고, 서버 프로세스의 IP 주소와 포트 번호를라이 켓 생성하 , 서버 세 의 주 와명시하여 서버에 접속

• 클라이언트가 소켓을 생성할 때 클라이언트 TCP는 서버 TCP와 연결 설정

클라이언트에 의해 초기 접속 시 서버 TCP는 클라이언트와 통신하는 서 클라이언트에 의해 초기 접속 시 서버 TCP는 클라이언트와 통신하는 서버 프로세스를 위한 새로운 소켓(연결 소켓)을 생성

• 서버가 다수의 클라이언트와 통신 가능

• 소스 포트 번호가 클라이언트들을 구분 (3장)

애플리케이션 관점

TCP는 클라이언트와 서버 사이에 바이트들의 신뢰적인 전송

(“파이프”)을 제공

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 110

Page 56: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

TCP 클라이언트/서버 소켓 상호동작TCP 클라이언트/서버 소켓 상호동작

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 111

컴퓨터 네트워크

TCP 클라이언트 프로그램 예 – 파이썬TCP 클라이언트 프로그램 예 파이썬

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 112

Page 57: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

TCP 서버 프로그램 예 – 파이썬TCP 서버 프로그램 예 파이썬

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 113

컴퓨터 네트워크

실습 과제 2-5/2-6/2-7: 소켓 프로그래밍/ /

실습 과제 2-5: 실습 과제 2 5:• UDP 클라이언트/서버 파이썬 예제 프로그램을 작성, 실행한 후 분석

실습 과제 2-6: 실습 과제 2 6:• TCP 클라이언트/서버 파이썬 예제 프로그램을 작성, 실행한 후 분석

실습 과제 2-7:과제• 임의의 네트워크 소켓 프로그램 작성, 실행한 후 분석

• 예: 채팅 프로그램, 네트워크 게임, 웹 서버, 메일 클라이언트……

/• 사용 언어는 C/C++, Java, Python, C# 등 자유 선택

파이썬 파이썬• 파이썬 인터프리터 설치 및 언어 사양은 1학년 1학기 강의 참조

=> 컴퓨터와 현대기술

2. 애플리케이션 계층

> 컴퓨터와 현대기술

순천향대학교 컴퓨터공학과 114

Page 58: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

요약 (Summary) (1)요약 (Summary) (1)

애플리케이션 구조 애플리케이션 프로토콜 애플리케이션 구조• 클라이언트/서버

• P2P

애플리케이션 프로토콜• HTTP

• FTP

애플리케이션 서비스 요구사항

• SMTP, POP, IMAP

• DNS

• 신뢰성, 처리율(대역폭), 시간(지연)

인터넷 트랜스포트 서비스

• P2P: BitTorrent, DHT

소켓 프로그래밍 인터넷 트랜스포트 서비스모델• 연결 지향 신뢰적: TCP

소켓 프로그래밍• TCP, UDP 소켓

연결 지향, 신뢰적: TCP

• 비신뢰적, 데이터그램: UDP

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 115

컴퓨터 네트워크

요약 (Summary) (2)요약 (Summary) (2)

네트워크의 중요한 개념인 프로토콜 학습 네트워크의 중요한 개념인 프로토콜 학습

요청/응답 메시지 교환 요청/응답 메시지 교환• 클라이언트가 정보 또는 서비스를 요청

• 서버는 데이터, 상태 코드를 응답서버는 데이터, 상태 를 응답

메시지 포맷• 헤더: 데이터에 관한 정보를 기술한 필드

• 데이터: 통신되는 정보

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 116

Page 59: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

실습 과제 2-1:HTTP 텔넷 접속 메시지 확인HTTP, 텔넷 접속 메시지 확인

특정 웹 서버에 텔넷으로 접속하여 GET HTTP 요청을 입력 특정 웹 서버에 텔넷으로 접속하여 GET HTTP 요청을 입력한 후 응답 메시지를 확인• 방문하는 웹 사이트는 다른 사람과 중복되지 않도록 권장

텔넷 (Telnet) 사용 힌트• 리눅스에서 실행 권장 (VirtualBox 가상머신)

• 윈도우에서 telnet 사용

• 제어판 프로그램 및 기능• 제어판, 프로그램 및 기능

– Windows 기능 사용/ 사용 안함

» Telnet Client 기능 추가

• 콘솔 창에서 실행 시 메시지 출력 깨짐• 콘솔 창에서 실행 시 메시지 출력 깨짐

– 다른 통신 프로그램 실행 대안

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 117

컴퓨터 네트워크

실습 과제 2-2: HTTP, Wireshark 실습실습 과제 2 2 HTTP, Wireshark 실습

Wireshark를 다운로드 받아 설치 Wireshark를 다운로드 받아 설치

브라우저를 통해 특정 웹 사이트를 방문한 후 Wireshark를 브라우저를 통해 특정 웹 사이트를 방문한 후 Wireshark를실행하여 HTTP 패킷을 캡처하고 분석• 방문하는 웹 사이트는 다른 사람과 중복되지 않도록 권장방문하는 웹 사이 는 다른 사람과 중복되지 않 록 권장

“디스플레이 필터”에 http 입력하여 http 메시지만 디스플레이

캡처된 내용을 분석• 방식(method), 헤더 내용 등

• 상태코드, HTML 파일 등

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 118

Page 60: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

실습 과제 2-3: FTP, Wireshark 실습실습 과제 2 3 FTP, Wireshark 실습

Wireshark를 실행하여 FTP 패킷을 캡처하고 적용된 FTP 명 Wireshark를 실행하여 FTP 패킷을 캡처하고 적용된 FTP 명령, 응답코드를 확인하고 분석

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 119

컴퓨터 네트워크

실습 과제 2-4:SMTP 텔넷 접속 상호동작 실습SMTP, 텔넷 접속 상호동작 실습

텔넷을 사용하여 SMTP 서버와 직접 대화 텔넷을 사용하여 SMTP 서버와 직접 대화• 사용자 에이전트를 사용하지 않고 메일을 전송

telnet servername 25

서버로 부터 220 응답을 확인 서버로 부터 220 응답을 확인

SMTP 명령 HELO, MAIL FROM, RCPT TO, DATA, QUIT 을사용하여 입력사용하여 입력

2. 애플리케이션 계층순천향대학교 컴퓨터공학과 120

Page 61: 2장. 애플리케이션계층 (ApplicationLayer)(Application Layer)cs.sch.ac.kr/lecture/Network/2013/13-2-Network-Application.pdf · 순천향대학교컴퓨터공학과 1 ... 소셜네트워킹

컴퓨터 네트워크

실습 과제 2-5/2-6/2-7: 소켓 프로그래밍/ /

실습 과제 2-5: 실습 과제 2 5:• UDP 클라이언트/서버 파이썬 예제 프로그램을 작성, 실행한 후 분석

실습 과제 2-6: 실습 과제 2 6:• TCP 클라이언트/서버 파이썬 예제 프로그램을 작성, 실행한 후 분석

실습 과제 2-7:과제• 임의의 네트워크 소켓 프로그램 작성, 실행한 후 분석

• 예: 채팅 프로그램, 네트워크 게임, 웹 서버, 메일 클라이언트……

/• 사용 언어는 C/C++, Java, Python, C# 등 자유 선택

파이썬 파이썬• 파이썬 인터프리터 설치 및 언어 사양은 1학년 1학기 강의 참조

=> 컴퓨터와 현대기술

2. 애플리케이션 계층

> 컴퓨터와 현대기술

순천향대학교 컴퓨터공학과 121