Professional Documents
Culture Documents
第5章 应用层协议
第5章 应用层协议
5.1 EMAIL
5.2 文件传输协议
5.3 WWW
5.1 EMAIL
Internet Email的工作模型
Internet Email的命令接口
Email的格式
扩展Email的格式
邮件的传输
邮件收发客户端协议
5.1 EMAIL
1. Internet Email的工作模型
MUA MTA
用户代理
邮件传输代理
Email的工作模型
2. Internet Email的命令接口
Unix操作系统下EMAIL命令
Command Parameter Description
h # Display header(s) on the screen
c Display current header only
t # Type message(s) on the screen
s address Send a message
f # Forward message(s)
a # Answer message(s)
d # Delete message(s)
u # Undelete previously Delete message(s)
m # Move message(s) to another mailbox
k # Keep message(s) after exiting
r mailbox Read a new mailbox
n Go to next message and display it
b Backup to the previous message and display it
g # Go to a specific message but not display it
e Exit the mail system and update the mailbox
3. 现在的Email的工作模型
MTA
客户机 SMTP
发出邮件队列
(后台传送) TCP连接
MUA
现在邮件系统的MUA是独立运行在PC机、笔记本电脑或智能手机上的一个
程序,它与MTA通过互联网相连,一般有一个菜单或图标驱动的图形界面,
使用鼠标或触摸进行操作。
MUA与MTA不直接通过发出邮件队列和到来邮件的邮箱联系,而是使用
MRA (Mail Receiving Agent)负责实现与MUA进行交互,从到来邮件的邮箱
中读取用户的邮件,并基于POP3或IMAP等的邮件获取协议将邮件传送给
MUA。
MTA与MRA共同组成了邮件服务器。
4. Webmail的工作模型
MUA MTA
客户端 SMTP
发出邮件队列
(后台传送) 发送邮件的TCP连接
HTTP WebMail
浏览器
服务器
服务端 SMTP
到来邮件的邮箱
(接收邮件) 到来邮件的TCP连接
WebMail是一个基于Web的电子邮件收发系统,扮演MUA的角色。
WebMail系统提供邮件收发、用户在线服务和系统服务管理等功能。
WebMail的界面直观、友好,不需要借助客户端,免除了用户对Email客户软
件进行配置时的麻烦,只要能上网就能使用WebMail,方便了用户对邮件的
收取和发送
5. Email的格式
Internet Email的格式在RFC822中
定义,由两部分组成:header+body
RFC822中与邮件传输相关的首部字段
首部 含义
To: 主要收件人的EMAIL地址(一个或多个)
Cc: 次要收件人的EMAIL地址(一个或多个)
Bcc: 密件抄送收件人的EMAIL地址(一个或多个)
From: 邮件撰写者的EMAIL地址
Sender: 邮件实际发送者的EMAIL地址
由每个传输代理添加此字段的副本,可用于跟踪邮
Received
件传输中的问题。
此字段由将邮件传递给收件人的最终传输代理添加,
Return-Path:
包含有关地址及返回邮件发送者的路由信息。
5. Email的格式
RFC822中供用户代理或收件人使用的首部字段
首部 含义
Date: 邮件发出的日期和时间
回复邮件采用的电子邮件地址,当邮件的撰写者或者发送
Reply-To:
者都不希望看到邮件的回复时,就可以使用该字段。
后面引用本邮件时所使用唯一的唯一编号,字段是自动产
Message-Id: 生的,用于与该邮件建立起联系,例如,使用“In-Reply-
To:”字段时,就可以表示是针对该邮件的回复。
In-Reply-To: 被当前邮件回复的邮件的ID
References: 其他相关邮件的ID
Keywords: 由用户选择的关键字。
Subject: 用一行文字可以显示的邮件概要
5. Email的格式
Body: 内容是任意的,但必须是7位标准
ASCII字符。
6. 扩展Email的格式
扩展Email称为MIME(Multipurpose
Internet Mail Extensions), 最初在RFC
1341中定义,修订版发布在RFC1521
中。主要是针对RFC822 Email中存在
的诸多不足和限制而提出的。
(1)RFC822 Email的缺点
邮件只能由文本消息组成。消息用英文书写并
且以标准的7位ASCII码形式表示。许多非英语
国家的文字,例如用含有重音符合的法语和德
语撰写的邮件、用希伯来语和俄语这种非拉丁
字母文字撰写的邮件、用非字母的中文或日文
等撰写的邮件就无法传送。。
不能传送可执行文件、图像文件、声音文件,
或其他的二进制对象文件。曾试图将二进制文
件转换为SMTP使用的ASCII文本,例如流行的
UNIX UUencode方案,但这些均未形成“正式
标准或事实上的标准”。
(1)RFC822 Email的缺点
某些实现并没有完全按照标准。常见的问题如
下:
回车、换行的删除和增加:UNIX和Windows。
超过76个字符时的处理:截断或自动换行。
后面多余空格的删除。
将制表符转换为多个空格。
(2)MIME的处理方法
MIME利用了RFC822的格式,但又加入了
一 个 扩展 的 头部 (实 际上 是 位于 RFC822的
header中)。 主要是为了克服RFC822只能传
输标准7位ASCII文本的缺点,使Email既可以
传输标准ASCII文本,也可以传输像图片、声
音、各种语言文本等。
(3)MIME的头部
MIME增加的邮件首部字段
MIME-Version: 标识MIME版本
用可读的文字串对邮件内容的描
Content-Description:
述
唯一标识符,用于标识邮件的内
Content-Id: 容,采用与标准的“Message-Id:”
相同的格式
Content-Transfer- 指出对邮件正文使用什么样的编
Encoding 码方法打包以供传输
Content-Type: 邮件内容的类型和格式
MIME的头部
MIME Version:
用它区分是标准RFC822邮件还是MIME邮件,
没有该字段的被假定为标准RFC822邮件。
定义所使用的MIME版本。
Content-Description: ASCII串,对内容的有关描述。
Content-Id: 对content的唯一的标识。
Content-Transfer-Encoding: Body所使用的编码
方式。常用的有base64编码和Quoted-printable
编码。
Base 64 Encoding
每3个8位的字节(即24位)编成一个组,每组
被分成4个6位的单元。
0 0 0 0 0 0 0 0
Base 64 Encoding
将每个六位(范围为0~63)进行编码
6-bit ASCII Base64 6-bit ASCII Base64 6-bit ASCII Base64 6-bit ASCII Base64
value char value value char value value char value value char value
0 A 41 16 Q 51 32 g 67 48 w 77
1 B 42 17 R 52 33 h 68 49 x 78
2 C 43 18 S 53 34 i 69 50 y 79
3 D 44 19 T 54 35 j 6A 51 z 7A
4 E 45 20 U 55 36 k 6B 52 0 30
5 F 46 21 V 56 37 l 6C 53 1 31
6 G 47 22 W 57 38 m 6D 54 2 32
7 H 48 23 X 58 39 n 6E 55 3 33
8 I 49 24 Y 59 40 o 6F 56 4 34
9 J 4A 25 Z 5A 41 p 70 57 5 35
10 K 4B 26 a 61 42 q 71 58 6 36
11 L 4C 27 b 62 43 r 72 59 7 37
12 M 4D 28 c 63 44 s 73 60 8 38
13 N 4E 29 d 64 45 t 74 61 9 39
14 O 4F 30 e 65 46 u 75 62 + 2B
15 P 50 31 f 66 47 v 76 63 / 2F
Base 64 Encoding
对于文件的末尾不是三字节时(二
字节或一字节),用=或==表示。
0 0 0 0 0 0 0 0
=
Base 64 Encoding
对于文件的末尾不是三字节时(二
字节或一字节),用=或==表示。
0 0 0 0 0 0 0 0
= =
Base64编码后的结果只包含可显示的
ASCII字符,其编码效率为75%。
Base 64 Encoding
例如:已知一电子邮件的内容为“你
好!”,内码为C4E3BAC321,写出经过
base 64编码后的结果。
如果电子邮件的内容为“Hello”,写出
经过base 64编码后的结果。
Quoted-printable Encoding
对于小于128的直接使用(不包括3DH,
即“=”), 大于等于128的用“=”后跟其16进
制值表示。
例如:汉字“系统”,其内部编码为
CFBF CDB3, 编码为: =CF=B5=CD=B3; 对
于等号则使用: =3D.
控制字符、数学符号及结尾空白也用
这种方式来编码。
MIME的头部
Content-Type: 内容的自然特性,如是图片还
是文本等。 分为两个标识: 类型和子类
型,中间用/分开。
Content-Type
内容类型 子类型 说 明
text plain, html, 各种格式的文本内容
xml, css
image gif, jpeg, tiff 各种格式的静态图片
Mixed, 多个类型的组合
Multipart alternative,
parallel, digest
Email例子
Received: from client ip-202.118.1.83 by 21cn.com with SMTP id 21E28100744 for
<neu_net@21cn.com>; Sun, 17 May 2020 17:54:55 +0800 (CST)
Sender: gaofuxiang@mail.neu.edu.cn
From: gaofuxiang <gaofuxiang@mail.neu.edu.cn>
To: neu_net@21cn.com
Subject: This is a test mail!
Content-Type: multipart/alternative;
boundary="----=_Part_40661_548005934.1589709294915"
MIME-Version: 1.0
Message-ID: <2a448a8c.308a.172220ecd44.Coremail.gaofuxiang@mail.neu.edu.cn>
------=_Part_40661_548005934.1589709294915
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: base64
5LuK5aSp5LiL6Zuq5LqG77yM55yf5aW977yBCkl0IGlzIHNub3dpbmcgdG9kYXkuIEhvdyBuaW
NlIQ==
------=_Part_40661_548005934.1589709294915
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: base64
PHByZSB3cmFwPSJzb2Z0IiBzdHlsZT0iZm9udC1zaXplOjE0cHg7b3ZlcmZsb3ctd3JhcDpicmVh
ay13b3JkOyI+5LuK5aSp5LiL6Zuq5LqG77yM55yf5aW977yBCkl0IGlzIHNub3dpbmcgdG9kYXk
uIDxzdHJvbmc+PC9zdHJvbmc+SG93IG5pY2UhPC9wcmU+
------=_Part_40661_548005934.1589709294915--
Email例子
这是一封Content-Type为multipart/alternative的邮件,邮件正文被分成了
两部分。第一部分的类型为“text/plain; charset=UTF-8”,其正文解码结果
为:
今天下雪了,真好!
It is snowing today. How nice!
第二部分的类型为“text/html; charset=UTF-8”,其正文解码结果为:
SMTP
Client Server
TCP Connection 25
Server 25
21cn.com
7.邮件的传输-例子
C:>\telnet mail.neu.edu.cn 25
220 mail1.neu.edu.cn SMTP service (Netscape Messaging Server 4.15)
HELO mail.neu.edu.cn
250 mail1.neu.edu.cn
MAIL FROM : <cat@dog>
250 Sender <cat@dog> Ok
RCPT To:<neu_net@21cn.com>
250 Recipient <boyus@21cn.com> Ok
DATA
354 Ok Send data ending with <CRLF>.<CRLF>
It's snowing!
I like snow!
.
250 Message received: GNE1S500.LQD
QUIT
221 mail1.neu.edu.cn SMTP server closing connection
7.邮件的传输
SMTP规定了14条命令和21种响应信息。每
条命令用4个字母组成,每一种响应一般只有一
行信息组成, 由一个3位数字的代码开始,后面
附上(也可以不附上)很简单的说明。
若SMTP服务器已准备好, 则回答250 ok, 否
则返回一个其它代码指明出错原因如451(处理
时出错),452(存储器空间不够),500(无法识别的
命令)。以2开头的表示成功,以4和5开头的表
示失败,以3开头的表示未完成(进行中)。所有
的返回信息既有代码同时有解释。
ESMTP
SMTP存在的问题:
只允许传输ASCII文本,不允许传二进制数据
邮件长度不允许超过64k。(取决于实现)
timeout问题。Client与Server的timeout不同时,
一方已经timeout,并且关闭了connection, 另一
方可能还处于忙的状态。
无限循环问题:在Mailing List中两个host互相
包含时会出现无限循环的问题。
代理用户发送邮件时,对用户没有任何认证。
ESMTP
ESMTP的扩展:
ESMTP: 在RFC1425中提出,后经过多次修改,
现在的最新版本是RFC5321.
Client与Server进行会话时用EHLO开始而代替
HELO.
添加了用户认证功能。
ESMTP-例子
SMTP
Client Server/client
TCP Connection 25
smtp.neu.edu.cn
PC
Server 25
21cn.com
ESMTP-例子
C:>\telnet mail.neu.edu.cn 25
S: 220 mail.neu.edu.cn Anti-spam GT for Coremail System (neu[20170807])
C: EHLO mail.neu.edu.cn
S: 250-mail
S: 250-PIPELINING
S: 250-AUTH LOGIN PLAIN
S: 250-AUTH=LOGIN PLAIN
S: 250-SMTPUTF8
S: 250 8BITMIME
C: AUTH LOGIN
S: 334 dXNlcm5hbWU6 ;服务器的响应,经过BASE64编码了的“username”
C: Z2FvZnV4aWFuZw== ;发送经过BASE64编码了的用户名“gaofuxiang”
S: 334 UGFzc3dvcmQ6 ;经过BASE64编码了的"Password:"
C: MTIzNDU2 ;发送经过BASE64编码了的密码“123456”
S: 235 Authentication successful ;认证成功
ESMTP-例子
C: MAIL FROM <gaofuxiang@mail.neu.edu.cn>
S: 250 Mail OK
C: RCPT TO: <neu_net@21cn.com>
S: 250 Mail OK
C: RCPT TO: <gaofx1020@qq.com>
S: 250 Mail OK
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>
C: Subject: Test mail.
C: Ii is snowing!
C: I like snow.
C: .
S: 250 Mail OK queued as BQGowAB3fy8W9sVeqicfAw--.62923S3
C: QUIT
S: 221 Bye
8.邮件的递交协议
大多数用户是在个人计算机上收发邮件。而个人
计算机不能长时间一直连在网上, 即使连在网上也
不能具有固定的域名和ip地址。因此不能作为smtp
的服务器。为此, 需要Internet网上的smtp服务器来
替用户代收邮件,当用户需要时,在将自己的PC与该
Email服务器连接上,接收邮件。
一般的邮件服务器除了有SMTP server外,同时也支
持PC客户接收邮件.
(1)POP3协议
POP是Post
Office Protocol的缩写,最初于1984
年公布于RFC918. 经过几次更新,现在广泛使
用的是它的第三版,称为POP3。
POP3的工作过程:
POP3 Server监听端口110。 当一个Client host请求与
之建立连接时, POP3 Server发回相应的回答信息。
之后,两者交换相应的命令及响应,直到连接关闭为止。
POP3也是一个纯ASCII文本的协议. Client Host发出
的是命令, 该命令一般由4个字符组成, 后跟相应的参
数, 每个命令都以CRLF结束。POP3 Server给出的是
响应, 通常都是“+OK”或“-ERR”, 后跟其它信息。
(1)POP3协议
Client Host与POP3 Server建立了连接后,经过如下几个状态(阶
段)最终结束。
Authorization State
一旦建立起连接, pop3 server给出相应的回答信息:
S: +OK POP3 Server ready.
这时就进入了授权阶段.
C: USER name
回答:
S: +OK. Enter the passwords please!
S: -ERR. User not found.
C: PASS string (口令)
响应:
S: +OK Maildrop locked and ready
S: -ERR Invalid passwords
S: -ERR Unable to lock maildrop .
在用户名和口令通过验正后,就进入了交易阶段.
(1)POP3协议
Transaction State
STAT (回答当前信箱中的信件数及总长度)
C: STAT
S: +OK. 2 230 (两封邮件,总长230字节)
LIST (msg) (显示邮件)
C: LIST
S: +OK. 2 Messages (230 octets).
RETR msg (取指定的邮件)
C: RETR 1
S: +OK 120 octets.
S: I love u.
S: Happy birthday.
S: .
(1)POP3协议
DELE msg (将邮件标为删除)
C: DELE 1
S: +OK. Message 1 deleted.
NOOP (空操作, Server给出一个回合+OK).
LAST (让Server给出序号最高的邮件的序号)
RSET (将标为删除的邮件的标记去掉)
(1)POP3协议
Update State
一旦Client给出QUIT命令就进入Update阶段. 这时Server给
出“+OK”命令,并将标为删除的Message删除.
C: QUIIT
S: +OK POP3 Server Signing off (2 message left).
可选的命令:
TOP msg
请求Server将指定邮件的标题及前10行送过来.
(1)POP3协议-例子
C: TELNET pop.21cn.com
S: +OK Hermes POP service () is ready.
C: USER neu_net
+OK
C: PASS 12345678
S: +OK neu_net@21cn.com has 2 messages (448 octets)
C: LIST
S: +OK 2 448
S: 1 213
S: 2 235
C: RETR 1
S: +OK 213 octets
S: Received: from clientip-202.118.1.83 (unknown [10.64.8.32])
S: by 21cn.com (HERMES) with SMTP id 21E28100744
S: for <neu_net@21cn.com>; Sun,17 May 2020 17:54:55 +0800 (CST)
(1)POP3协议-例子
S: From: gaofuxiang <gaofuxiang@mail.neu.edu.cn>
S: To: neu_net@21cn.com
S: Subject: This is a test mail!
S: Ii is snowing!
S: I like snow.
S: .
C: DELE 1
S: +OK
C: LIST
S: +OK
S:1 235
C: QUIT
S: +OK 2.0.0 bye
(2)IMAP协议
IMAP(Internet Message Access Protocol)
RFC 1064, RFC3501
当前版本是IMAP4
IMAP是斯坦福大学在1986年开发的一种邮
件获取协议。它的主要作用是邮件客户端
可以通过这种协议从邮件服务器上获取邮
件的信息,下载邮件等。
IMAP协议运行在TCP/IP协议之上,使用的
端口是143。
IMAP的特点
支持多个邮箱。IMAP4的这个特性非常适合在不同的计算机或终端
之间操作邮件的用户(例如你可以在手机、PAD、PC上的邮件代理程
序操作同一个邮箱),以及那些同时使用多个邮箱的用户。。
支持连接和断开两种操作模式。使用POP3时,客户端会连接到服务
器上,直到下载完所有新信息,客户端即断开连接。在IMAP4中,
只要用户界面是活动的和下载信息内容是需要的,客户端就会一直
连接在服务器上。对于有很多或者很大邮件的用户来说,使用
IMAP4模式可以获得更快的响应时间。
支持多个客户同时连接到一个邮箱。POP3协议假定邮箱当前的连接
是唯一的连接。而IMAP4协议允许多个用户同时访问邮箱,同时提
供一种机制让客户能够感知其他当前连接到这个邮箱的用户所做的
操作。
IMAP的特点
支持访问邮件中的MIME全部和部分获取。几乎所有的Internet邮件都是
以MIME格式传输的。MIME允许信息包含一个树型结构,这个树型结
构的叶子节点都是单一内容类型而非叶子节点都是多块类型的组合。
IMAP4协议允许客户端获取任何独立的MIME部分和获取信息的一部分
或者全部。这些机制使得用户无需下载附件就可以浏览消息内容或者在
获取内容的同时进行浏览。
可以跟踪邮件的状态。通过使用在IMAP4协议中定义的标志,客户端可
以跟踪邮件的状态,例如邮件是否被读取,回复,或者删除。这些标识
存储在服务器,所以多个客户在不同时间访问同一个邮箱可以感知其他
用户所做的操作。
支持在服务器上访问多个邮箱。IMAP4客户端可以在服务器上创建,重
命名,或删除邮箱,支持多个邮箱,还允许服务器提供对于共享和公共
文件夹的访问。
IMAP的特点
支持服务器端搜索。IMAP4提供了一种机制给客户使客户可以要求服务
器搜索符合多个条件的邮件。在这种机制下客户端就无需下载邮箱中所
有邮件来完成这些搜索。
支持一个定义良好的扩展机制。吸取早期Internet协议的经验,IMAP4
的扩展定义了一个明确的机制。很多对于原始协议的扩展已被提议并广
泛使用。
IMAP与POP3的比较
操作位置 操作内容 IMAP POP3
阅读、标记、移动、删除
收件箱 客户端与邮箱更新同步 仅客户端内
邮件等
发件箱 保存到已发送 客户端与邮箱更新同步 仅客户端内
创建文件
新建自定义的文件夹 客户端与邮箱更新同步 仅客户端内
夹
草稿 保存草稿 客户端与邮箱更新同步 仅客户端内
垃圾文件 接收误移入垃圾文件夹的
支持 不支持
夹 邮件
接收被移入广告文件夹的
广告邮件 支持 不支持
邮件
(3)WebMail
WebMail 是 一 种 基 于 Web 的 电 子 邮 件 收 发 系 统 , 扮 演
MUA的角色。WebMail系统提供邮件收发、用户在线服
务和系统服务管理等功能。
WebMail的界面直观、友好,不需要借助客户端,免除了
用户对Email客户端软件进行配置时的麻烦,只要能上网
就能使用WebMail,方便了用户对邮件的接收和发送。
WebMail中,运营商照常运行邮件服务器,但此时的用户
代理不再是作为一个独立的程序运行,而是通过网页提
供了一个用户界面。用户可以使用自己喜欢的任何浏览
器来访问自己的邮件,以及发送新邮件。
注:
发信人的用户代理向源邮件服
务器发送邮件, 源邮件服务器向目
的邮件服务器发送邮件使用都是
SMTP协议; POP3和IMAP等协议
只是从目的邮件服务上读取邮件。
5.2 域名系统
历史和概述
域名系统名字空间和层次结构
域名服务器
域名解析过程
域名系统高速缓存
历史与概述
ARPANET时期
• Hosts.txt文件列出了所有计算机名称和它们的IP地址
• 所有主机在晚上从指定站点上获取Hosts.txt文件
• Hosts.txt文件的使用在当时表现不错
互联网发展
• Hosts.txt文件变得越来越大
• 需要集中管理来防止主机名冲突
1987年发布了域名系统的RFC文档(RFC1034、
RFC1035)
• 采用了一种层次的、基于域的命名模式,并使用分布
式数据库系统实现
• 主要用途是将主机名映射成IP地址
历史与概述
域名系统概述
• 域名系统(DNS,Domain Name System)是互联
网重要的基础设施之一,向所有需要域名解析的应用
提供服务,主要负责将可读性好的域名映射成IP地址
• Internet采用层次结构的命名树作为主机的名字,并
使用分布式的域名系统 DNS。Internet的DNS是一
个联机分布式数据库系统
• 名字到域名的解析是由若干个域名服务器程序完成的。
域名服务器程序在专设的结点上运行,相应的结点也
称为名字服务器(Name Ser ver)或域名服务器
(Domain Name Server)
域名 DNS IP地址
域名系统名字空间和层次结构
按级划分 树根 层次树状结构
顶级域名
… coop info biz aero com net org edu gov mil int cn uk
…
域 cctv
… ibm hp mot
树 二级域名
… hk js sh bj org net gov edu com ac
三级域名 mail
… neu pku fudan gzhu sjtu seu
类别域名7个
.edu.cn 教育 .com.cn 工商金融等企业
.gov.cn 政府 .ac.cn 科研
.org.cn 非营利组织 .mil.cn 国防机构
.net.cn 网络服务
行政区域名34个:省、直辖市、自治区、特区等行政区域名,
每个行政区域名为两个字母,例如北京bj、河北he等
无类别域名:例如 www.google.cn、www.tianya.cn等
域名系统名字空间和层次结构
域名的管理
域名管理机构分级负责域名注册
申请注册域名
• Internet的域名管理机构: ICANN
(Internet Corporation for Assigned
Names and Numbers) 注册服务商
www.icann.org
• ccTLD下的二级域名该国自行确定
注册管理机构
• 三级域名注册由其所属二级域名机构
负责,以此类推
ICANN
.edu.cn 下 三 级 域 名 注 册 由
CERNET负责
注册管理机构与注册服务商之间的关系
我国的其它二级域名注册由中国互
联网络信息中心(CNNIC)负责
域名服务器
保存关于域树(domain tree)的结构和设置信息的服务器
程序称为名字服务器(name server)或域名服务器,负责
域名解析工作
每个域名服务器具有连向其它有关域名服务器的信息,
当需要查询其它域的信息时,能够知道或使其它名字服
务器知道到哪里去找别的名字服务器,使域名解析过程
能够完成
域名与IP地址可以是一对一、一对多或者多对一的关系
域名解析过程对用户透明
域名服务器
域名系统的区域
Internet上域名服务器系统也按域名层次树状安排。每个域
名服务器管辖一部分域
一个域名服务器所负责或管辖(有权限的)范围称为管辖区
(zone) ,简称为区
各单位根据具体情况来划分自己管辖区。但在一个区中的所
有节点必须是能够连通的
域名服务器的管辖范围以“区”为单位,而不是以“域”为
单位
管辖区是域名“域”的子集。管辖区可以小于或等于域,但
不可能大于域
域名服务器
管辖区的不同划分方法
根 根
域 abc.com 域 abc.com
abc abc 区y.abc.com
区abc.com 区abc.com
x y x y
u v w t u v w t
根域名服务器 根域名服务器
顶级域名服务器 …
org域名服务器 com域名服务器 edu域名服务器
abc.com
abc 公司有两个
二级域名服务器 域名服务器
权威域名服务器
y.abc.com
域名服务器
域名服务器
(1)根服务器
根服务器是最高层次的域名服务器,是根服务器系统云的
入口点(实例)的名称。
每个根服务器都知道所有的顶级域名服务器的域名及其IP
地址
路由器把查询转发到距离递归服务器最近的一个根服务器
(采用了任意播anycast技术),提高了查询效率
根服务器并不直接把主机用户所查的域名转换成IP地址
域名服务器
(1)根服务器
根服务器共有13套(不是13台机器),这些根服务器相应的
域名分别是: a.rootservers.net - m.rootservers.net
更改根服务器数据只在a.rootservers.net上进行,然后同
步到另外12套中,这样既能保证数据一致性,也提高了域
名服务可靠性
每套都可以有多个镜像(mirrored)根服务器,其内容定期
与上述对应的根服务器同步。注意,同步需要一定的时间
才能完成
根服务器之间采用任意播(anycast)技术互联。目前全球已
设置了1000多台镜像根服务器,世界上大部分DNS域名
服务器都能就近找到一个根服务器
域名解析过程
域名解析过程概述
当某一应用进程需要进行域名解析时,该应用进程将域名
放在DNS请求报文(UDP数据报, 端口号为53)发给域名
服务器(使用UDP是为了减少开销)。域名服务器得到查
询结果后, 将对应IP地址放在应答报文中返回给应用进程
域名查询有递归查询(recursive query)和迭代查询(或循环
查询,iterative query)两种方式
域名解析过程
递归查询
• 当收到查询请求报文的域名服务器不知被查询域名的IP地址时,
该域名服务器就以DNS客户的身份向下一步应查询的域名服
务器发出查询请求,即以递归的方式继续查询
• 较少使用
递归查询
根服务器 顶级域名服务器
③ dns.com
⑥
② ⑦ ⑤ ④
本地域
名字服务器 二级域名服务
dns.xyz.com dns.abc.com
递归
① ⑧ y.abc.com 的 IP 地址
查询
m.xyz.com
域名解析过程
迭代查询
• 当收到查询请求报文的域名服务器不知道被查询域名的
IP地址时,就把自己知道的下一步应查询的域名服务器
IP地址告诉本地域名字服务器,由本地域名字服务器继
续向该域名服务器查询,直到得到所要解析的域名的IP
地址,或者查询不到所要解析的域名的IP地址
• 通常使用
迭代查询
顶级域名服务器
根服务器 dns.com
④
③
② ⑤
⑥ 二级域名服务器
本地域
名字服务器 dns.abc.com
⑦
dns.xyz.com
递归
查询 ① ⑧ y.abc.com 的 IP 地址
m.xyz.com
递归与迭代相结合的查询
根域名服务器
dns.com
③ ②
⑤ ④
本地域名服务器 本地域名服务器 本地域名服务器
dns.y.abc.com dns.abc.com dns.xyz.com
⑥ ⑦
⑧ ①
IP(t.y.abc.com) IP(t.y.abc.com)=?
= (198.54.23.15)
t.y.abc.com
m.xyz.com
域名系统高速缓存
DNS高速缓存作用
为提高DNS查询效率,并减轻根域名服务器的负荷和
减少Internet上的DNS查询报文数量,域名服务器广泛
使用高速缓存,用来存放最近查询过的域名以及从何处
获得域名映射信息的记录
例如不久前已有用户查询过域名为y.abc.com的IP地
址,则本地域名服务器/递归解析器就不必再向根域
名服务器重新查询y.abc.com的IP地址了,而是直接
把高速缓存中存放的上次查询结果(即y.abc.com的
IP地址)告诉用户
域名系统高速缓存
使用高速缓存的好处
可 以 大 大 减轻根域名服务器的负荷 , 而 且 也 能 够 使
Internet上的DNS查询请求和回答报文的数量大为减少
主机一般也缓存域名有关信息
缓存中保存项目有一定的时限
域名到IP地址的绑定可能发生变化(但并不会经常改变)。
为保持高速缓存中的内容正确,域名服务器应为每项内容
设置计时器并处理超时项目(例如,典型的数值是每个项
目只存放48小时)
当域名服务器已从缓存中删去某项信息后又被请求查询该
项信息,就必须重新查询
5.3 WWW
1. WWW的起源
2. WWW系统必须要解决的问题及工作模型
3. URL
4. HTML
5. HTTP
1. WWW的起源
WWW于是1989年3月由Tim Berners-Lee于CERN
提出。
1990年9月开发出第一个文本界面的系统。
1995年,Microsoft推出IE。
Tim Berners-Lee
蒂姆·伯纳斯·李(Tim Berners-Lee),
1955年出生于英国)是万维网的发明者,互
联网之父,英王功绩勋章(OM)获得者,
不列颠帝国勋章(OBE)获得者,英国皇家
学会会员,英国皇家工程师学会会员,美国
国家科学院院士。
1989年3月他正式提出万维网的设想,1990年12月25日,他
在日内瓦的CERN (法文Conseil Européenne pour la Recherche
Nucléaire, 英文European Organization for Nuclear Research,欧洲粒
子物理研究所) 开发出了世界上第一个网页浏览器。他还是关注
万维网发展的万维网联盟的创始人,并获得世界多国授予的各种
荣誉。他最杰出的成就,是免费把万维网的构想推广到全世界,
让万维网科技获得迅速的发展,深深改变了人类的生活面貌。
2. WWW系统必须要解决的问题
及工作模型
解决的问题:
怎样标识分布在Internet上的文档?
用什么协议实现用户与服务器之间的文档传输?
怎样使不同风格的文档都能在Internet的各种计算机上
展示出来?
2. WWW系统必须要解决的问题
及工作模型
HTTP
80
TCP连接
HTML文档
WWW服务器 浏览器
WWW的工作模型
3. URL
URL是Uniform Resource Locator的缩写,用来解决上述定
第一个问题。
定义:是对能从Internet上得到的资源的位置和访问方法的
一种简洁的表示。
格式:<协议>://<用户名>:<密码>@<主机>:<端口>/<路径>
3. URL
URL的<协议>:
Name 用途 例子
http 用于HTML传输 http://www.neu.edu.cn/main.htm
URL的<主机>:
<主机>是所访问资源所在的主机的DNS名字。如果该资源具有访问权限
的限制,还要包括访问该主机所使用的用户名和密码。<协议>与<主机>之
间用分隔符“://”分隔。
3. URL
用户在浏览器的输入框中输入http://www.neu.edu.cn/main.htm
后,浏览器获取URL指定的资源的步骤:
浏览器确定URL。
浏览器解析出URL中的主机域名,向域名服务器发送查询请求,请求查询
“www.neu.edu. cn”的IP地址。
域名服务器返回210.30.199.4。
浏览器与210.30.199.4主机的80端口建立一个TCP连接。
浏览器发送HTTP请求报文,请求/main.htm页面。
WWW服务器发回“main.htm页面”作为HTTP响应。
如果页面包括需要显示的URL,浏览器经过同样的处理过程获取其他URL。
本例中,URL可能会包括多个取自该服务器的内嵌图像、视频或脚本程序等。
浏览器显示页面/ main.htm。
如果短期内没有向同一个服务器发出其他请求,释放TCP连接。
4. HTTP
HTTP(Hyper Text Transfer Protocol),超文
本传输协议
纯文本的Client/Server交互协议
Client发出命令
Server给出响应(MIME like)
4. HTTP
连接:
尽管没有规范要求HTTP必须使用TCP协议,但是,浏
览器与服务器联系最常用的方法是与服务器80端口上
的应用程序建立一个TCP连接。
早期的HTTP1.0中,连接被建立起来以后浏览器只发送
一个请求,服务器收到请求之后,发回一个响应报文,
TCP连接就被释放了。
HTTP1.1支持持续连接(Persistent Connection)。持续连
接中,允许只建立一个TCP连接,在其上发送一个请
求并得到一个响应,然后再发送额外的请求并得到额
外的响应,这种也称为连接重用(Connection Reuse)。
4. HTTP
方法:
HTTP的设计具有通用性,不仅支持请求Web页面,而
且支持称为方法(method)的操作。
每个HTTP的请求由一行或多行ASCII文本组成,其中
第一行的第一个词是被请求的方法名字。
方法 描述
GET 读取一个Web页面
HEAD 读取一个Web页面的头
PUT 存储一个Web页面
POST 填加一个Web页面
DELETE 删除一个Web页面
TRACE 回应进入的请求
CONNECT 通过代理连接
OPTIONS 页面的查询选项
4. HTTP
GET:请求服务器发送页面。所请求的页面被服务器使用MIME方
式编码之后发送回来。大部分发送给Web服务器的请求都是GET。
GET的通用形式是:
GET filename HTTP/1.1
其中filename是访问的页面的文件名,1.1是HTTP协议的版本号。
HEAD:HEAD方法只请求HTML文档的标题(HEAD),不需要真正
的页面内容。该方法可以用来收集创建索引所需要的信息,或者只
是测试一下URL是否有效。
POST:POST用于提交表单,与GET类似,它也携带一个URL,但
它不是请求一个页面,而是将数据(即表单的内容或者RPC参数)上传
到服务器,服务器利用这些数据做某件事,具体取决于URL。POST
请求执行后,会返回一个指示结果状态的页面。
4. HTTP
PUT:PUT方法写入页面。通过该方法可以在远程服务器上创建
Web页面。在PUT请求的主体包含了要上传页面,与GET一样,该页
面使用MIME方式编码。通常,跟在PUT后面的行包含了认证首部,
以便证明请求者的确有执行所请求操作的权限。
DELETE:用于删除指定的页面。它需要提供认证首部。
TRACE:用于调试,它请求服务器发回收到的请求。在请求没有被
正确地处理,而客户端希望知道服务器实际得到的是什么样的请求时,
该方法非常有用。
CONNECT:使用户通过一个中间设备(如HTTP代理Proxy)与Web服
务器联系。
OPTIONS:用于请求指定资源在请求/响应的通信过程中可以使用的
功能选项。
4. HTTP
Web浏览器发出的每个HTTP请求都会得到一个来自
Web服务器的响应,每个响应由一个响应行及可能的
附加信息(例如全部或者部分Web页面)组成。
Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务
器需要记录该用户状态,就使用response向客户端浏览器颁发一个
Cookie。客户端浏览器会把Cookie保存起来。当浏览器再次请求该
网站时,浏览器把请求的网址连同该Cookie一同发送给服务器。服
务器检查该Cookie,以此来辨别用户状态。服务器也可以根据需要
修改Cookie的内容。
4. HTTP
Cookie用途:
会话状态管理,如用户登录状态、购物车、游戏分数或其它需要记
录的信息。记录用户的登录状态是Cookie最常用的用途。通常Web
服务器会在用户登录成功后下发一个签名来标记Session的有效性,
这样免去了用户多次认证和登录网站。记录用户的访问状态,例如
导航、用户的注册流程等。
个性化设置,如用户自定义设置、主题等。Cookie也经常用来记忆
用户相关的信息,以方便用户再使用和自己相关的站点服务。
Cookie也被用来记忆用户自定义的一些功能。用户在设置自定义特
征的时候,仅仅是保存在用户的浏览器中,在下一次访问的时候服
务器会根据用户本地的cookie来表现用户的设置。
浏览器行为跟踪,如跟踪分析用户行为等。记录用户在浏览器上的
操作。
4. HTTP
Session:
客户端浏览器访问服务器的时候,服务端把客户端信息以某种形式
记录在服务器上,这就是Session。Web应用程序使用Session来记录
客户端状态。客户端浏览器再次访问时只需要从该Session中查找该
客户的状态就可以了。Session是服务器端使用的一种记录客户端状
态的机制,使用上比Cookie简单一些,相应的也增加了服务器的存
储压力。
Cookie机制是通过检查客户身上的“通行证”来确定客户身份;
Session就是通过检查服务器上的 “客户明细表”来确认身份。
Session相当于程序在服务器上建立的一份客户档案,客户来访时只
需要检查客户的档案表就可以了。
5. HTML
HTML, HyperText Markup Language(超文本
标记语言)
IBM GML (General Markup Language)
HTTP
80
TCP连接
HTML文档
数据库 程序
数据库服务器 WWW服务器 浏览器
B/S/S模型
6. 动态网页- CGI
CGI(Common Gateway Interface,公共网关接口)是第一种处理
动态页面请求的方法,这是由RFC 875定义的。
CGI提供了一个接口,允许Web服务器与后端程序及脚本通信,
这些后端程序和脚本接受输入信息,并生成HTML页面作为响
应。
后端程序可以用任何一种开发者便利的语言编写,通常都是些
方便开发的脚本语言。可以选择Python、Ruby、Perl、c或c++
等任何开发者喜欢的语言。
按照惯例,通过CGI调用的程序常驻在一个称为cgi-bin的目录
下,该目录在URL中可以看到。服务器将一个请求映射到这个
目录下的一个程序名,并且以一个单独的进程执行该程序。它
把与请求一起发送过来的任何数据作为程序的输入,而程序的
输出则是一个返回给浏览器的网页。
6. 动态网页-脚本语言
第二种常见的API方法是在HTML页面中嵌入少量的脚本程序,然后
让服务器来执行这些脚本程序,生成最终发送给客户的页面。
编写这些脚本的一种流行语言是PHP (Hypertext Preprocessor,超文
本预处理器)。为了使用PHP,服务器必须能够理解PHP。通常,服
务器用文件扩展名php来标识包含PHP的Web页面,而不是用html或
者htm扩展名。
PHP非常易于使用,它实际上是一种功能强大的程序设计语言,是
Web和数据库服务器的接口,它具有变量、字符串、数组,以及在C
语言中可以找得到的绝大多数控制结构,而且它还有让printf更强大
的I/O功能。PHP是开源的,可以免费获取,而且用途广泛。
其它生成动态HTML页面的技术:
JSP(Java Server Pages与PHP相似,页面中的动态部分是用Java语言而不是用
PHP编写的。
ASP(Active Server Page)是Microsoft版本的PHP和JSP,它使用Microsof专用
的.NET网络应用框架来生成动态内容。
6. 动态网页-客户端动态页面生成
在HTML页面中嵌入脚本,而且这些脚本必须运行在客户机上而不是在
服务器上。从HTML4.0开始,可以通过<script>标签来启用这样的脚本。
用来产生这种交互式Web页面的技术统称为动态HTML(dynamic HTML)。
动态HTML相关技术
JavaScript:Netscape发明的一种直译式脚本语言。它的解释器被称为JavaScript引擎,为浏
览器的一部分,广泛用于客户端的脚本语言。虽然名字看起来类似,但是JavaScript与Java
编程语言几乎没有共同之处。
VBScript:是Visual Basic Script的简称,即Visual Basic脚本语言,有时也被缩写为VBS。
它是一种微软环境下的轻量级的解释型语言,它使用COM组件、WMI、WSH、ADSI访问
系统中的元素,对系统进行管理,同时它又是ASP动态网页默认的编程语言平台脚本语言。
Java Applet:Java Applet就是用Java语言编写的一些小应用程序,它们可以直接嵌入到网页
中,并能够产生特殊的效果。当用户访问这样的网页时,Applet被下载到用户计算机上,
由支持Java的网络浏览器执行。
Active X:在广义上是指微软公司的整个COM架构,但是现在通常用来指基于标准COM接
口来实现对象连接与嵌入的ActiveX控件。一些浏览器,例如Internet Explorer、Netscape等
都不同程度上支持ActiveX控件。它允许网页通过脚本和控件交互产生更加丰富的效果。
AJAX:客户端上的脚本(例如JavaScript)和服务器上的脚本(例如PHP)只能提供某种解决方
案的基本技术,这些技术需要与其他几个关键技术结合起来一起使用,这些技术的组合就
称为AJAX (Asynchronous JAvascript and Xml,异步JavaScript和XML)。许多功能强大的
Web应用,如谷歌的Gmail、地图和文档都是使用AJAX编写的。
7. HTTP代理技术
浏览器不是将HTTP请求直接发送到用户在URL中指定的
Web服 务 器,而是将请求发送到一台代理服务器 (Proxy
Server)。代理服务器代替用户将请求发送给Web服务器,
服务器在执行该请求返回响应时,也是将响应返回到代理
服务器,由代理服务器再将响应转发给浏览器。
HTTP请求 HTTP请求
HTTP响应 HTTP响应
代理服务器
WWW服务器
浏览器
7. HTTP代理技术
使用HTTP代理具有如下好处:
通常代理服务器都具有缓存功能,它有很大的存储空间,它
不断将新取得网页储存到它本机的存储器上,如果浏览器所
请求的网页在它本机的存储器上已经存在而且是最新的,那
么它就不需要从Web服务器获取网页,而是直接将存储器中
的网页传送给用户的浏览器,这样就能显著提高浏览速度和
效率。
有些代理服务器布置在某个组织的内外网之间,内网的用户
通过代理服务器访问外网可以将内网上的主机隐藏越来,即
隐藏了自己的真实IP,可以免受网络黑客的攻击,保证了内
网主机的安全。
突破自身IP访问限制,访问某些限制访问的国外Web服务器。
访问一些单位或团体内部资源,如某单位的服务器只允许内
网的用户访问,则可以在内网中设置一台代理服务器,通过
该代理服务器去访问有限制的服务器。
8. HTTP Server负载均衡技术
Load–balance
Web浏览器1 Web服务器1
负载均衡服务器
… …
Web浏览器n Web服务器m
负载均衡负责将客户端发送过来的HTTP请求分配到集群
的各个后台服务器节点上,然后由后台服务器节点来响应客
户的请求。
8. HTTP负载均衡中的调度算法
轮询(Round Robin):在轮询算法中,来自客户端的请求被依次分发到
各个实服务器上。轮询算法适合于服务器组中的所有服务器都具有相同
的软硬件配置并且服务请求相对均衡的情况。
加权轮询(Weighted Round Robin):在加权轮询算法中,根据服务器的
不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值
数的服务请求。加权轮询算法能确保高性能的服务器有更高的使用率,
避免低性能的服务器负载过重。
最少连接法:在负载均衡服务器中记录每台服务器正在处理的连接数量,
当有新的服务连接请求时,将把当前请求分配给连接数最少的服务器,
使均衡更加符合实际情况,负载更加均衡。
随机算法:将新的请求随机分发给后端的具体的实服务器。这是最简单
的一个调度算法。
源 地 址 散 列 (Source Hashing) 法 :根据 对 请求 的源 IP 地址 进行 散 列
(HASH)的结果来决定将该请求发送到哪个实服务器。一般来说,来自
相同客户端的新请求会被散列到相同的实服务器。
8.负载均衡工作方式
基于DNS的负载均衡
基于网络层和传输层的负载均衡
基于应用层的负载均衡
8.基于DNS的负载均衡
在DNS中,允许一个域名与多个IP地址绑定。在这种情况
下,DNS响应将会按照Round Robin(轮询)方式返回这些IP
地址的列表。因此不同的用户对同一域名请求解析时得
到IP地址可能是不同的,访问的也就是不同的Web服务器,
由此平衡各个服务器的负载。
优点:非常容易实现。
缺点:
为了减少DNS请求的次数以提高访问效率,浏览器常常
缓存了DNS查询的结果。
如果一个Web服务器故障,那么浏览器可能仍会根据DNS
缓存中所记录的信息向该不可用的服务发送请求。
8.基于网络层和传输层的负载均衡
直接路由方式(Direct routing):负载均衡服务器以及后端各个实服
务器位于同一LAN中,并且使用同一IP地址,但是只有负载均衡服务器
具有对有ARP请求进行响应的能力,且客户端的请求只能到达负载均衡
服务器。负载均衡服务器收到请求后,根据所使用的调度算法,找出目
标真实服务器,通过将MAC帧的目的地址设置成所选择的目标服务器,
将收到的请求转发给目标真实服务器。目标真实服务在处理完请求之后
可以将响应直接返回给客户端。
负载均衡服务器
Web服务器1
Internet Web服务器2
Web浏览器 LAN交换机 …
Web服务器m
8.基于网络层和传输层的负载均衡
隧道方式:隧道转发方式与直接路由方式类似。其唯一的一点区别是在
负载均衡服务器和各个真实服务之间建立了一系列隧道,并通过这些隧
道相互联系。选中的真实服务器也可以将响应直接返回给客户端。
负载均衡服务器
Web服务器1
Internet Web服务器2
Web浏览器 LAN交换机 …
Web服务器m
8.基于应用层的负载均衡
基于HTTP重定向的负载均衡:在HTTP的响应报文中有一种重定向响应
报文,其状态码为302。Web浏览器的HTTP请求到达负载均衡服务器后,
负载均衡服务器根据调度策略计算出后端真实服务器,并以HTTP重定
向响应报文的形式返回给浏览器。浏览器得到该响应后重新对新的服务
器发起请求,最后完成访问。
负载均衡服务器
①HTTP请求 (202.118.1.20)
②HTTP重定向响应 Web服务器1
③新的HTTP请求 (202.118.1.21)
②
① Web服务器2
Internet (202.118.1.22)
③
Web浏览器 LAN交换机 …
(212.111.122.10)
Web服务器m
(202.118.1.x)
8.基于应用层的负载均衡
基于反向代理的负载均衡:负载均衡服务器实际上就是一台代理服务
器,它有两个IP地址,分别连接外网和内网的真实服务器,由于它是代
理来自外网上的HTTP请求,因此被称为反向代理(Reverse Proxy)。当来
自客户端浏览器的请求到达负载均衡服务器时,它根据调度算法计算出
后端的真实服务器,并将请求转发给后端的真实服务器。后端的真实服
务器执行该请求,将响应返回给负载均衡服务器,再由负载均衡服务器
转发给客户端浏览器
①客户端发出的HTTP请求
②Proxy转发的HTTP请求
③后端真实服务器发回的HTTP响应
④Proxy转发的HTTP响应 Web服务器1
负载均衡服务器 (192.168.1.2)
(Reverse Proxy) LAN交换机
① ② Web服务器2
Internet (192.168.1.3)
④ ③
Web浏览器
202.118.1.20 192.168.1.1
…
(212.111.122.10)
Web服务器m
(192.168.1.x)
应用层实验题目
1. EMAIL的客户端程序(支持邮件发送和
POP3或IMAP4接收)
2. 开发一个简单的Web服务器
以上题目二选一,完成后撰写实验报告,
于结课后两周内发送至6592025@qq.com