ch.2 application-layer (c) all rights reserved by professor wen- tsuen chen1 第二章 應用層...

80
Ch.2 Application-Laye r (C) All rights reserved by Pr ofessor Wen-Tsuen Chen 1 第第第 第第第 (Application Layer)

Post on 19-Dec-2015

228 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

1

第二章應用層 (Application Layer)

Page 2: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

2

應用層 --簡介

本章主要介紹在應用層所常用的協定 HTTP (section 2.2) FTP (section 2.3) E-mail (section 2.4) DNS (section 2.5)

並介紹用戶端( client )和伺服器端( server )的關係 Service model Socket programming (section 2.6)

Page 3: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

3

用戶端( client )和伺服器端( server ) 用戶端和伺服器端是一種互相依持的關係

(一個用戶端,一個伺服器端)或 (一個用戶端,數個伺服器端)或 (數個用戶端,一個伺服器端)或 (數個用戶端,數個伺服器端)

在執行一般的網路應用程式情況下,一台機器 是用戶端亦是伺服器端

Page 4: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

4

用戶端( client )和伺服器端( server(cont.) 用戶端

通常為送出要求 (request) 的一方或 最初建立連線 (connection) 要求的一方 向伺服器端要求提供服務 (service) 的一方 例如:使用者端的瀏覽器 (browser)

伺服器端 通常為送出回應 (reply) 的一方 提供服務的一方 例如:網頁伺服器 (web server)

Page 5: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

5

Presentation Layer

Layer

1

2

3

4

Media

Code

MAC

LLC

IP

TCP/UDP

5

6

7

socket

Session

Presentation

Application

OSI 7 Layer

Physical Layer

Data_Link Layer

Network Layer

Transort Layer

Session Layer

Application Layer

Page 6: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

6

用戶端( client )和伺服器端( server(cont.)

Application

TransportNetwork

Data linkPhysical

Application

TransportNetwork

Data linkPhysical

Client Server

Request

Reply

Page 7: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

7

應用層 (Application Layer)

應用層是位於 OSI七層中的最上層 為什麼我們需要應用層呢?

因為應用層提供了一個平台,可以讓許多的網路應用程式在應用層執行

這一些應用程式都是在對等的應用層做溝通

Application

TransportNetwork

Data linkPhysical

Application

TransportNetwork

Data linkPhysical

Application

TransportNetwork

Data linkPhysical

Host A Host B Host C

Page 8: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

8

應用程式 (applications)

這裡泛指網路應用程式 (Network Application)

應用程式分別於使用者的機器上執行 兩個或兩個 (multicast application)以上應用程式透過網路溝通

由於上述的交換動作,所以應用層得以存在 例如:

電子郵件( E-mail) 檔案交換( FTP) 網頁瀏覽( Web browsing)

Page 9: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

9

應用層協定 (Application-layer Protocol)

屬於應用程式的一部份 協定 (protocol)中定義

使用此應用程式所需要的流程 所交換的訊息格式 訊息所表示的意義 與下層協定溝通的方法 …

例如: 我們瀏覽網頁需要 HTTP協定

Page 10: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

10

應用層協定 (Application-layer Protocol)(cont.) Q:網路應用程式跟應用層的協定有什麼關係?

應用層的協定只是網路應用程式的一部份而已 例如: HTTP和網頁應用程式的關係

Page 11: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

11

應用層協定 (Application-layer Protocol)(cont.) 應用程式介面( API, Application Programmer‘s Interface )

API 就像是進出應用程式的一扇門 應用程式透過 API 與下層協定溝通 在這裡網路程式所指的 API 就是常見的 Socket Socket 在後面有專節介紹

定址 (Addressing) IP (ch. 4) 或是主機名稱 ( 需搭配 DNS) 指定應用程式 (Socket port) Socket port 就像是門的鑰匙

Page 12: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

12

應用程式所需要的條件

資料流失 (data loss) 在資料傳輸的過程難免會有資料流失,我們要注意應用程式所能夠接受的範圍,並加以改善

網路頻寬 (Network Bandwidth) 我們需要考慮每一個應用程式所需要的頻寬需求

時間的影響 (Time delay) 我們需要考慮時間對於應用程式的影響 例如:播放影片或是聲音,就不允許資料延遲過久

Page 13: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

13

應用程式所需要的條件 (cont.)Application Data loss Bandwidth Time Sensitive

File transfer No loss elastic No

E-mail No loss elastic No

Web documents Loss-tolerant elastic No

Real-time audio/video Loss-tolerant Audio: 5kb-1Mb

Video: 10kb-5Mb

Yes, 100’s msec

Stored audio/video Loss-tolerant Same as above Yes, few secs

Interactive games Loss-tolerant Few Kbps up Yes, 100’s msec

Financial apps No loss elastic Yes and no

Page 14: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

14

網路傳輸層 (Transport layer) -- overview 傳輸層屬於 OSI 第四層 在應用層的下層傳輸層 (ch. 3) 提供了兩種不同的服務協定 TCP (Transmission Control Protocol ) UDP (User Datagram Protocol)

在應用層所執行的網路應用程式都是透過這兩種協定來與網路溝通

Page 15: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

15

網路傳輸層 (Transport layer) – overview(cont.) TCP service

連結導向 (connection-oriented) 要透過 TCP 溝通需要先建立連線 (three way handshake)

提供可靠的傳輸 (reliable transport) 提供流量控制 (flow control) 提供壅塞控制 (congestion control)

UDP service 非連結導向 (connectionless)

要透過 UDP 溝通不需要先建立連線 提供盡力的傳送 (best effort transport)

Page 16: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

16

TCP—Three way handshake

w in d o w s iz e

se n db u ffe r

re c e iv e rb u ffe r

T C P 建 c o n n e c tio n 的 方 法3 w a y h a n d sh a k e

Page 17: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

17

常見的網路應用程式所使用的service應用程式 應用層協定 傳輸層協定

電子郵件 Smtp[RFC 821] TCP

遠端裝置存取 telnet[RFC 854] TCP

網頁 http[RFC2068] TCP

檔案傳輸 ftp[RFC959] TCP

多媒體串流 (stream) Proprietary TCP or UDP

遠端檔案伺服器 NSF TCP or UDP

網路電話 Proprietary Typically UDP

Page 18: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

18

World Wide Web (WWW) Elements URL: Uniform resource locator HTTP: Hypertext Transfer Protocol HTML: Hypertext Markup Language Java Language

Page 19: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

19

URL: Uniform Resource Locator

RFC 編號: 1738, 1808. A URL is compact representation of the

location and access method for a resource available via the Internet.

一個 resource 是一個可以透過網路存取的任何物件 , 包括檔案目錄、檔案、文件聲音和影像…等

URL 的一般表示法 <scheme>:<scheme-specific-part>

Page 20: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

20

RFC 1738 為了下列存取機制所定義之 URL formats

ftp File Transfer Protocolftp File Transfer Protocol http Hypertext Transfer Protocolhttp Hypertext Transfer Protocol gopher The Gopher Protocolgopher The Gopher Protocol mailto Electronic mail addressmailto Electronic mail address news USNET newsnews USNET news nntp USNET news using NNTP accessnntp USNET news using NNTP access telnet Reference to interactive sessionstelnet Reference to interactive sessions wais Wide-Area Information Serverswais Wide-Area Information Servers file Host-specific file namesfile Host-specific file names prospero Prospero Directory Serviceprospero Prospero Directory Service

Page 21: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

21

Page 22: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

22

URI: Universal Resource Identifier (URI)

RFC 編號 1630. 是一種將用在網際網路中的物件的名稱和位址的表示一致的語法

URL 是 URI 的一種。 Decouple resource 的名稱從它所在的位置或是從它所存取的方法

Page 23: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

23

HTTP

HTTP: Hyper Text Transfer Protocol Web 的應用層協定 採用用戶端和伺服器端的服務架構

用戶端:要求、接收並顯示所接收的 web pages 伺服器端:接受要求並回應所要求的 web pages

Application

Transport

Network

Data link

Physical

Application

Transport

Network

Data link

Physicalbrowser web server

http request

http reply

Page 24: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

24

HTTP

Web page 所包含的原件有 Objects

HTML file, jpeg image, java applet… Base HTML file

HTML 是用來描述 web page 的一種語言 URL :是用來表示一個 page 或是 object

www.nthu.edu.tw/index-c.html (hostname + path name)

目前 HTTP 有兩種標準 http 1.0 (RFC 1945) http 1.1 (RFC 2068)— 目前所使用

Page 25: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

25

HTML: Hypertext Markup Language 使一種用來描述網頁的文件要如何定義的語言 Embedding markup commands with each

HTML files so that a browser can reformat the files.

HTML 的標準化 由 WWW組織所制訂 ex: W3C

Page 26: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

26

HTTP

HTTP 下層協定使用 TCP 傳送服務 由用戶端初始化連線 (setup TCP connection) ,使

用 socket port 80 與伺服器端溝通 伺服器端回應後,兩端開始交換訊息直到結束

(TCP connection close) HTTP 是一個 stateless 的協定

Stateless 意指伺服器端不需要保有任何有關過去用戶端的要求訊息 (request message)

通常協定要保有過去的 state ,就會變的很複雜

Page 27: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

27

Non-persistent 和 persistent 連線的不同

Non-persistent HTTP/1.0 每一個 TCP 連線都會在

server 送完物件後結束 所以每一個連線都只會

有一個 request 和一個respond

Respond time = 2 RTTs + Ttrans

每一個所傳送的物件,都會受到 slow start 影響

Persistent Default for HTTP/1.1 在同一個用戶端會一直

使用同一個 TCP 連線,直到 time out才關掉

有較少的 RTT 和 slow start

有分成 pipeline 和 non-pipeline

Page 28: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

28

HTTP 的訊息格式 -- request

訊息是使用 ASCII text 所寫(易於閱讀) Http 的要求訊息格式

GET /somedir/page.html HTTP/1.0 User-agent: Mozilla/4.0 Accept: text/html, image/gif,image/jpeg Accept-language:fr

(extra carriage return, line feed)

request line(GET, POST,

HEAD commands)

header lines

Carriage return, line feed

indicates end of message

Page 29: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

29

HTTP 的要求訊息格式 -- 一般式

Page 30: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

30

HTTP 的訊息格式 -- response

status line(protocol

status codestatus phrase)

HTTP/1.0 200 OK Date: Thu, 06 Aug 1998 12:00:15 GMT Server: Apache/1.3.0 (Unix) Last-Modified: Mon, 22 Jun 1998 …... Content-Length: 6821 Content-Type: text/html data data data data data ... data, e.g.,

requestedhtml file

header lines

Page 31: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

31

常見的回應訊息

200 OK 要求成功 , 所要求的物件會夾帶在接下來的訊息

301 Moved Permanently 所要求的物件已經一到別處,新的位置將會出現在下一個訊

息中 (Location:)

400 Bad Request 所要求的訊息,伺服器無法判讀

404 Not Found 所要求的物件並不存在伺服器裡

505 HTTP Version Not Supported 所要求使用的協定,伺服器端並不支援

Page 32: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

32

Java Language ( 爪窪語言 )

在 1995年,由昇揚公司 (Sun Microsystems Inc.) 所制訂

For waiting interactive web pages. A small Java program, called an applet, is

associated with a web page and downloaded to the client machine to interpret the web page.

Page 33: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

33

Java Language (cont.)

Page 34: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

34

認證 (Authentication)

目的:為了要控制存取伺服器資料的權力

因為是 stateless 所以用戶端每一次 request 都要認證一次

認證通常使用 name 和password

為避免需要重覆輸入認證資料,瀏覽器會自行讀取 catch 的資料

認證步驟如右

server

usual http request msg401: authorization req.

WWW authenticate:

usual http request msg

+ Authorization:lineusual http response

msg

usual http request msg

+ Authorization:lineusual http response

msg

time

client

Page 35: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

35

cookies

設定 cookie 是為了方便在下一次存取網站時,可以不需要再輸入一些重複性的資料

Cookie 是由伺服器端要求用戶端建立,並且存在用戶端的機器上

Cookie大多用來 認證 使用者的訊息

建立步驟如右

client server

usual http request msgusual http response

+Set-cookie: #

usual http request msg

cookie: #usual http response

msg

usual http request msg

cookie: #usual http response msg

cookie-spectificaction

cookie-spectificaction

Page 36: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

36

Web快取( proxy 伺服器) 目的:為了可以使用戶端

送出的 request 不用直接到原來的伺服器,如此一來便可以加速網頁的取得及瀏覽

所以大部分的用戶端都會透過 proxy server 來存取網路資源,而 proxy server 會保有一些 web的快取資料,以利存取 如果現在的網頁資料不是最新的,則 proxy 會去原始的網站去更新目前保有的資料

client

Proxyserver

client

http request

http re

quest

http response

http re

sponse

http re

quest

http re

sponse

http requesthttp response

origin server

origin server

Page 37: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

37

為什麼使用 web catching

因為 proxy 一般會離用戶端較近,會使的存取的速度較快

可以減少一些較長距離的 traffic

同一筆資料可以統一由proxy 來維持更新

右圖為示意圖 1.5 Mbps access link 是

一個 bottleneck

originservers

public Internet

institutionalnetwork 10 Mbps LAN

1.5 Mbps access link

Page 38: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

38

FTP: File Transfer Protocol

FTP 是現在較普遍也較常用的一個檔案傳輸的協定

採用用戶端與伺服器端模式溝通 RFC 編號: 959 所使用的 port:21

file transfer FTPserver

FTPuser

interface

FTPclient

local filesystem

remote filesystem

user at host

Page 39: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

39

FTP: File Transfer Protocol (cont.)

FTP 使用 TCP 作為傳輸層所使用的協定 在 FTP 的連結中有分為兩種

Control :在 client 和 server之間交換 commands 和 response ,屬於” out of band control”

Data :在 client 和 server之間的 data 交換 FTP 和 HTTP 不同,他會 maintain state

目前所在目錄 登錄所做的認證

FTPclient

FTPserver

TCP control connection

port 21

TCP data connectionport 20

Page 40: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

40

FTP: File Transfer Protocol (cont.)

Commands Open: 連接 FTP server User: 使用者帳號 Pass: 密碼 RETR filename: 取得檔案 STOR filename: 上傳檔案 Bye: 結束連線

回應訊息 331 帳號 OK,需要密碼 125 data connection

已經開啟 ; 傳送開始 425 無法開啟 data connection

452 檔案寫入錯誤

如何連結上 FTP server?

>>ftp xxx.xxx.xxx.xxx port

>>get file.xxx ( 取得檔案 )

>>put file.xxx ( 上傳檔案 )

Page 41: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

41

Electronic-mail (E-mail, 電子郵件 ) 包含三個部分

使用者代理人(user agent)

郵件伺服器(mail server)

SMTP 協定

mailserver

useragent

useragent

useragent

mailserver

useragent

useragent

mailserver

useragent

SMTP

SMTP

SMTP

user mailbox

outgoing message queue

Page 42: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

42

E-mail– user agent

有時亦稱為郵件讀取者 (mail reader) 它可以讓 user讀取、回復、轉發、儲存和建構訊息 (message, mail…)

使用者需要讀取信息時, user agent 會去跟郵件伺服器溝通,取回信息,或是送出信息

User agent 常見的有: Microsoft Outlook or Outlook Express Netscape Messenger

Page 43: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

43

E-mail– Mail server

每一個 user 都會有一個信箱 (mail box) 來存放尚未讀取的信件

尚未傳送出去的信件會暫時存在 message queue

SMTP扮演了兩種角色 Client :當作傳送信件的 server Server :當作接收信件的 server Client 和 server 這兩種服務都會執行在每一台郵件伺服器上

Page 44: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

44

E-mail– SMTP

SMTP: Simple Mail Transfer Protocol RFC 編號 : 821

使用 TCP 作為下層溝通的協定 Port: 25

傳送三部曲 Handshaking Transfer of messages closure

所有信息資訊必須是 7-bit ASCII

Page 45: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

45

SMTP 和 HTTP 的比較

相同處 使用 TCP 為傳輸層協定 Client and server model 使用 persistent connections

不同處 http 是 pull protocol 而 SMTP 是 push protocol SMTP 的 message限定在 7 bit ASCII 文件組成方式不同

Page 46: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

46

SMTP 溝通範例 S: 220 cs.nthu.edu.tw C: HELO oz.nthu.edu.tw S: 250 Hello oz.nthu.edu.tw, pleased to meet you C: MAIL FROM: <[email protected] > S: 250 [email protected]... Sender ok C: RCPT TO: <[email protected] > S: 250 [email protected] ... Recipient ok C: DATA S: 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: QUIT S: 221 cs.nthu.edu.tw closing connection

Page 47: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

47

信息格式

RFC 822 為 text message exchange標準

Header lines To: From: Subject:

Body The message, ASCII

character only

header

body

blankline

Page 48: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

48

信息格式 (cont.)

Page 49: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

49

信息格式 (cont.)

Page 50: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

50

MIME extension for Non-ASCII data MIME: multimedia mail extension

RFC 2045, 2056 目的:為了要能夠支援非 ASCII 的 data 在標頭檔定義 MIME 的格式

From: [email protected] To: [email protected] Subject: Picture of yummy crepe. MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg

base64 encoded data ..... ......................... ......base64 encoded data

多媒體資料的種類及副檔名 (type, subtype)

壓縮資料的方法(encode data)

MIME version(版本 )

壓縮的資料(encoded data)

Page 51: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

51

MIME (cont.)

RFC 822 MIME 所增加的標頭檔 (headers)

Header Meaning

MIME-version 定義 MIME 的版本Content-Description 描述信息內容Content-ID 唯一的識別碼Content-Transfer-Encoding 在傳送所壓縮的方法

Content-Type 信息的種類

Page 52: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

52

Page 53: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

53

Page 54: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

54

MIME 的種類 (types)Content-Type: 種類 / 副檔名 ; 參數

(type/subtype; parameters)

文字 (Text) 例如:副檔名為 plain,

html

圖片 (Image) 例如:副檔名為 jpeg,

gif

聲音 (Audio) 例如:副檔名為 basic (8-

bit mu-law encoded), 32kadpcm (32 kbps coding)

影像 (Video) 例如:副檔名為 mpeg,

quicktime

應用程式 (Application) other data that must be

processed by reader before “viewable”

例如:副檔名為 msword, octet-stream

Page 55: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

55

郵件存取協定 (mail access protocol) SMTP負責接收端 server 的傳送及儲存信息 Mail access protocol: 從 server 取回信件

POP: Post Office Protocol RFC 1939 提供認證及下載服務

IMAP RFC 2060 可以遠端操作信件,不需下載信件至機器上

HTTP (web mail) Hot mail, mail2000, yahoo…

Page 56: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

56

POP3 協定

authorization phase client commands:

user: declare username pass: password

server responses +OK -ERR

transaction phase, client: list: list message numbers retr: retrieve message by

number dele: delete quit

C: list S: 1 498 S: 2 912 S: . C: retr 1 S: <message 1 contents> S: . C: dele 1 C: retr 2 S: <message 1 contents> S: . C: dele 2 C: quit S: +OK POP3 server signing off

S: +OK POP3 server ready C: user alice S: +OK C: pass hungry S: +OK user successfully logged on

Page 57: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

57

Email Security ( 電子郵件的安全性 ) PGP: Pretty Good Privacy, by Phil Zimmermaun in 1995.

Support text compression, secrecy and digital signatures.

Page 58: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

58

PGP message format( 訊息格式 )

Page 59: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

59

PEM: Privacy Enhanced Mail

An official Internet standard described in RFC 1421-1424.

Support privacy and authentication for RFC 822 based email systems.

The message together with its message digest is encrypted using DES with a one-time key that is enclosed along with the message.

The key can be protected with RSA and certified by certification authorities.

Page 60: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

60

PGP 和 PEM 的比較

Page 61: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

61

DNS (Domain Name System)-- Overview 名稱我們可以拿來做什麼?

確認、識別一個物件 (object) 幫助我們放置 (allocate) 一個物件 定義在一個團體中的關係 明確定義一個角色 (role) 傳送一個機密訊息

Name space( 名稱空間 ) 定義一組可用的名稱 由一組名稱與數值的配對所組成

Page 62: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

62

DNS (Domain Name System) (cont.) 為什麼我們要使用 DNS ?

可以幫助我們對應 IP 位址和主機名字 (hostname) 無須記憶 IP 位址,只需記憶名字

DNS 是一個分散式的資料庫 將許多 name servers變成階層式架構

DNS 是屬於應用層的協定 Host, routers, name server 透過溝通來達成解析名稱的目的 (address/name translation)

Page 63: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

63

DNS (Domain Name System) (cont.) Hierarchy

Namechinstrap.cs.princeton.edu

edu com

princeton … mit

cs ee

ux01 ux04

physics

cisco … yahoo nasa … nsf arpa … navy acm … ieee

gov mil org net uk fr

Page 64: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

64

DNS (Domain Name System)-- Example Hostscheltenham.cs.princeton.edu 192.12.69.17

192.12.69.17 80:23:A8:33:5B:9F Files/usr/llp/tmp/foo (server, fileid)

Users Larry Peterson [email protected]

Page 65: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

65

DNS (Domain Name System)-- Example (cont.) Mailboxes

Nameserver

Mailprogram

User

TCP

IP

2cs.princeton.edu

192.12.69.53

user @ cs.princeton.edu

1

192.12.69.5 4

192.12.69.5 5

Page 66: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

66

DNS name server

為什麼我們不採取集中式 DNS ? 如果單一 DNS server壞了,會影響很大 Traffic volume ( 一台 server 不可能處理全部的位址解析 )

Server 所放置的位置過遠 維護不易

DNS server 可分為 當地名稱伺服器 (Local name server) 根名稱伺服器 (Root name server) 認證名稱伺服器 (Authoritative name server)

Page 67: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

67

DNS name server

Local name server 負責當地 (local) 名稱解析,如解析不成,往上詢問

root server Root name server

負責解析當地 DNS無法解析之 name Authoritative name server

Host 都會來此主機註冊 當 root server 亦無法解析名稱時,就會詢問

authoritative name server

Page 68: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

68

FQDN (Fully Qualify Domain Name) 一個將名稱與位址對應的機制

為的避免名稱重複 做流量控制

一個 DNS name = 一個 FQDN 一個 FQDN 名稱可以對應到多個 IP 名稱解析的流程: Interactive Query 以下為範例:

Search www.microsoft.com

Page 69: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

69

名稱解析範例 DNSRoot

DNS.org

DNS.com

DNS.edu

DNS.tw

DNS.microsoft

DNS.ibm

DNS.nthu

DNS.cs

DNS.mis

DNS.web

1

2

3

4

5

ZONE

ZONE

www

Page 70: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

70

名稱解析範例 (cont.)

Step1 : web.→ nthu. Step2 : nthu. → Root (所以 Root 需要很多台)(→ Q : com. 的 IP )(← com. DNS 的 IP ) Step3 : nthu. → com.(→ Q : microsoft.com. 的 IP )(← microsoft.com. DNS

的 IP ) Step4 : nthu. → microsoft.(→ Q : www.microsoft.com. 的 IP )(←

www.microsoft.com. DNS 的 IP ) 取得名稱解析的 IP ,此 IP 會存放在 nthu 的 catch 中,

存放 TTL 的時間 Step5 : nthu. → web.

Page 71: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

71

ZONE

ZONE :是一個特殊單位。一個 ZONE 一定要有一個 DNS 來管,但是一個 DNS 可以管理許多的ZONE ,而每一個 ZONE 都有一個 ZONE File

ZONE File1. SOA  ( Start-of-Authority )

Version Number (判斷新舊,但 clock 要相同) Refresh timer (一個 ZONE 有兩個 DNS Server,

Secondary Server 每隔一段時間去跟 Master Server複製) Entry timer Expire time TTL (問到機器的 IP 後可存放在 catch 中的時間。 if

TTL=0 ,多用於 Proxy, DHCP )

Page 72: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

72

ZONE (cont.)

Administrator mail Domain name

2. NS ( Name Server )3. MX ( Mail Exchange Server )4. A ( Host ): ZONE 有多少台機器,需要

Dynamic update5. CN ( alias ):多 IP 對應一台主機6. PTR ( Pointer ):

有 IP查名稱(逆向查詢) 正向查詢: ---.ZONE 逆向查詢: 97.25.163.in-addr.arpa

Page 73: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

73

Recursive Query

我們為了 Load balance還有一種 Recursive Query ,使用 Forward 方式進行(以 DNS 為單位,對象不一定為上游)

執行順序: Interactive Query Recursive Query

If 要直接則使用 Forward 如下圖為 Recursive Query 動作流程 在圖中的 Catch DNS 為 Slave only ,它不用經過流程 1.

(詢問 Root )直接問 Catch DNS Forward 的 DNS ,如果DNS也不知道的話,就會使用 Interactive Query查詢。

Page 74: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

74

Recursive Query (cont.)

DNS

CatchDNS

CatchDNS

CatchDNS

CatchDNS

Client

Forward

Recursive

Interactive

catch

catch

catch

Interactive

Page 75: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

75

DNS 的種類

Interactive Query 和 Recursive Query 的分別: Interactive Query :已經找到全部的名稱 Recursive Query :為了 Load balance 的目的

DNS 的種類區分 Primary DNS :自己 ZONE Secondary DNS :有從別人那一邊 copy 的 ZONE

(只要有就算) Master DNS :自己的 ZONE被別人 Copy Catch DNS :每一台 DNS Server 都算是

Page 76: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

76

DNS 的種類 (cont.)

Master DNSPrimary DNS Secondary DNS

COPY

Page 77: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

77

DNS 的紀錄檔DNS: distributed db storing resource records (RR)

Type=NS name is domain (e.g. foo.com) value is IP address of

authoritative name server for this domain

RR format: (name, value, type,ttl)

Type=A name is hostname value is IP address

Type=CNAME name is an alias name

for some “cannonical” (the real) name

value is cannonical name

Type=MX value is hostname of

mailserver associated with name

Page 78: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

78

DNS 的紀錄檔 (cont.)

Page 79: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

79

DNS 協定的訊息格式

DNS 的 query 和 reply 訊息格式是一樣的 訊息標頭欄位

Identification: 一個 16 bit 的代號, query 和 reply都使用同一個代號

Flags: query 或 reply Recursion desired Recursion available Reply is authoritative

Page 80: Ch.2 Application-Layer (C) All rights reserved by Professor Wen- Tsuen Chen1 第二章 應用層 (Application Layer)

Ch.2 Application-Layer (C) All rights reserved by Professor Wen-Tsuen Chen

80

DNS 協定的訊息格式 (cont.)

identification flags

number ofquestion

number of answerRRs

number ofauthority RRs

number ofadditional RRs

additional imformation(variable number of resource records)

question(variable number of question)

answers(variable number of resource records)

authority(variable number of resource records)

Name, type of fields for a query

RRs in response to query

records for authoritative servers

additional helpful info that may be

used

12 bytes