【计网】第二章应用层笔记
FTP(文件传输协议)
本地用户从远程主机上传或下载文件
- 用于从一台主机到另一台主机传送文件的协议
- 用户通过一个FTP代理与FTP服务器进行交互
文件传输过程
- 建立TCP连接: 用户提供远程主机的主机名或者IP地址。在FTP客户机进程与FTP服务器进程之间建立。
- 身份验证:输入用户名和口令(明文),向FTP服务器传送
- 服务器验证成功:进行文件传送(双向)
- 将本地文件系统中的文件传送到远程文件系统(上传)
- 或从远程文件系统中获得文件(下载)
 
FTP的连接
FTP使用了两个并行的TCP连接:控制连接、数据连接
- 控制连接:
- 端口:21
- 用于在两个主机之间传输控制信息,如用户名、口令;上传或下载命令
- 控制连接由客户机发起,建立后一直保持(持久)
 
- 数据连接:
- 端口:20
- 用于准确传输文件
- 数据连接由服务器发起,每个数据连接只传输一个文件,每个文件的传输都要建立和释放数据连接(非持久)
 
FTP与HTTP协议的区别
- 
- FTP的控制信息是带外传输(out-of-band),数据信息是带内传输(in-band),使用分离的控制连接
- HTTP的控制信息是带内传输,请求和响应都是在传输文件的TCP连接中发送
 
- 
- FTP协议是有状态的,FTP会对每个活动的用户会话状态进行追踪和保留,并且限制同时会话的总数
- HTTP协议是无状态的,不对用户状态进行追踪
 
FTP的命令与响应
命令
经控制信道以ASCII文本发送
| 命令 | 作用 | 
|---|---|
| USER username | |
| PASS password | |
| LIST | 返回当前目录中的文件列表 | 
| RETR filename | 获取(get)文件 | 
| STOR filename | 存储(puts)文件到主机 | 
返回码
| 状态码 | 短语 | 
|---|---|
| 331 | username ok, password required | 
| 125 | data connection already open; transfer starting | 
| 425 | can't open data connection | 
| 452 | error writing file | 
电子邮件
因特网电子邮件系统的总体结构
- 用户代理
- 邮件服务器:发送报文队列和提供接收邮箱
- 简单邮件传输协议SMTP
用户代理(user agent)
邮件阅读器。允许用户阅读、回复、发送、保存和撰写报文。
发邮件
用户代理向其邮件服务器发送邮件,邮件服务器将邮件存放在发送队列中
收邮件
用户代理从其邮件服务器中获取邮件报文
种类
outlook、foxmail等
邮件服务器(mail server)
- 邮箱:发送给用户的报文
- 发送队列:用户要发出的邮件报文
简单邮件传输协议SMTP
从发送方的邮件服务器发送邮件到接收方的邮件服务器
说明
- 端口号:25
- 应用层协议
- 使用TCP可靠数据传输服务
- 包含
- 客户机端:在发送方的邮件服务器上运行
- 服务器端:在接收方的邮件服务器上运行
 
- 每个邮件服务器上都有SMTP的客户机端和服务器端
- SMTP不使用中间邮件服务器发送邮件,即TCP连接是从发送方到接收方的直接相连
- 如果接收方的邮件服务器没有开机,该邮件仍会保留在发送方的邮件服务器上,并将在以后再次传送
- 邮件不会在某个中间邮件服务器停留
邮件发送与接收过程
- Alice启动用户代理,提供接收方邮件地址,写邮件
- 用户代理把报文发给邮件服务器(SMTP),邮件服务器将报文放在发送队列
- SMTP的客户机创建与Bob的邮件服务器的TCP连接
- SMTP通过TCP连接(SMTP)发送报文
- Bob的邮件服务器接收报文并将其放入Bob的邮箱
- Bob调用其用户代理来拉取(POP3/IMAP/HTTP)和阅读报文
简化
三跳:前两跳是推,最后一跳是拉
- 发送方用户代理用SMTP将邮件推入发送方邮件服务器
- 发送方邮件服务器用SMTP将邮件转发到接收方的邮件服务器
- 接收方用户代理通过邮件访问协议从接收方邮件服务器拉取邮件
邮件报文格式
- 首部行
- To:
- From:
- Subject:
 
- 主体
- 报文均为ASCII字符
 
与HTTP共同点
- 都用于从一台主机向另一台主机传送文件
- 持久http与smtp都使用持久连接
与HTTP区别
- HTTP是拉(PULL)协议
- 用户使用HTTP从服务器拉取信息
- TCP连接是由要获取文件的机器发起
 
- SMTP是推(PUSH)协议
- 发送方邮件服务器把文件推向接收方邮件服务器
- TCP连接是由要发送文件的机器发起
 
- SMTP使用7位ASCII码格式,HTTP数据没有该限制
- 对于按照非7位ASCII字符的报文或二进制数据(如图片、声音),需要按照7位ASCII码编码(MIME),再传送
- 在接收方需要解码还原为原有报文
 
- 对含有文本和图形(或其他媒体类型)的文档
- HTTP把每个对象封装在它自己的HTTP响应报文中
- SMTP把所有对象封装在一个报文中
 
MIME(多用途因特网邮件扩展)
- SMTP
- 只能传送7位ASCII码文件
- 不能直接传送可执行文件或其他二进制对象
 
- MIME:用于非ASCII数据传输
- 定义了传送非ASCII文件(如图片、声音)的编码规范,将非ASCII文件作为“附件”发送
- 将非ASCII数据编码后传输,接收方再解码还原
- 附加MIME邮件首部
- 说明采用何种编码(常用base64)
 
- MIME只是SMTP的扩展,不能代替SMTP
 
首部
- Content-Transfer-Encoding: 告知接收方用户代理,报文使用了ASCII编码以及编码类型,接收方可以以此还原成非ASCII码
- base64编码:将二进制文件转换为非ASCII码格式
- 可打印内容转换编码:将一个8位ASCII码报文转换成7位ASCII码格式
 
- Content-Type: 告知接收方用户代理报文类型及应采取的动作
- 如jpeg:要对jpeg解压缩
 
邮件访问协议
- 用于用户代理从邮件服务器上拉取邮件
- 种类
- POP3:第三版邮局协议
- IMAP:因特网邮件访问协议
- HTTP
 
POP3
- 端口:110
- 简单,功能有限
- 无状态
- 服务器通过监听端口110侦测TCP请求,与客户机建立TCP连接
会话过程
- 特许阶段:用户代理发送用户名和口令获得下载邮件的特许(身份认证)
- 事务处理阶段:用户代理取回报文,可以对邮件进行一些操作,如下载并保留、下载并删除等
- 更新阶段:邮件服务器删除带有删除标记的报文,结束POP会话
IMAP
- 功能强
- 有状态
- 实现复杂
- 在客户机上运行IMAP客户程序,并于邮件服务器上的IMAP服务器程序建立TCP连接
- 用户在本地主机上就可以操作邮件服务器上的邮箱,就像在本地操纵一样,是一个联机协议,如建立文件夹、查询、移动邮件等
- 未发出删除命令前,邮件一直保存在邮件服务器
基于WEB的电子邮件
- 用户使用浏览器收发电子邮件
- 用户代理是普通浏览器,用户与远程邮箱之间的通信通过HTTP进行:
- 发件人使用HTTP将电子邮件从浏览器发送到其邮件服务器上
- 收件人使用HTTP从邮箱中拉取一个报文到浏览器
 
- 邮件服务器之间发送和接受邮件时使用SMTP
- 用户可以在远程服务器上以层次的方式组织报文,如Hotmail、Yahoo等
DNS(域名系统)
- 端口:53
- 运行在UDP上
- 用户间接使用
- 直接由其他应用层协议(如http、smtp等)使用,以将用户提供的主机地址转换为ip地址
- 树状,根->顶级域(com、net、edu等)->一级域(edu.cn)->二级域(lcu.edu.cn)->······
- 域是逻辑上的域,不是物理上的域
- 一个域的主机可以是不同地区的主机
- 不同域的主机可以是相同地区的主机
 
- 采用C/S方式
组成
- 由分层的DNS服务器实现的分布式数据库
- 根DNS服务器:13个,提供TLD服务器的IP地址
- 顶级域DNS服务器(TLD服务器):维护每个顶级域(如com、org、edu)和所有国家的顶级域(如cn、us),TLD服务器提供权威服务器的IP地址
- 权威DNS服务器:存储域内的DNS记录的服务器
- 本地DNS服务器(localDNSserver)
 
- 使得主机能够查询分布式数据库的应用层协议
DNS服务器
运行BIND软件的UNIX机器
域名A记录解析过程
- 用户主机运行DNS客户机端
- 浏览器从URL中解析出主机地址,传给DNS客户机端
- DNS客户机端向DNS服务器发送一个包含主机名的请求
- DNS客户机收到含有对应主机名的IP地址的应答报文
DNS查询方式
- 递归查询(recursive query) 
- 迭代查询(iterative query) 
DNS提供的服务
- 域名=>ip地址
- 主机别名=>主机规范名
- 邮件服务器别名=>邮件服务器规范名
- 负载分配
DNS记录
(Name, Value, Type, TTL, Class)
- TTL是该记录的生存时间,它决定当前记录从缓冲中删除的时间
- Type
- A: 主机名=>IP地址,name=主机名,value=ip地址
- NS:域名=>权威DNS服务器的主机名,name=域名,value=该域的权威DNS服务器的主机名
- CNAME:主机别名=>规范主机名,name=主机别名,value=主机别名对应的规范主机名
- MX:邮件服务器别名=>邮件服务器规范主机名,name=邮件服务器别名,value=邮件服务器的规范主机名
 
P2P(peer to peer)
P2P应用
位于网络边缘的PC机(对等方peer)之间可以直接获取对象
- P2P文件共享
- P2P文件分发
- P2P互联网电话
P2P文件分发
Us:服务器接入链路上载速率
di:第i对等方接入链路的下载速率
F:被分发的文件长度
- C/S模式
- 分发时间Dcs=max{\(\frac{NF}{U_s}\),\(\frac{F}{d_{min}}\)}
- 服务器向对等方发送文件副本,负担重
 
- P2P模式
- 分发时间Dcs=max{\(\frac{F}{U_s}\),\(\frac{F}{d_{min}}\),\(\frac{NF}{U_s+\sum\limits_{i=1}^Nu_i}\)}
- 每个对等方都可以重新分发文件的所有部分,协助服务器分发
- 每个对等方下载同时上载
 
P2P文件共享
对等方之间共享文件
过程
- Alice在PC机上运行P2P软件
- 通过ADSL间歇的加入互联网(无固定IP)
- 通过应用软件搜索一首MP3
- 显示一张有该首歌曲的对等方列表
- 所有在线对等方,且对等方愿意共享该首音乐的拷贝
- 对等方是普通pc,是互联网用户
- 提供一些附加信息,如接入带宽和下载时间
 
- Alice选择一个对等方Bob并向其请求MP3文件
- 两个用户之间建立一个直接TCP连接
- MP3文件从Bob的pc机向Alice的PC机发送
- 下载期间若偶然断开,可从其他对等方下载
 
内容组织与搜索定位
集中式目录
- 目录服务器:提供目录服务,搜集可共享的对象,建立集中式的动态数据库
- 源于Napster公司设计
- 属于C/S与P2P混合结构
主要工作
- 通知:对等方启动时,将其IP地址与可共享的内容告知目录服务器
- 查询内容:用户查询所需要的内容,获得可共享的用户列表
- 获取内容:Alice从Bob获取需要的文件
- 更新:当对等方获得新对象或删除对象时通知目录服务器
问题
- 单点故障:中央服务器可能发生故障
- 性能瓶颈:中央服务器负担重
- 侵犯版权:内容分发无法管理
- 可靠性:文件传输是分散的,但定位内容的过程是高度集中的
完全分布式
- 建立在Gnutella协议基础上:一个公共域文件共享协议
- 全分布方式:无中心服务器
- 许多Gnutella客户机实现协议
实现
- 对等方先形成一个抽象的逻辑网络(覆盖网络Overlay)
- 两点相连
 
- 通过洪泛(flooding)查询找到所需对象
- Alice想要一个对象
- 询问所有的邻居谁有该对象
- 邻居继续询问邻居的邻居谁有该对象
- 邻居返回拥有该对象的用户Bob
- Alice直接与Bob相连(逻辑上的直接相连)
- Alice接收Bob传来的文件
 
对等方Alice加入overlay的方法
- 对等方Alice先发现已在覆盖网络的对等方
- 维持一张经常开机的对等方的列表
- 联系持有该列表的跟踪站点
 
- Alice试图与列表上的对等方建立TCP连接,直到与对等方Bob建立连接
- Alice向Bob发出Ping报文,Bob向邻居转发Ping报文
- 所有收到Ping报文的对等方用Pong报文响应Alice(包括IP地址及、共享文件等)
- Alice收到多个Pong报文,知道多个对等方地址
- Alice与其中的某些对等方建立TCP连接,即创建多个边
特点
- 设计简单
- 扩展性差
- 查询报文会在网络中产生很大的流量
限范围的洪泛查询
- 给查询报文设置一个TTL,传递设定的次数后自动丢弃
- 对等方记录是否已进行过该查询
层次覆盖
- 与Gnutella类似,无专用服务器,但对等方地位不相等,如KaZaA
实现
- 对等方先形成一个层次的覆盖网络
- 对等方根据通信关系形成层次结构
- 每组包含若干组员,一个组长
- 组长追踪其所有子节点上的内容
- 组员与其组长有一个TCP连接,将共享内容告诉组长
- 组长维护一个数据库,包括该组的共享内容及相关对等方的地址
- 相关组长之间建立TCP连接
 
 
- 通过查询,找到所需对象
- 组长用本组含有该对象的对等方列表响应
- 组长与其他组长联系,请他们向该对等方发送含有该对象的对等方列表
 
特点
- 
层次覆盖网络 
- 
查询流量不大 
- 
设计技巧 - 请求排队:限制并行上载数量
- 激励优先权:上载文件比下载文件多的用户优先
- 并行下载:从多个多等方请求下载同一文件的不同部分
 
BT(BitTorrent)协议
- Torrent:洪流。参与一个文件对象分发的所有对等方的集合
- 一个洪流中,对等方彼此下载等长度的文件块
- 一个对等放最初加入洪流时,没有文件块,之后会积累越来越多
- 下载文件块的同时,也为其他Torrent上载文件块
- 对等方可以在获得整个文件后离开,有可以留下来继续提供上载
- 对等方可以在任何时候加入或离开洪流
- 提供优质服务的对等方将会提高在其他对等方的上载优先级,可以获得更高的下载速度,反之下载速度将会下降
- 每个洪流都有一个基础设施节点,称为追踪器(tracker)。当一个对等方加入洪流时,它向tracker注册自己
加入洪流与在洪流中上载和下载的过程
- 当一个新的对等方Alice加入一个洪流时,tracker随机的选择对等方的一个子集,并将这些对等方的IP地址发送给Alice
- Alice拿到对等方列表,尝试与列表上的对等方建立TCP连接,并一些对等方(邻近对等方)成功建立连接
- Alice周期性的询问每个邻近对等方他们所拥有的块列表(bitmap),有了这些信息他将会对他当前还没有的块发出请求(TCP)
- Alice请求块的过程中使用最稀缺优先(rarest first)技术,即优先请求在邻居中最稀缺的块,从而让稀缺的块更为迅速的重新分发,目标是均衡每个块在洪流中的副本数量
- 下载完成所有的块后,将其组装还原为一个完整的文件
- Alice在提供数据时每个周期选择最合适的4个邻居(疏通),并向他们发送块
- 一般三个周期为一个大周期
- 前两个周期选择为它提供优质下载速度的邻居(优先级高)
- 最后一个周期随机选择邻居
- 这种方式被称为“一报还一报”
 
P2P因特网电话
- Skype
- 引用广泛
- PC到PC、PC到电话、电话到PC的服务
- PC到PC的视频会议服务
- 属于即时通信IM(Instant Messaging)
 
混合模式
- 集中式和分布式相结合
- 边缘节点(普通节点SC)和超级节点SN直接采用集中式结构
- 超级节点之间采用分布式结构
- 注册服务器:负责客户端的注册、存储用户名密码、登陆时身份认证
工作原理
- 用户启动Skype
- 连接到其SN
- 通过SN进行身份认证,广播其在线信息
- 查找用户:使用全球索引(Global Index GI)技术,返回地址
- 双方直接通过TCP连接通讯

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号