You are on page 1of 119

第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

用户发邮件 客户端 SMTP


发出邮件队列
用 (后台传送) 发送邮件的TCP连接

用户读邮件 接
口 服务端 SMTP
到来邮件的邮箱
(接收邮件) 到来邮件的TCP连接

用户代理
邮件传输代理
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

用户发邮件 SMTP 服务端 SMTP


用 TCP连接 (接收邮件) TCP连接
户 MRA
用户读邮件 接
口 服务端 到来邮件的邮箱

 现在邮件系统的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 各种格式的静态图片

audio basic, mp4, 各种格式的声音


mpeg
video Mpeg, mp4, 各种格式的视频
quick-time
application octet-stream, 应用程序生成的数据
pdf, javascript
message http, rfc822 封装了另一封邮件

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”,其正文解码结果为:

<pre wrap="soft" style="font-size:14px;overflow-


wrap:break-word;">今天下雪了,真好!
It is snowing today. <strong></strong>How
nice!</pre>
Email例子
使用Foxmail读取邮件显示的结果:
7.邮件的传输
 邮件的传送是一种client/server的交互。它是基于
tcp协议的。Server在25号端口上监听,有连接请求时,
接受连接,然后传输邮件,传输完毕后再将连接断开。
这是一个纯ASCII字符的协议.所有的命令和数据均
以标准ASCII字符传输。

SMTP
Client Server
TCP Connection 25

SMTP: Simple Mail Transfer Protocol, Defined in RFC 821.


7.邮件的传输 –发送过程
(1)建立TCP 连接。
(2)客户端发送HELO命令以标识发件人自己的身份,
然后客户端发送MAIL FROM命令;服务器端则以OK
作为响应,表明准备接收。
(3)客户端发送RCPT TO命令,以标识该电子邮件
的计划接收人,可以有多个RCPT行;服务器端则表
示是否愿意为收件人接收邮件。
(4)协商结束,发送邮件,用命令DATA发送。
(5)以“.”号表示结束输入内容一起发送出去,结束
此次发送,用QUIT命令退出。
7.邮件的传输-例子
SMTP
Client Server/client
TCP Connection 25
mail.neu.edu.cn
PC

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

四级域名 mail cse www



域名系统名字空间和层次结构
顶级域名TLD(Top Level Domain)一般有三类
 国家或地区顶级域nTLD,也记为ccTLD (cc: countr y
code)
• 例如.cn 表示中国,.us 表示美国,.uk 表示英国。目前有300多个
 基础设施域.arpa (Address and Routing Parameter
Area)
• 专用于Internet基础设施目的
• 目前有二级域ip6.arpa;iris.arpa;in-addr.arpa;uri.arpa;
urn.arpa;home.arpa;as112.arpa;in-addr-servers.arpa;
ipv4only.arpa等
 通用顶级域gTLD
• 早期规定了20个通用顶级域名,2011年批准新通用顶级域名(New
Generic Top-level Domain,New gTLD)
• 截至2020年,已注册有1200多个通用顶级域名
域名系统名字空间和层次结构
早期的通用顶级域名

 .com 表示公司企业 (commerce)


 .net 表示网络服务机构,例如NIC和NOC (network)
 .org 表示非赢利性组织 (organization)
 .edu 表示教育机构(美国专用) (education)
 .gov 表示政府部门(美国专用) (government)
 .mil 表示军事部门(美国专用) (military)
 .int表示政府间国际合约建立的国际性组织 (international)
 .mobi 用于提供移动产品和服务的用户和供应商 (mobile)
 .aero 用于航空运输企业
 .biz 用于商业 (business)
 .coop 用于合作团体
域名系统名字空间和层次结构
早期的通用顶级域名
 .info 适用于各种情况
 .jobs 用于人力资源管理者
 .museum 用于博物馆
 .name 用于个人
 .pro 用于有资质的专业人员及其实体,例如会计、律师和医师
等自由职业者
 .tel 用于商业和个人公布其联系方式
 .travel 用于旅游业实体
 2012年开始,公司名可以作为新的顶级域名(18万美元)
 也可以注册 .中国、.公司、.网络 等顶级域名(多语种域名国际标
准RFC3454、RFC3490、RFC3491、RFC3492)
域名系统名字空间和层次结构
国家顶级域名 .cn下的二级域名分为三类

 类别域名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) ,简称为区
各单位根据具体情况来划分自己管辖区。但在一个区中的所
有节点必须是能够连通的
域名服务器的管辖范围以“区”为单位,而不是以“域”为
单位
管辖区是域名“域”的子集。管辖区可以小于或等于域,但
不可能大于域
域名服务器
管辖区的不同划分方法

根 根

org com edu org com edu

域 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

(a) 区 = 域 (b) 区 < 域


域名服务器
域名服务器类别
总体上,域名系统的域名服务器分为两大类
• 权威域名服务器(authoritative name server)
• 一种根据本地知识知道一个DNS区(zone)的内容的
服 务 器, 它 可以回答有关该DNS区的查询而无需查
询其他服务器
• 每个DNS区至少应有一个IPv4可访问的权威 域 名 服
务器提供服务
• 递归解析器(recursive resolver)/递归服务器
• 以递归方式运行的、使用户程序联系域(domain)域
名服务器的程序。
域名服务器
根据对应域的层次,权威域名服务器又进一步分为以下类

• 根域名服务器(root name server) /根服务器(root
server)
• 顶级域域名服务器(TLD name server)
• 二 级 域 域 名 服 务 器 ( second level domain n a m e
server)
• 三级域域名服务器(third level domain name server)
• ......
 三级域及以下的域名服务器(例如gzhu.edu.cn)通常在用
户本地区域,因此三级域及以下的域名服务器也统称为
本地域名服务器
域名服务器
层次树状结构的权威域名服务器

根域名服务器 根域名服务器

顶级域名服务器 …
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月开发出第一个文本界面的系统。

 1991年月12月在San Antonio, Texas的Hypertext’91


进行了展示。
 1993年2月,Marc Andreessen在国家超级计算机
应用中心开发出图形界面的浏览器Mosaic.
 Marc Andreessen创办Netscape, 并推出Navigator。

 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

https 用于安全的HTML传输 https://mail.neu.edu.cn/

ftp FTP ftp://ftp.neu.edu.cn/incoming/readme


file 本地文件 d:/data/x1.txt
mailto 发送Email mailto:gaofuxiang@mail.neu.edu.cn
about 浏览器信息 about:plugins

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文本组成,其中
第一行的第一个词是被请求的方法名字。

请求行 请求方法 SP URL SP 协议版本 CRLF


头部字段名 : SP 头部字段值 CRLF
请求头部 ……
头部字段名 : SP 头部字段值 CRLF
CRLF
请求数据 ……
HTTP请求报文格式
4. HTTP
方法:

方法 描述
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页面)组成。

响应行 协议版本 SP 状态码 SP 附加信息 CRLF


头部字段名 : SP 头部字段值 CRLF
响应头部 ……
头部字段名 : SP 头部字段值 CRLF
CRLF
响应数据 ……
HTTP响应报文格式
4. HTTP
 响应行包括一个3位数字的状态码,状态码反映了该请求的执行状
态,如果请求失败,失败的原因是什么等等。第一位数字把响应
分成五大类。
 1XX:消息。这一类型的状态码,代表请求已被接受,需要继续
处理。
 2XX:成功。这一类型的状态码,代表请求已成功被服务器接收、
理解、并接受。
 3XX:重定向。这类状态码代表需要客户端采取进一步的操作才
能完成请求。
 4XX:请求错误。这类的状态码代表客户端发出了错误的请求,
服务器无法处理。
 5XX或6XX:服务器错误。这类状态码代表了服务器在处理请求
的过程中有错误或者异常状态发生,也有可能是服务器意识到以
当前的软硬件资源无法完成对请求的处理。
4. HTTP
 在一些请求行后面可能还有额外的行,包含了更多的
信息:请求首部(Request Header)。这些信息可以与一
个过程调用的参数相类比。响应报文中也会包括有响
应首部(Response Header)。有些首部可以用在两个方向
上。 HTTP请求报文的部分首部
首部 描述
User-Agent 有关浏览器及其平台的信息
Accept 客户可处理的页面类型
Accept-Charset 客户可接受的字符集
Accept-Encoding 客户可处理的页面编码
Accept-Language 客户可处理的自然语言
If-Modified-Since 检查资源是否已的时间和日期
If-None-Match 先前为检查资源是否已修改而发送的标签
Host 服务器的DNS
Authorization 列出客户的信任凭据
Referer 指明该请求是从哪个关联连接而来
Cookie 给服务器发回Cookie的先前URL
4. HTTP
HTTP响应报文的部分首部
首部 描述
Set-Cookie 客户存储的Cookie HTTP请求/响应报文的首部
Server 关于服务器的信息 首部 描述
Content- 内容如何编码 Date 发送消息的时间
Encoding 和日期
Content- 页面使用的自然语言 Range 标识一个页面的
Language 一部分
Content-Length 页面以字节计的长度 Cache-Control 指示如何处理缓
Content-Type 页面的MIME类型 存
Content-Range 标识了页面内容的一部 ETag 页面内容的标签
分 Upgrade 发送方希望切换
Last-Modified 页面最后修改的时间和 的协议
日期
Expires 页面不再有效的时间和
日期
Location 告诉客户向谁发送请求
Accept-Ranges 指出服务器能接受的请
求的字节范围
4. HTTP
缓存:
 HTTP缓存指的是当客户端向服务器请求资源时,会先查看浏览
器缓存,如果浏览器有“要请求资源”的副本,就可以直接从浏
览器缓存中获取而不是从指定的服务器中获取这个资源。HTTP缓
存分为强制缓存和协商缓存两种:
 强制缓存:是指在缓存数据未失效的情况下,直接使用浏览器的
缓存数据,而不会再向服务器发送任何请求。
 协 商 缓 存 : 第 一 次 请 求 时 服 务 器 返 回 的 响 应 头 中 没 有 Cache-
Control和Expires或者Cache-Control和Expires过期还或者它的属性
设置为no-cache (即非强制缓存)时,浏览器第二次请求时就会与服
务器进行协商,与服务器端对比判断资源是否进行了修改。如果
服务器端的资源没有修改,就会返回304状态码,告诉浏览器可以
使用缓存中的数据,以减少服务器的数据传输压力。如果数据有
更新就会返回200状态码,服务器就会返回更新后的资源并且将缓
存信息一起返回。
Cookie:
4. HTTP
 Cookie的工作原理:HTTP是一种无状态的协议,服务器无法从连
接上知道用户的身份信息。HTTP就采用给客户发一个通行证的方
法来解决此问题,每个用户发一个,无论哪个用户访问都必须携带
自己的通行证(Cookie),服务器从通行证上确认用户的身份。

 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)

 ISO SGML (Standard General Markup


Language)
 HTML是SGML的子集,由Marc Andreessen
提出。
HTML的不同版本
项目 HTML 1.0 HTML 2.0 HTML 3.0 HTML 4.0 HTML 5.0
超链接 √ √ √ √ √
图像 √ √ √ √ √
列表 √ √ √ √ √
活动地图和图像 √ √ √ √
表单 √ √ √ √
方程式 √ √ √
工具条 √ √ √
表格 √ √ √
访问功能 √ √
对象嵌人 √ √
风格 √ √
样式表 √ √
脚本 √ √
视频和音频 √
内联关量图型 √
XML表示 √
后台线程 √
浏览器存储 √
画曲线 √
HTML Tags(标签)
 HTML文档由Tag+Body组成。
标签 描述
<HTML>…</HTML> 声明网页要用HTML编写
<HEAD>…</HEAD> 页面的标题
<TITLE>…</TITLE> 页面标题(不在页面中显示)
<BODY>…</BODY> 页面正文
<Hn>…</Hn> 页面的n级标题
<B>…</B> 粗体
<I>…</I> 斜体
<UL>…</UL> 定义无序号(项目符号)表
<OL>…</OL> 定义有序号的表
<MENU>…</MENU> 定义由<LI>表项组成的菜单
<LI> 表项的开始
<BR> 换行
<P> 换段
<HR> 水平线
<PRE>…</PRE> 预先格式化的文本;不要重新格式化
<IMG SRC=“…”> 加载一幅图像
<A HREF=“…”>…</A> 定义一个超连接
HTML例子
<HTML>
<TITLE>School of Computer Science and Engineering</TITLE>
<HEAD>欢迎访问东北大学计算机科学与工程学院</HEAD>
<BODY>
<H1>Welcome to CSE Home Page </H1>
<IMG SRC="cse.jpg" ALT="NEU PIC">
<BR><BR>
<B>东北大学</B>计算机科学与工程学院
由<I>四</I>个系,<I>一</I>个教学部和<I>一</I>个实验中心组成.<HR>
<H2>四个系</H2>
<UL>
<LI><A HREF="http://www.cse.neu.edu.cn/2019/1206/c6288a162014/page.htm">计算机工程系
</A>
<LI>计算机科学系
<LI>人工智能系
<LI>通信与电子工程系
</UL>
</BODY>
</HTML>
HTML例子
5.其它与浏览器有关的语言
 XML(Extensible Markup Language,可扩展标记语言):一种与HTML类似
的一种标记语言,其设计宗旨是传输数据,而不是显示数据,而HTML
是为了在浏览器上显示数据。更具体些,XML用于标记电子文件,使其
具有结构性,可用来标记数据、定义数据类型,是一种允许用户对自己
的标记语言进行定义的源语言。XML是一种简单、与平台无关,并被广
泛采用的标准。
 XHTML(Extensible HTML,可扩展超文本标记语言):一种与HTML4.01
几乎相同的标记语言。但XHTML是更严格的HTML版本,是作为一种
XML应用被重新定义的HTML,并将逐渐取代HTML。所有新的浏览器
都支持XHTML。
 CSS(Cascading Style Sheets,层叠样式表):一种样式表语言,用于为
HTML文档定义布局。CSS与HTML的区别就是HTML用于结构化内容,
而CSS用于格式化、结构化内容。例如,在浏览器上显示的字体、颜色、
边距、高度、宽度、背景图像等,都能够给出精确的规定。现在所有的
浏览器都支持CSS。
6. 动态Web网页与交互式网页
 数据动态变化
 在客户端实现动态效果
 在客户端读取用户输入并返回服务端

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浏览器2 Internet Web服务器2

… …
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

You might also like