Chapter 9 应用层 9.1 客户 / 服务器通信模式 9.2 域名系统 (DNS) 9.3 电子邮件 (SMTP) 9.4 万维网 (HTTP) 9.5 文件服务 (FTP) 9.6 远程登录 (TELNET) 9.7 对等应用( P2P )
客户 / 服务器模式( Client/Server)
客户端 服务器端请求服务
服务结果
网络接口
操作系统
( TCP/IP )
服务应用核心服务驱动
网络接口
操作系统
( TCP/IP )
客户应用用户界面
application
transportnetworkdata linkphysical
application
transportnetworkdata linkphysical
request
reply
应用需要什么样的传输层来提供服务呢?
数据丢失 (data loss) 某些应用允许少量的包丢
失,如话音。 某些应用需要 100% 的
可靠传输,如 FTP 等。
实时性 (delay) 某些应用对延时、延时
抖动有严格要求。如实时多媒体业务。
某些则对延时要求比较宽松。如数据传输。
带宽 (Bandwidth) 某些 需要有一定量的带
宽保证(如音、视频) 某些则对带宽没有特定的
要求。
常用应用对传输的要求
应用
文件传输e-mailWeb 网页实时音频 / 视频
存储音频 /视频交互式游戏金融应用
数据丢失
不丢失不丢失不丢失允许丢失允许丢失允许丢失允许丢失不丢失
带宽
弹性弹性弹性音频 : 5Kb-1Mb视频 :10Kb-5Mb同上 几 Kb/s 以上弹性
实时性
无无无100’s msec
few secs100’s msecyes and no
Internet 传输层提供的服务TCP service: connection-oriented: setup
required between client, server reliable transport between
sending and receiving process flow control: sender won’t
overwhelm receiver congestion control: throttle
sender when network overloaded
does not providing: timing, minimum bandwidth guarantees
UDP service: unreliable data
transfer between sending and receiving process
does not provide: connection setup, reliability, flow control, congestion control, timing, or bandwidth guarantee
Q: why bother? Why is there a UDP?
Internet 应用对应的传输层协议
应用
e-mail远程登陆
万维网 (Web) 文件传输
流媒体
远程文件服务器IP 电话
应用层协议
smtp [RFC 821]telnet [RFC 854]http [RFC 2068]ftp [RFC 959]专有协议(e.g. RealNetworks)NSF专有协议(e.g., Vocaltec)
所依赖的传输层协议
TCPTCPTCPTCPTCP or UDP
TCP or UDPtypically UDP
9.2 域名系统 (DNS) 域名是用来标识网络上的主机,它与主机的 IP 地址
相对应,一台主机可以有多个域名。 便于记忆,实现主机名和主机 IP 地址分离 由字符和点号组成,如 if.ustc.edu.cn ,成员名最长不超
过 63 字符,全名不超过 255 字符 名字空间( name space )
所有可能的名字的集合, DNS 采用层次化的名字空间 DNS 实现
Unix/Linux 系统通过 BIND ( Berkeley Internet Name Domain )提供 DNS 服务
报文传输层可采用 TCP 或 UDP 协议,端口号均为 53 号
DNS 域名信息维护 DNS 本质是一个建立在低层传输协议之上的一
个分布式的数据库 采用客户 / 服务器通信模式,客户端执行域名查询
功能的程序或者函数调用叫做解析器( resolver )
为什么不采用集中式域名管理? 早期的 Internet ( ARPANET ),每台主机只需
查找指定的文件( UNIX的 hosts ),就找出主机名字与 IP 地址的对应关系
没有服务器能够保存所有的域名到 IP 地址的映射 无法及时反映网络域名变化,维护开销大
edu
cs
yale
wv
eng
a
根名字服务器域 yale.edu
区域 cs.yale.edu的授权名字服务器
区域yale.edu
区域cs.yale.edu区域 yale.edu
的授权名字服务器
ai
Internet 允许各个组织根据具体情况将本组织内的域划分为若干个区域 (zone) ,并在各区域中设置相应的授权名字服务器。
授权名字服务器
根名字服务保存了所有顶级域名字服务器的 IP 地址
b USC-ISI Marina del Rey, CAl ICANN Marina del Rey, CA
e NASA Mt View, CAf Internet Software C. Palo Alto, CA
i NORDUnet Stockholm
k RIPE London
m WIDE Tokyo
a NSI Herndon, VAc PSInet Herndon, VAd U Maryland College Park, MDg DISA Vienna, VAh ARL Aberdeen, MDj NSI (TBD) Herndon, VA
遍布世界各地的 13个根名字服务器
根名字服务器
资源记录( Resource Record)
名字服务器以资源记录的形式来维护本区域内的域名相关信息
当解析器给名字服务器一个域名,取回的是一个与该域名相对应的资源记录。所以 DNS 系统的实际功能就是把域名映射到一条记录上。
一条资源记录共有 5 个字段: Domain_name , Time_to_live , Type , Class , Val
ue Time_to_live: 生存时间,例如,时间较长的有一天( 8640
0秒),短的有一分钟( 60秒) Type:指出记录的类型(下一页详细解释) Class:对 Internet ,它总是 IN Value:可以是数字、域名或 ASCII 字符,其语义基于记录类型
权威记录(Authoritative Record) 权威记录
来自管理该记录的权威名字服务器,因此总是正确的
例如 eeis.ustc.edu.cn 在 ustc.edu.cn 域所对应的名字服务器所管辖的范围内,因此该名字服务器返回的关于 eeis.ustc.edu.cn 的记录为权威记录
缓存记录 名字服务器缓存来自其它名字服务器的记录,这些
有效期由 TTL 域指定,当 TTL 过期时,该纪录被删除
域名查询类型 递归查询( recursive query): 被请求的名
字服务器如果没有域名所对应的记录,它就会向其它域名服务器查询,并沿着查询的路径逐个返回记录。
迭代查询( iterative query): 本地名字服务器如果没有域名对应的记录,就向更高层次的名字服务器请求,被请求的名字服务器如果也没有该域名对应的记录就会返回一个可供查询的名字服务器地址
迭代查询
flits.cs.vu.nl cs.vu.nl
VU CS name server
edu-server.net
Edu name server
yale.edu
Yale name server
cs.yale.edu
Yale CS name server
1
8
4
5
6
7
2
3originator
例:查询 robot.cs.yale.edu 的 IP 地址
9.3 电子邮件( Email ) 消息交换的协议
发送 email:简单邮件传输协议 SMTP ( Simple Mail Transfer Protocol )
接收 email:邮局协议第 3版 POP3 ( Post Office Protocol version 3 ) , Internet消息访问协议 IMAP ( Internet Message Access Protocol )
消息格式的协议 RFC 822:基本的 ASCII 的文本邮件 多用途 Internet 邮件扩展 MIME ( Multipurpos
e Internet Mail Extensions ): RFC 822 的多媒体扩展
电子邮件的组成
发送方
邮件缓存 接收邮件服务器
用户代理
SMTP
SMTPPOP3
发送邮件服务器
用户代理
用户邮箱接收方
用户代理
用户代理
邮件服务器
邮件服务器
SMTP SMTP POP3(发送邮件 )
(发送邮件 )
(发送邮件)
(发送邮件 ) (读取邮件 )
(读取邮件 )
(TCP 连接 ) (TCP 连接 ) (TCP 连接 )
因特网
用户代理 ( UA: User Agent ):负责邮件的生成与处理,实质上就是一个程序用来阅读、编写、发送邮件,例如 Outlook Express , Foxmail 等。
邮件服务器 /消息传输代理( MTA:Message Transfer Agent ):发送和接收邮件,同时还要向发信人报告邮件传送的情况(已交付、被拒绝、丢失等)
注意:一个邮件服务器既可以作为客户端,也可以作为服务器。 例如,当邮件服务器 A 向另一个邮件服务器 B 发送邮件时,邮件服务器 A 就作为 SMTP 客户,而 B 是 SMTP 服务器。
发送方
邮件缓存 接收方邮件服务器mail.xyz.com
用户代理
发送邮件服务器email.ustc.edu.cn
用户代理
接收方
用户代理
用户代理
邮件服务器
邮件服务器
Internet
(1) 发信人调用用户代理来编辑要发送到 [email protected] 的邮件。用户代理用 SMTP 把邮件传送给预先设置的发送邮件服务器
(发送邮件 )
SMTP
SMTP
(发送邮件 )
(TCP 连接 )
电子邮件发送和接收
发送方
邮件缓存
用户代理用户代理
接收方
用户代理
用户代理
邮件服务器
邮件服务器
Internet
(2) 发送邮件服务器将邮件放入邮件缓存队列中,等待发送。
(发送邮件 )
SMTP
SMTP
(发送邮件 )
(TCP 连接 )
电子邮件发送和接收
接收方邮件服务器mail.xyz.com
发送邮件服务器email.ustc.edu.cn
发送方
邮件缓存
用户代理用户代理
接收方
用户代理
用户代理
邮件服务器
邮件服务器
Internet
(3) 发送邮件服务器的 SMTP 客户进程,发现在有待发送的邮件,向接收方邮件服务器的 SMTP 服务器进程发起 TCP 连接
(发送邮件 )
SMTP
SMTP
(发送邮件 )
(TCP 连接 )
SMTP
SMTP(发送邮件)
(发送邮件 )
(TCP 连接 )
电子邮件发送和接收
接收方邮件服务器mail.xyz.com
发送邮件服务器email.ustc.edu.cn
发送方
邮件缓存 接收端邮件服务器
用户代理 发送端邮件服务器
用户代理
接收方
用户代理
用户代理
邮件服务器
邮件服务器
Internet
(4) TCP 连接建立后, SMTP 客户进程开始向远程的 SMTP 服务器进程发送邮件。当待发送邮件发送完, SMTP 就关闭建立的连接。
(发送邮件 )
SMTP
SMTP
(发送邮件 )
(TCP 连接 )
SMTP
SMTP(发送邮件)
(发送邮件 )
(TCP 连接 )
电子邮件发送和接收
接收方邮件服务器mail.xyz.com
发送邮件服务器email.ustc.edu.cn
发送方
邮件缓存
用户代理用户代理
接收方
用户代理
用户代理
邮件服务器
邮件服务器
Internet
(5) 运行在接收方邮件服务器中的 SMTP 服务器进程收到邮件后,将邮件放入接收方的用户邮箱中,等待接收方在方便时进行读取。
(发送邮件 )
SMTP
SMTP
(发送邮件 )
(TCP 连接 )
SMTP
SMTP(发送邮件)
(发送邮件 )
(TCP 连接 )
电子邮件发送和接收
接收方邮件服务器mail.xyz.com
发送邮件服务器email.ustc.edu.cn
发送方
邮件缓存
用户代理用户代理
接收方
用户代理
用户代理
邮件服务器
邮件服务器
Internet
(6) 接收方在打算收信时,调用用户代理,使用 POP3 (或 IMAP )协议将自己的邮件从接收方邮件服务器的用户邮箱中的取回。
(发送邮件 )
SMTP
SMTP
(发送邮件 )
(TCP 连接 )
SMTP
SMTP(发送邮件)
(发送邮件 )
(TCP 连接 )
POP3
POP3
(读取邮件 )
(读取邮件 )
(TCP 连接 )
电子邮件发送和接收
接收方邮件服务器mail.xyz.com
发送邮件服务器email.ustc.edu.cn
SMTP 通信过程实例
S: 220 hamburger.edu SMTP service ready C: HELO crepes.fr S: 250 Hello crepes.fr, 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 hamburger.edu closing connection
telnet servername 25 see 220 reply from server enter HELO, MAIL, RCPT, DATA, QUIT commands above lets you send email without using email client (reade
r)
telnet servername 25 see 220 reply from server enter HELO, MAIL, RCPT, DATA, QUIT commands above lets you send email without using email client (reade
r)
POP3 邮局协议 POP 是一个非常简单、但功能有限
的邮件读取协议,现在使用的是它的第三个版本 POP3 。
POP 也使用客户 / 服务器的工作方式。 在接收邮件的用户主机中必须运行 POP 客
户端进程,而在用户所连接的邮件服务器中则运行 POP 服务器进程。
POP3 协议一般假设用户从服务器上把邮件存储到本地主机上,同时删除保存在邮件服务器上的邮件。
IMAP IMAP 也是按客户 / 服务器模式工作,现在较新的版本是 IMAP4 。
用户在自己的主机上就可以操纵邮件服务器的邮箱,就像在本地操纵一样。
因此 IMAP 是一个联机协议。当用户主机上的 IMAP 客户程序打开 IMAP 服务器的邮箱时,用户就可看到邮件的头部。若用户需要打开某个邮件,则该邮件才传到用户的计算机上
IMAP 的特点 IMAP 最大的好处就是用户可以在不同的地方使用不同
的计算机随时上网阅读和处理自己的邮件。 IMAP 还允许收信人只读取邮件中的某一个部分。例
如,收到了一个带有视频附件(此文件可能很大)的邮件。为了节省时间,可以先下载邮件的正文部分,待以后有时间再读取或下载这个很长的附件。
IMAP 的缺点是如果用户没有将邮件复制到自己的 PC 机上,则邮件一直是存放在 IMAP 服务器上。因此用户需要经常与 IMAP 服务器建立连接
注意 :用户代理向发送邮件服务器发送邮件,以及发送邮件服务器向接收邮件服务器发送邮件,都是使用 SMTP 协议。 而 POP 协议或 IMAP 协议则是接收方从接收方邮件服务器上读取邮件所使用的协议
消息格式 : RFC 822 消息由信封( RFC 821 中描述)、一些头域、一个空行和消息体组成
RFC 822只规定了头域格式,而对消息体部分则让用户自由撰写。
用户代理将消息传输到邮件服务器后,邮件服务器利用某些头域来构造出实际的信封
头域包括一些关键字,后面加上冒号
常用的邮件消息头域 “To:”后面填入一个或多个收信人的电子邮
件地址 “Subject:”是邮件的主题。它反映了邮件
的主要内容,便于用户查找邮件 抄送“ Cc:” 表示应给某某人发送一个邮件副
本 “From:”和“ Date:” 表示发信人的电
子邮件地址和发信日期。 “Reply-To:”是对方回信所用的地址。
9.4 万维网 万维网 (World Wide Web,也称为WWW)起源于 1989年欧洲粒子物理研究所,由庞大的、分布在世界各地的 web页面的集合组成, web页面的编写采用 HTML(HyperText Markup Language) 语言,它采用 HTTP ( HyperText Transfer Protocol )协议, 页面通过浏览器( browser )来观看
万维网可以看作是分布式超媒体 (hypermedia) 系统,它是超文本 (hypertext) 系统的扩充
一个超文本由多个文本页面链接( link )成。利用一个链接可使用户找到另一个文本页面。超文本是万维网的基础。
超媒体与超文本的区别是页面内容不同。超文本页面仅包含文本信息,而超媒体页面还包含其他表示方式的信息,如图形、图像、声音、动画、视频等。
使用超链接( hyperlink )技术,用户可以访问一个又一个页面
超链接( Hyperlink )
Web 服务器 A
Web 服务器 C
Web 服务器 EWeb 服务器 D
Web 服务器 B
链接到
链接到链接到 链接
到链接到
链接到
③
⑥
①② ④
⑤
超链接是链接到其它页面的文本字符串,通过超链接,用户可以访问一个又一个的页面
如何命名分布在整个 Internet上的 web页面? 使用统一资源定位符 URL (Uniform Re
source Locator) 来命名万维网上的各种 web页面
每个页面在整个 Internet 的范围内具有惟一的标识符 URL
统一资源定位符 URL URL 是对可以从 Internet 上得到的资源的位置和访问方法的一种简洁的表示
URL 给资源的位置提供一种抽象的识别方法,并用这种方法给资源定位。只要能够对资源定位,系统就可以对资源进行各种操作,如存取、更新、替换和查找其属性等
URL 相当于一个文件名在网络范围的扩展。因此 URL 是与 Internet 相连的主机上的任何可访问对象的一个指针
URL 的一般形式由协议、主机域名、路径及文件名三部分组成,并且在 UR
L 中的字符对大写或小写没有要求。URL 的一般形式是:
< 协议 >://< 主机域名 >:< 端口 >/<路径及文件名 >
ftp —— 文件传输协议 FTP
http —— 超文本传送协议 HTTP
mailto —— 发送电子邮件
HTTP 的 URL• HTTP 的 URL 的一般形式
http://abc.com:8080/tech/index.htm
路径及文件名,若省略,则 URL 指向某个名为 index.html 的缺省页面
例如: http://www.ustc.edu.cn/index.html
= http://www.ustc.edu.cn/
超文本传输协议 HTTP
• 采用 TCP 协议, 80 端口• HTTP 是万维网上能够可靠地交换文件
(包括文本、声音、图像等各种多媒体文件)的重要基础
• 工作在客户 / 服务器模式,指定客户可以向服务器发送什么样的消息,并且得到什么样的响应消息
HTTP消息传输过程
Internet
web 服务器链接到 URL 的超链接
HTTP 使用此 TCP 连接
浏览器 程序
服务器 程序HTTP
客户
建立 TCP 连接
释放 TCP 连接
HTTP 响应消息② 响应页面
HTTP 请求消息① 请求页面
Trying out http (client side) for yourself
1. Telnet to your favorite Web server:Opens TCP connection to port 80(default http server port) at www.ustc.edu.cn
telnet www.ustc.edu.cn 80
2. Type in a GET http request:
GET /ch/index.php By typing this, you sendthis minimal (but complete) GET request to http server
3. Look at response message sent by http server!
万维网工作过程 用户在浏览器的地址栏键入 URL ,或者点击某
个超链接所对应的 URL 浏览器分析 URL 的主机域名,通过 DNS 系统找到资源所在的主机即 web服务器的 IP 地址
浏览器与 web服务器的 80 端口建立 TCP连接 向web服务器发出 HTTP请求消息,要求获得
某个页面 服务器服务器通过 HTTP 响应消息传送页面 TCP连接被释放 浏览器在本机上显示页面。
HTTP请求消息
方 法 URL 版 本头部字段名
头部行: 值
头部字段名 值
:
…
消息主体
请求行
空格 回车换行
:
CRLF
CRLF
CRLF
CRLF
消息由三个部分组成,即开始行、头部行和消息主体。在请求消息中,开始行就是请求行。
开始行
HTTP请求消息
方 法 URL 版 本头部字段名
头部行: 值
头部字段名 值
:
…
消息主体(通常不用)
请求行
空格 回车换行
:
CRLF
CRLF
CRLF
CRLF
“方法”就是对所请求的对象进行的操作,方法实际上也就是一些命令。因此,请求消息的类型是由它所采用的方法决定的。
开始行
请求消息的方法方法(操作) 意义
OPTION 查询特定选项GET 请求读取一个 web 页面HEAD 请求读取由一个 web 页面的头部POST 给服务器添加信息(例如,注释)PUT 请求存储一个 web 页面DELETE 删除 web 页面TRACE 送回收到的请求
HTTP请求消息
方 法 URL 版 本头部字段名
头部行: 值
头部字段名 值
:
…
消息主体(通常不用)
请求行
空格 回车换行
:
CRLF
CRLF
CRLF
CRLF
“URL”是所请求的页面的 URL 。“版本”是 HTTP 的版本。
开始行
HTTP 响应消息
版 本 状态码 短 语头部字段名
头部行: 值
头部字段名 值
:
…
消息主体
状态行
空格 回车换行
:
CRLF
CRLF
CRLF
CRLF
响应消息的开始行是状态行。状态行包括三项内容,即 HTTP 的版本,状态码,以及解释状态码的简单短语。
开始行
响应消息的状态码 1xx 表示通知信息,如服务器同意处理客户请
求( 100 ) 2xx 表示成功,如请求成功( 200 )或没有内容存在( 204 )
3xx 表示重定向,如页面移动( 301 )或者缓存的页面仍然有效( 304 )
4xx 表示客户错误,例如禁止页面( 403 )或者页面没有找到( 404 )
5xx 表示服务器错误,如服务器内部错误( 500 )或者以后再试( 503 )
超文本标记语言 HTML HTML 允许在页面中包含文本、图像和指向其它 web页面的超链接等
HTML 中的 Markup 的意思就是“设置标记”,定义了许多用于格式化的显示命令(标记或者标签)
浏览器按照 HTML 页面中的各种标签,以及浏览器所使用的显示器的尺寸和分辨率,对页面重新格式化显示出来
HTML 页面实例<HTML>
<HEAD>
<TITLE> 一个 HTML 的例子 </TITLE>
</HEAD>
<BODY>
<H1>HTML 很容易掌握 </H1>
<P>这是第一个段落。 </P>
</BODY>
</HTML>
页面开始头部开始
标题
头部结束
主体开始
主体结束
页面结束
1 级标题
段落
页面中插入图像
<IMG SRC=portrait.gif HEIGHT=100 WIDTH=65>
结束标签开始标签
插入图像
插入的图像文件名是 portrait.gif
高度是 100 像素
宽度是 65 像素
9.5 文件服务 (FTP) FTP: File Transfer Protocol , RFC959 目的:文件传送(上载或下载)
file transfer FTPserver
FTPuser
interface
FTPclient
local filesystem
remote filesystem
user at host
FTP Model
Server PIServer PI
FileFileSystemSystem
User InterfaceUser Interface
User PIUser PI
UserUser
User DTPUser DTPServer DTPServer DTPFileFileSystemSystem
DataData
ControlControl
PI: Protocol InterpreterPI: Protocol InterpreterDTP: Data Transfer ProtocolDTP: Data Transfer Protocol
PI: Protocol InterpreterPI: Protocol InterpreterDTP: Data Transfer ProtocolDTP: Data Transfer Protocol
TCP 20
TCP 21
控制连接和数据连接 FTP 客户端和服务器建立连接后,控制连接一直保持,而数据连接根据文件传输需要建立,传输结束后就关闭
使用两个连接的好处 协议简单而且实现更加容易 ----来自文件的数据和
FTP 命令不会混淆 控制连接能够在传输过程中使用 ---- 例如用户可以发送一个命令请求取消传输
文件结束条件能够用来通知另一方所有数据传输完毕
ftp commands, responsesSample commands: sent as ASCII text over
control channel ftp 202.38.75.79 USER username
anonymous PASS password LS return list of file in
current directory get filename put filename help
Sample return codes status code and phase
(as in http) 331 Username OK,
password required 125 data connection
already open; transfer starting
425 Can’t open data connection
452 Error writing file
LS 命令的执行结果通过数据连接返回客户端
NVTNVT NVTNVT
ServerServerProcessProcess
TCPTCP TCPTCP
TCP连接, 23 端口NVT: Network Vi
rtual Terminal
语言不通
翻译
9.6 远程登录 (TELNET) 提供本地用户访问远程资源
RFC 854 由于不同厂商的计算机终端系统存在不同的字符标记系统,
TELNET 提供了一种专门的键盘定义,称为网络虚拟终端(NVT) 。
网络虚拟终端格式 客户端把用户的键盘输入和命令转换成 NVT
格式,并送交服务器 服务器把收到的数据和命令,从 NVT 格式转换成远地系统所需的格式
向客户端返回数据时,服务器把远地系统的格式转换为 NVT 格式,客户端再从 NVT 格式转换到本地系统所需的格式。
在 NVT 上传输的数据采用 8bit 字节数据,其中最高位为 0 的字节是一般数据,最高位为 1的字节,是用于 NVT 命令。
P2P 应用实例— BitTorrent BitTorrent (BT) 是一个用于文件共享的 P2P
通信协议,最初在 2001年 4 月提出,第一个实现在 2001年 7 月发表
有许多兼容 BT 协议的客户端软件,例如 BitComet 、 KTorrent 等
BT 协议的基本原理是初始发布者将文件划分为数据块分散到各个接收端,各个接收端可以从其它接收端下载自己想要的数据块,而不仅仅是初始发布者,因此减少了任何给定数据源的负担和开销,并且提供了一定的冗余度
BitTorrent 元素 BT 客户端为实现 BT 协议的任何程序,任何客户端都能够在
网络上准备、请求和传输任何类型文件 Peer 为运行 BT 客户端程序的主机,为了共享一个文件, pe
er将文件看作相同大小的数据块,通常为 64kB到 1MB ,并且使用 hash算法每个数据块计算校验和,然后将这些信息包含在一个 torrent 文件中。提供完整文件的 peer被称为 seeder ,而提供初始文件拷贝的 peer称为初始 seeder
torrent 文件的后缀为 .torrent ,具体信息依赖于 BT 协议的版本,该文件包含了一个“ announce”分区,指定 Tracker 的 URL ,和一个“ info”分区,包含了文件的名字、长度、数据块使用的长度,以及每个数据块的校验和,完整的 Torrent 文件通常发布在 web网站上,并且向 Tracker注册
Tracker 是协助文件散发的主机, Tracker 维护了一个当前参与文件下载的 peer列表,以及每个 peer 所拥有的文件数据块信息
BitTorrent 文件下载 Peer访问web获取感兴趣的 Torrent 文件,并且用 BT 客
户端打开 BT 客户端连接到 Torrent 文件中指定的 Tracker ,从 Trac
ker处获取正在传输 Torrent 文件中所指定数据块的 peer列表,客户端连接到这些 peer 来获取不同的数据块
相互连接来共享一个文件的 peer 组称为 swarm ,如果 swarm 中只包含初始 seeder ,那么客户端直接连接到该 seeder ,并且请求数据块。随着 peer加入 swarm ,它们之间开始交换数据块,而不是直接从 seeder下载
数据交换的效率依赖于客户端发送数据的策略。客户端使用Tit for Tat 策略,即趋向于往自己发送数据的 peer发送数据。为了避免出现两个没有交换过数据块的 peer 之间出现死锁,引入“ optimistic unlocking”机制,即客户端保留一部分可用带宽向随机选择的 peer发送数据
BiTorrent 文件下载实例
说明:不同颜色的块代表不同的文件块。在初始 seeder将文件块发送到其它 peer 以后, peer 之间交换各自所没有的文件块,从而获取整个文件拷贝。因此初始 seeder只需发送一份文件的拷贝
初始 seeder