Part 2: Apprlications

Download Report

Transcript Part 2: Apprlications

第2讲: 网络应用与应用层协议
本讲目标:
o 网络应用层的概念和
实现
 客户端/服务器范式
 服务模型
o 通过对常用应用层协
议的探讨和分析来学
习网络协议
o 教科书参考

深层次目标
o 特定协议:





HTTP
FTP
SMTP
POP
DNS
第2章
主讲人: 西安交通大学 程向前
1
网络应用与应用层协议简介
应用程序:分布式的进程



运行在网络主机中的
“用户空间”
在应用程序间交换报文
e.g., email, ftp, Web
application
transport
network
data link
physical
应用层协议:



应用程序的一个“组成
部分”
定义应用程序需交换的
报文 和所需采取的动作
使用较低层次所提供的
通信服务 (TCP, UDP)
主讲人: 西安交通大学 程向前
application
transport
network
data link
physical
application
transport
network
data link
physical
2
网络应用程序: 一些术语
进程(Process): 主机中
o 用户代理(User agent):
运行中的程序.
软件进程, 是介于用户
o 在某些主机中, 两个进
( above )和网络
程使用进程间通信
( below )之间的接口
(由 OS管理).
 实现应用级协议
 Web: 浏览器
o 而运行在不同主机上
 E-mail: OE、Foxmail
的进程则使用应用层
 流媒体: media player
协议进行通信
主讲人: 西安交通大学 程向前
3
客户端/服务器模式及定位
典型的网络应用是由两个部分
组成: 客户端 和 服务器
客户端:
application
transport
network
data link
physical
发起同服务器的联系 (“speaks first”)
一般都从服务器请求服务,
Web: 客户端由浏览器实现; e-mail: 通
过OE、Foxmial实现
服务器:
向客户端提供所请求的服务
e.g., Web 服务器发送被请求的 Web 页面, 邮
件服务器传递 e-mail
主讲人: 西安交通大学 程向前
request
reply
application
transport
network
data link
physical
4
因特网应用层进程的基本特征
应用程序接口(API:
application
programming
interface)
o 定义应用层和传输层
间的接口
o 插口(socket:
Internet API)

两个进程间的通信,
将数据送入 socket,
或从socket 读出数据
主讲人: 西安交通大学 程向前
Q: 某个进程如何“认定”
另一个 需要与之通信
的进程?


IP 地址-运行另一个
进程的主机所拥有的
“端口号(PORT #)”
– 允许接收主机来确定
的一个标识,本地进
程将报文发送给它
5
应用应用与所需要的传输服务
数据丢失(Data loss)
o 某些应用 (e.g., audio) 可
以容忍某种程度上的数据丢
失
o 其他应用 (e.g., 文件传输,
telnet) 要求 100% 可靠的
数据传输
带宽(Bandwidth)
某些应用(e.g., 多媒体) 对最
低带宽有要求
其他应用(“弹性应用”) 则
可灵活应用所能得到的带宽
实时性(Timing)
o 某些应用(e.g., IP
电话, 交互式游戏)
要求较低的时延
主讲人: 西安交通大学 程向前
6
常用应用程序对传输功能的要求
应用程序 数据丢失
文件传输
e-mail
Web 网页
实时音频/视频
存储音频/视频
交互式游戏
金融应用
不丢失
不丢失
不丢失
允许丢失
允许丢失
允许丢失
允许丢失
不丢失
主讲人: 西安交通大学 程向前
带宽
实时性
弹性
弹性
弹性
音频: 5Kb-1Mb
视频:10Kb-5Mb
同上
几 Kb/s 以上
弹性
无
无
无
100’s msec
few secs
100’s msec
yes and no
7
因特网传输协议服务
TCP 服务:
o 面向连接: 在客户端和服
o
o
o
o
务器进程之间需要建立连
接(setup )
可靠传输 : 在发送和接受
进程之间
流量控制: 发送数据的速
度决不超过接收的速度
拥塞控制: 当网络超负荷
时,束紧发送端口,减缓
发送速度
不提供: 实时性, 最小带宽
承诺
主讲人: 西安交通大学 程向前
UDP服务:
o 在客户端和服务器进程
之间实现“不可靠的”
数据传输
o 不提供:连接建立, 可靠
性保证,流量控制,拥塞
控制,实时性, 最小带宽
承诺
Q: 既生喻,何生亮?
Why is there a UDP?
8
因特网应用: 应用vs传输协议
应用
e-mail
远程终端访问
Web
文件传输
流媒体
远程文件服务器
IP电话
应用协议
所依赖的传输协议
smtp [RFC 821]
telnet [RFC 854]
http [RFC 2068]
ftp [RFC 959]
专有协议
(e.g. RealNetworks)
NSF
专有协议
(e.g., Vocaltec)
TCP
TCP
TCP
TCP
TCP or UDP
主讲人: 西安交通大学 程向前
TCP or UDP
typically UDP
9
万维网与HTTP协议
HTTP: TCP 传输服务:
o 客户端启动TCP连接(创
建插口) 到服务器, 端口
80
o 服务器接受来自客户端的
TCP 连接
o http 报文(应用层协议报
文) 在浏览器 (http
client) 和Web服务器
(http server)之间进行
交换
o 关闭TCP 连接
主讲人: 西安交通大学 程向前
HTTP是 “无状态
(stateless)”
的
o 服务器不保留任何
小评论
访问过的请求信息
保留状态的协议很复杂哟!
过去的历史 (状态) 需要保留
一旦浏览器/服务器崩溃, 它们各
自的状态视图就会发生分歧,还
需要重新核对
10
Web: HTTP协议
超文本传输协议(HTTP:
hypertext transfer
protocol)
o 万维网应用协议
o 客户端/服务器模式
 客户端: 浏览器请求、接
收、展示 Web对象
( objects)
 服务器: Web 服务器发送
对象对请求进行响应
o HTTP1.0: RFC 1945
o HTTP1.1: RFC 2068
主讲人: 西安交通大学 程向前
PC running
Explorer
Server
running
NCSA Web
server
Mac running
Navigator
11
HTTP举例
假设用户键入了一个 URL
www.someSchool.edu/someDepartment/home.index
(该网页包含文本并引用了10 jpeg 图片)
1a. http 客户端启动 TCP 连接
到www.someSchool.edu上
的http 服务器 (进程). Port
80 是 http 服务器的默认端
口.
1b. 在www.someSchool.edu 上的
http 服务器在 port 80 等待 TCP 的连
接请求. “接受” 连接并通知客户端
2. http客户端发送 http 请求报文 (包
括URL) 进入 TCP 连接插口(socket
)
3. http 服务器接收到请求报文, 形成
响应报文( 包含了所请求的对象 ,
someDepartment/home.index),
将报文送
入插口( socket)
time
主讲人: 西安交通大学 程向前
12
HTTP举例 (续.)
4. http 服务器关闭 TCP 连
接.
5. http 客户端接收到了包
time
含html文件的响应报文。
分析 html 文件, 发现
10 个引用的 jpeg 对象
6. 对10
jpeg objects 逐个
重复1-5 步
主讲人: 西安交通大学 程向前
13
非持续和持续连接
(持续连接)Persistent
(非持续连接)Non-
persistent
o HTTP/1.1的默认设置
o 在同一TCP 连接上: 服
o HTTP/1.0: 服务器分析请求、
务器分析请求、响应请
响应、关闭 TCP 连接
求,分析新的请求、..
o 取对象需要2 RTTs
o 客户端一旦下载到了基
 TCP 连接
本的html文件( base
 对象请求/传送
HTML )马上发送对所
o 每次传送都要受到TCP连接初
有引用对象的请求.
始化时的慢启动影响
o 许多浏览器同时打开多个并行 o 较少的 RTTs, 较少的慢
启动.
的连接来改善性能
主讲人: 西安交通大学 程向前
14
HTTP报文格式: request(请求)
o two types of HTTP报文: request,
response
o HTTP请求报文:
ASCII (可读格式)

请求行
(GET, POST,
HEAD 命令)
GET /somedir/page.html HTTP/1.0
User-agent: Mozilla/4.0
Accept: text/html, image/gif,image/jpeg
首部 Accept-language:fr
诸行
(额外的 carriage return, line feed)
回车、换行表示
报文结束
主讲人: 西安交通大学 程向前
15
HTTP请求报文: 一般格式
主讲人: 西安交通大学 程向前
16
HTTP报文格式: response(响应)
状态行
(协议状态码
状态短语)
首部
诸行
数据, e.g.,
被请求的html文件
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 ...
主讲人: 西安交通大学 程向前
17
HTTP响应状态码和短语
位于(服务器->客户端)响应报文的第一行.
样例:
200 OK

请求成功, 被请求的对象在报文中
301 Moved Permanently

被请求的对象被移动过, 新的位置在报文中有说明
(Location:)
400 Bad Request

服务器不懂请求报文
404 Not Found

服务器上找不到请求的对象
505 HTTP Version Not Supported
主讲人: 西安交通大学 程向前
18
自行测试 HTTP(客户端操作)
1. 用Telnet 连接测试用的服务器(需要预先登录UNIX):
$telnet 202.117.35.70 80 打开 TCP 连接到 port 80
(默认的http 服务器端口) 位于 202.117.35.70
后续键入的内容将发送到202.117.35.70
80 号端口
的
2. 键入一条 http请求报文:
GET /~j1010/hello.htm HTTP/1.0
将该指令键入后 (按两次回车键), 就
将此最短之 (但是完整的)
GET 请求发到了 http 服务器
3. 请注意观察http服务器发回的响应报文!
主讲人: 西安交通大学 程向前
19
Cookies: 保存 “状态”
client
o 服务器产生一个 # , 服
普通 http 请求报文
务器认识这个 #, 以备
普通 http响应报文+
不时之需:
Set-cookie: #
 认证
 记忆用户的前序访
普通 http 请求报文
问, 先前的选择
cookie: #
o 服务器在响应报文中发
普通 http响应报文
送 “cookie” 给客户
端
Set-cookie: 1678453
o 客户端可以在后继的请
求中发送“cookie”
普通 http 请求报文
cookie: #
server
cookie特定的
cookie特定的
普通 http响应报文
cookie: 1678453
主讲人: 西安交通大学 程向前
20
Conditional GET: 客户端缓存机制
server
o 目的: 如果客户端缓存了 client
最新的请求对象,则服
务器不必重复发送
o 客户端: 在HTTP请求报
文中声明所缓存拷贝的
生成日期
If-modified-since:
<date>
o 服务器: 如果客户端缓存
的拷贝是最新的,则在
响应报文中不发请求的
对象:
HTTP/1.0 304 Not
Modified
主讲人: 西安交通大学 程向前
http请求报文
If-modified-since:
<date>
对象未
经修改
http响应报文
HTTP/1.0
304 Not Modified
http请求报文
If-modified-since:
<date>
http响应报文
对象已
经修改
HTTP/1.1 200 OK
<data>
21
Web 缓存:代理服务器 (proxy server)
目的: 满足客户端的请求而无需烦扰原始服务器
o 用户设置浏览器:
Web 访问经由代理服
务器
o 客户端发送所有的
HTTP 请求到代理服务
client
origin
server
Proxy
server
器


代理服务器保存了请求的
对象: 代理服务器返回
请求的对象
否则代理服务器从原始
服务器请求对象,再将
其返回给客户端
client
主讲人: 西安交通大学 程向前
origin
server
22
为何Web缓存?
前提: 缓存与客户端比较
“接近 “(e.g., 在同一网
络中)
origin
servers
public
Internet
o 响应时间较短:缓存与
客户端比较“接近 “
o 减少了往来与远程服
务器间的数据流量

因为从学校或本地
ISP 通往外部的链路
往往是网络瓶颈
主讲人: 西安交通大学 程向前
1.5 Mbps
access link
institutional
network
10 Mbps LAN
institutional
cache
23
FTP: 文件传输协议
user
at host
FTP
FTP
user
client
interface
local file
system
file transfer
FTP
server
remote file
system
o 传输文件往来与远程主机
o 客户端/服务器模式
 客户端: 启动传输 (无论与往来远程主机)
 服务器: 远程主机
o ftp: RFC 959
o ftp 服务器: 端口 21
主讲人: 西安交通大学 程向前
24
ftp: 分离的控制, 数据连接
o ftp客户端在 ftp 服务器的
端口21进行联系, 使用
TCP作为传输协议
o 打开两个并行的连接:
 控制:在客户端和服务
器之间交换命令, 响应。
称为带外控制:
“out of band control”
TCP control connection
port 21
FTP
client
TCP data connection
port 20
FTP
server
数据: 往来于服务器的
文件
o ftp 维持状态 (state):
当前目录、先前的认证信
息等

主讲人: 西安交通大学 程向前
25
ftp 命令, 响应
返回码样例
样例命令:
o 在控制通道上传送的
ASCII文本

USER username(登录)
PASS password(登录)

LIST (返回当前目录

中的文件列表)
RETR filename (取

(gets) 文件)

STOR filename (存
(puts) 文件到远程主机)
主讲人: 西安交通大学 程向前
o 状态码和短语 (同 http)




331 Username OK,
password required
125 data
connection already
open; transfer
starting
425 Can’t open
data connection
452 Error writing
file
26
电子邮件
外发报文队列
用户邮箱
user
agent
四个重要组件:
o 用户代理
o 邮件服务器
o 简单邮件传输协议:
smtp
o 邮局协议:pop
用户代理
o 写作, 编辑, 阅读邮件
o e.g., Foxmail, OE
o 外发, 接收的报文存储在
邮件服务器中
主讲人: 西安交通大学 程向前
mail
server
SMTP
SMTP
mail
server
user
agent
SMTP
user
agent
mail
server
user
agent
user
agent
user
agent
27
电子邮件:邮件服务器
Mail Servers
o 邮箱 包含了收到的用户
user
agent
mail
server
邮件 (尚未被阅读)
SMTP
o 报文 队列包含了外发的
邮件报文
o smtp 协议用在邮件服务 SMTP
器之间发送邮件
SMTP
mail
 客户端: 将邮件发送到
server
邮件服务器
user
 “服务器”: 接收和转
agent
user
发邮件
user
agent
mail
server
user
agent
user
agent
agent
主讲人: 西安交通大学 程向前
28
电子邮件: smtp [RFC 821]
o 使用 tcp 可靠的传送邮件报文, 端口25
o 直接传输: 发送服务器到接收服务器
o 传输的三个阶段
握手(打招呼)
 报文传输
 结束
o 命令/响应交互
 命令: ASCII文本
 响应: 状态码和短语

o 邮件报文必须使用7-bit ASCII表示
主讲人: 西安交通大学 程向前
29
smtp 交互样例(在UNIX中用telnet)
S:
C:
S:
C:
S:
C:
S:
C:
S:
C:
C:
S:
C:
S:
220 X1 NT-ESMTP Server ctec.xjtu.edu.cn
HELO [email protected]
250 hello ctec.xjtu.edu.cn
MAIL FROM:<[email protected]>
250 ok
RCPT TO:<[email protected]>
250 ok its for <[email protected]>
DATA
354 ok, send it; end with <CRLF>.<CRLF>
Hi, I am in XUJI now,Where are you?
.
250 Message queued
QUIT
221 Goodbye
主讲人: 西安交通大学 程向前
30
自测 smtp 交互:
o $telnet 202.117.35.170 25
o 见到邮件服务器的 220 响应后
o 键入 HELO, MAIL FROM, RCPT TO, DATA,
QUIT 命令
上述过程可以不使用用户代理,就能直接将电
子邮件发送出去(因为目前大部分邮件服务器
的交互过程趋于复杂,本试验不一定都能进
行)。
主讲人: 西安交通大学 程向前
31
smtp: 评述
与 http的比较:
o smtp 使用持续连接
o smtp 要求报文 (首部 &
信体) 全部使用 7-bit
ASCII码
o 某些代码组合不允许出
现在报文中 (e.g.,
CRLF.CRLF). 此类数据
必须进行编码 (通常使
用 base-64 或 quoted
printable)
o smtp 服务器用
CRLF.CRLF 表示邮件报
文的结束
主讲人: 西安交通大学 程向前
o http: pull(拉)
o email: push(推)
o 都使用 ASCII 命令/响
应交互, 状态码
o http: 每个对象分装在
各自的响应报文中
o smtp:多个对象在一个
多分部的报文中传送
32
邮件报文格式
smtp: 交换邮件报文
的协议(RFC 822)文
本报文格式标准:
o 首部诸行, e.g.,



To:
From:
Subject:
header
空行
body
不同 于 smtp 命令!
o 信体

即 “报文”, ASCII
characters only
主讲人: 西安交通大学 程向前
33
邮件格式: 多媒体扩展
o MIME: multimedia mail extension, RFC 2045,
2056
o 在报文首部附加额外的信息声明 MIME 内容类型
MIME 版本
数据编码方法
多媒体类型, 子类型,
参数声明
编码后的数据
From: [email protected]
To: [email protected]
Subject: Picture of spring.
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Type: image/jpeg
base64 encoded data .....
.........................
......base64 encoded data
主讲人: 西安交通大学 程向前
34
MIME 类型声明
Content-Type: type/subtype; parameters
Text
o 子类型样例: plain,
html
Video
o 子类型样例: mpeg,
quicktime
Image
o 子类型样例: jpeg,
gif
Audio
o 子类型样例: basic (8-
bit mu-law encoded),
32kadpcm (32 kbps
coding)
主讲人: 西安交通大学 程向前
Application
o 需使用其他阅读器的数
据
o 子类型样例: msword,
octet-stream
35
MIME多分部类型
From: [email protected]
To: [email protected]
Subject: Picture of spring.
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary=98766789
--98766789
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain
Dear Bob,
Please find a picture of a crepe.
--98766789
Content-Transfer-Encoding: base64
Content-Type: image/jpeg
base64 encoded data .....
.........................
......base64 encoded data
--98766789-主讲人: 西安交通大学 程向前
36
邮件访问协议
user
agent
SMTP
SMTP
sender’s mail
server
POP3 or
IMAP
user
agent
receiver’s mail
server
o SMTP: 发送/存储 到接收方的服务器
o 邮件访问协议: 从服务器中取信



POP: Post Office Protocol [RFC 1939]
 认证 (agent <-->server) 和下载
IMAP: Internet Mail Access Protocol [RFC 1730]
 更多功能(更为复杂)
 在服务器中操作存储在那里的报文
HTTP: Hotmail , Yahoo! Mail, 263.net,etc.
主讲人: 西安交通大学 程向前
37
POP3 协议
认证阶段
o 客户端命令:
user: 用户名
 pass: 口令
o 服务器响应
 +OK
 -ERR

交互阶段
o
o
o
o
list: 列出报文号码
retr: 用报文号码取信
dele:用报文号码删信
quit
主讲人: 西安交通大学 程向前
S:
C:
S:
C:
S:
+OK POP3 server ready
user alice
+OK
pass hungry
+OK user successfully logged
C:
S:
S:
S:
C:
S:
S:
C:
C:
S:
S:
C:
C:
S:
list
1 498
2 912
.
retr 1
<message 1 contents>
.
dele 1
retr 2
<message 1 contents>
.
dele 2
quit
+OK POP3 server signing off
38
on
自测 pop3交互:
o $telnet 202.117.35.70 110
o 见到+OK POP3 server ready 响应后
o 键入 user, pass, list, retr, quit 命令
上述过程可以不使用用户代理,就能察
看邮箱中的信件。
主讲人: 西安交通大学 程向前
39
DNS: 域名系统
自然人: 诸多定义:

身份证, 姓名, 护照 #
因特网主机, 路由器:


IP 地址 (32 bit) –
用于数据报寻址
“域名”, e.g.,
ctec.xjtu.edu.cn –
帮助记忆
Q: IP 地址和域名之间
如何映射(转换) ?
主讲人: 西安交通大学 程向前
Domain Name System:
o 分布式数据库:由许多域
名服务器按层次构成
o 应用层协议: 主机、路由
器、域名服务器互相通信
进行域名解析 (地址/域名
翻译)
 注意: 因特网之核心功
能, 应用层之协议
 网络“边缘”上之复杂
实体
40
DNS name servers
o 没有服务器能够保存所有
为什么不搞集中的DNS? Name-to-IP 地址的映射
o 单点失败的问题
本地域名服务器:
 每个 ISP, 企业可拥有 本地
o 数据的流通量
(默认) 域名服务器
o 远程集中式的数据库
 主机的 DNS 查询首先发往本
地域名服务器
o 维护问题
授权域名服务器:

难以与时俱进,跟不上发
展!
主讲人: 西安交通大学 程向前

每台主机必须在授权服务器
上注册登记
可完成域名/地址的转换
41
DNS: 根域名服务器
o 当本地域名服务器不能解析时,就向根域名服务器查询
o 根域名服务器:



如果域名映射未知,则向授权域名服务器查询
取得映射
将映射返回本地域名服务器
a NSI Herndon, VA
c PSInet Herndon, VA
d U Maryland College Park, MD
g DISA Vienna, VA
h ARL Aberdeen, MD
k RIPE London
i NORDUnet Stockholm
j NSI (TBD) Herndon, VA
m WIDE Tokyo
e NASA Mt View, CA
f Internet Software C. Palo Alto,
CA
遍布世界各地的13
个根域名服务器
b USC-ISI Marina del Rey, CA
l ICANN Marina del Rey, CA
主讲人: 西安交通大学 程向前
42
简单 DNS 举例
root name server
主机 ctec.xjtu.edu.cn 要
求 gaia.cs.umass.edu
的IP 地址
1. 联系本地域名服务器,
202.117.0.20
2
4
5
local name server
202.117.0.20
2.如有必要
202.117.0.20 会联系
1
6
根域名服务器
3.如有必要根域名服务器
会联系授权域名服务器, requesting host
ctec.xjtu.edu.cn
dns.umass.edu
主讲人: 西安交通大学 程向前
3
authorititive name server
dns.umass.edu
gaia.cs.umass.edu
43
DNS 举例
根域名服务器:
o 可能不知道授权
域名服务器的地
址
o 可能知道中介域
名服务器: 由它
负责联系授权域
名服务器
root name server
6
2
7
local name server
202.117.0.20
1
8
requesting host
ctec.xjtu.edu.cn
3
intermediate name server
dns.umass.edu
4
5
authoritative name server
dns.cs.umass.edu
gaia.cs.umass.edu
主讲人: 西安交通大学 程向前
44
DNS: 迭代查询
root name server
递归查询:
o 对根域名服务器造
3
成工作负担
o 如何减负?
迭代查询:
o 被查询的服务器直
接把可查询的服务
器地址报回
o “不懂这个域名, 但
可以从这个服务器
查到”
iterated query
2
4
7
local name server
dns.eurecom.fr
1
8
requesting host
intermediate name server
dns.umass.edu
5
6
authoritative name server
dns.cs.umass.edu
surf.eurecom.fr
gaia.cs.umass.edu
主讲人: 西安交通大学 程向前
45
DNS: 缓存和更新纪录
o 一旦 (任何) 域名服务器得知了某个映射, 就
将其 缓存
在一定的时间间隔后缓存的条目将会过期
(自动消除)
o 更新/通知 机制由 IETF负责设计



RFC 2136
http://www.ietf.org/html.charters/dnsindcharter.html
主讲人: 西安交通大学 程向前
46
本讲小结
Our study of network apps now complete!
特定协议:
http

可靠性, 带宽, 延迟
ftp
o 客户端-服务器范式
smtp, pop3
o Internet 传输服务模型
dns
o 应用服务的要求:


面向连接的, 可靠的: TCP
不可靠的, 数据报: UDP
主讲人: 西安交通大学 程向前
47
本讲小结
Most importantly: learned about
protocols
o 典型的请求/应答报文交
换:


in-based, out-of-band
客户请求信息或服务
服务器用数据, 状态码进
行响应
o 报文格式:


控制 vs. 数据报文
集中式 vs. 非集中式
无状态 vs. 有状态
可靠的 vs. 不可靠的报文传输
“网络边缘上的复杂实体”
安全性: 认证
首部: 说明数据的信息
数据: 进行通信的信息
主讲人: 西安交通大学 程向前
48