【计网】第二章应用层笔记

FTP(文件传输协议)

本地用户从远程主机上传下载文件

  1. 用于从一台主机到另一台主机传送文件的协议
  2. 用户通过一个FTP代理与FTP服务器进行交互

文件传输过程

  1. 建立TCP连接: 用户提供远程主机的主机名或者IP地址。在FTP客户机进程与FTP服务器进程之间建立。
  2. 身份验证:输入用户名和口令(明文),向FTP服务器传送
  3. 服务器验证成功:进行文件传送(双向)
    • 将本地文件系统中的文件传送到远程文件系统(上传)
    • 或从远程文件系统中获得文件(下载)

FTP的连接

FTP使用了两个并行的TCP连接:控制连接、数据连接

  • 控制连接:
    • 端口:21
    • 用于在两个主机之间传输控制信息,如用户名、口令;上传或下载命令
    • 控制连接由客户机发起,建立后一直保持(持久)
  • 数据连接:
    • 端口:20
    • 用于准确传输文件
    • 数据连接由服务器发起,每个数据连接只传输一个文件,每个文件的传输都要建立和释放数据连接(非持久)

FTP与HTTP协议的区别

    1. FTP的控制信息是带外传输(out-of-band),数据信息是带内传输(in-band),使用分离的控制连接
    2. HTTP的控制信息是带内传输,请求和响应都是在传输文件的TCP连接中发送
    1. FTP协议是有状态的,FTP会对每个活动的用户会话状态进行追踪和保留,并且限制同时会话的总数
    2. 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

电子邮件

因特网电子邮件系统的总体结构

  1. 用户代理
  2. 邮件服务器:发送报文队列和提供接收邮箱
  3. 简单邮件传输协议SMTP

用户代理(user agent)

邮件阅读器。允许用户阅读、回复、发送、保存和撰写报文。

发邮件

用户代理向其邮件服务器发送邮件,邮件服务器将邮件存放在发送队列中

收邮件

用户代理从其邮件服务器中获取邮件报文

种类

outlook、foxmail等

邮件服务器(mail server)

  • 邮箱:发送给用户的报文
  • 发送队列:用户要发出的邮件报文

简单邮件传输协议SMTP

从发送方的邮件服务器发送邮件到接收方的邮件服务器

说明

  • 端口号:25
  • 应用层协议
  • 使用TCP可靠数据传输服务
  • 包含
    1. 客户机端:在发送方的邮件服务器上运行
    2. 服务器端:在接收方的邮件服务器上运行
  • 每个邮件服务器上都有SMTP的客户机端和服务器端
  • SMTP不使用中间邮件服务器发送邮件,即TCP连接是从发送方到接收方的直接相连
  • 如果接收方的邮件服务器没有开机,该邮件仍会保留在发送方的邮件服务器上,并将在以后再次传送
  • 邮件不会在某个中间邮件服务器停留

邮件发送与接收过程

  1. Alice启动用户代理,提供接收方邮件地址,写邮件
  2. 用户代理把报文发给邮件服务器(SMTP),邮件服务器将报文放在发送队列
  3. SMTP的客户机创建与Bob的邮件服务器的TCP连接
  4. SMTP通过TCP连接(SMTP)发送报文
  5. Bob的邮件服务器接收报文并将其放入Bob的邮箱
  6. Bob调用其用户代理来拉取(POP3/IMAP/HTTP)和阅读报文
简化

三跳:前两跳是推,最后一跳是拉

  1. 发送方用户代理用SMTP将邮件推入发送方邮件服务器
  2. 发送方邮件服务器用SMTP将邮件转发到接收方的邮件服务器
  3. 接收方用户代理通过邮件访问协议从接收方邮件服务器拉取邮件

邮件报文格式

  • 首部行
    • 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连接
会话过程
  1. 特许阶段:用户代理发送用户名和口令获得下载邮件的特许(身份认证)
  2. 事务处理阶段:用户代理取回报文,可以对邮件进行一些操作,如下载并保留、下载并删除等
  3. 更新阶段:邮件服务器删除带有删除标记的报文,结束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记录解析过程

  1. 用户主机运行DNS客户机端
  2. 浏览器从URL中解析出主机地址,传给DNS客户机端
  3. DNS客户机端向DNS服务器发送一个包含主机名的请求
  4. DNS客户机收到含有对应主机名的IP地址的应答报文

DNS查询方式

  • 递归查询(recursive query)image-20230506201856022
  • 迭代查询(iterative query)image-20230506202041967

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文件共享

对等方之间共享文件

过程

  1. Alice在PC机上运行P2P软件
  2. 通过ADSL间歇的加入互联网(无固定IP)
  3. 通过应用软件搜索一首MP3
  4. 显示一张有该首歌曲的对等方列表
    • 所有在线对等方,且对等方愿意共享该首音乐的拷贝
    • 对等方是普通pc,是互联网用户
    • 提供一些附加信息,如接入带宽和下载时间
  5. Alice选择一个对等方Bob并向其请求MP3文件
    • 两个用户之间建立一个直接TCP连接
    • MP3文件从Bob的pc机向Alice的PC机发送
    • 下载期间若偶然断开,可从其他对等方下载

内容组织与搜索定位

集中式目录

  • 目录服务器:提供目录服务,搜集可共享的对象,建立集中式的动态数据库
  • 源于Napster公司设计
  • 属于C/S与P2P混合结构
主要工作
  • 通知:对等方启动时,将其IP地址与可共享的内容告知目录服务器
  • 查询内容:用户查询所需要的内容,获得可共享的用户列表
  • 获取内容:Alice从Bob获取需要的文件
  • 更新:当对等方获得新对象或删除对象时通知目录服务器
问题
  • 单点故障:中央服务器可能发生故障
  • 性能瓶颈:中央服务器负担重
  • 侵犯版权:内容分发无法管理
  • 可靠性:文件传输是分散的,但定位内容的过程是高度集中的

完全分布式

  • 建立在Gnutella协议基础上:一个公共域文件共享协议
  • 全分布方式:无中心服务器
  • 许多Gnutella客户机实现协议
实现
  1. 对等方先形成一个抽象的逻辑网络(覆盖网络Overlay)
    • 两点相连
  2. 通过洪泛(flooding)查询找到所需对象
    1. Alice想要一个对象
    2. 询问所有的邻居谁有该对象
    3. 邻居继续询问邻居的邻居谁有该对象
    4. 邻居返回拥有该对象的用户Bob
    5. Alice直接与Bob相连(逻辑上的直接相连)
    6. Alice接收Bob传来的文件
对等方Alice加入overlay的方法
  1. 对等方Alice先发现已在覆盖网络的对等方
    • 维持一张经常开机的对等方的列表
    • 联系持有该列表的跟踪站点
  2. Alice试图与列表上的对等方建立TCP连接,直到与对等方Bob建立连接
  3. Alice向Bob发出Ping报文,Bob向邻居转发Ping报文
  4. 所有收到Ping报文的对等方用Pong报文响应Alice(包括IP地址及、共享文件等)
  5. Alice收到多个Pong报文,知道多个对等方地址
  6. Alice与其中的某些对等方建立TCP连接,即创建多个边
特点
  • 设计简单
  • 扩展性差
  • 查询报文会在网络中产生很大的流量
限范围的洪泛查询
  • 给查询报文设置一个TTL,传递设定的次数后自动丢弃
  • 对等方记录是否已进行过该查询

层次覆盖

  • 与Gnutella类似,无专用服务器,但对等方地位不相等,如KaZaA
实现
  1. 对等方先形成一个层次的覆盖网络
    • 对等方根据通信关系形成层次结构
    • 每组包含若干组员,一个组长
    • 组长追踪其所有子节点上的内容
      • 组员与其组长有一个TCP连接,将共享内容告诉组长
      • 组长维护一个数据库,包括该组的共享内容及相关对等方的地址
      • 相关组长之间建立TCP连接
  2. 通过查询,找到所需对象
    • 组长用本组含有该对象的对等方列表响应
    • 组长与其他组长联系,请他们向该对等方发送含有该对象的对等方列表
特点
  • 层次覆盖网络

  • 查询流量不大

  • 设计技巧

    • 请求排队:限制并行上载数量
    • 激励优先权:上载文件比下载文件多的用户优先
    • 并行下载:从多个多等方请求下载同一文件的不同部分

BT(BitTorrent)协议

  • Torrent:洪流。参与一个文件对象分发的所有对等方的集合
  • 一个洪流中,对等方彼此下载等长度的文件块
  • 一个对等放最初加入洪流时,没有文件块,之后会积累越来越多
  • 下载文件块的同时,也为其他Torrent上载文件块
  • 对等方可以在获得整个文件后离开,有可以留下来继续提供上载
  • 对等方可以在任何时候加入或离开洪流
  • 提供优质服务的对等方将会提高在其他对等方的上载优先级,可以获得更高的下载速度,反之下载速度将会下降
  • 每个洪流都有一个基础设施节点,称为追踪器(tracker)。当一个对等方加入洪流时,它向tracker注册自己

加入洪流与在洪流中上载和下载的过程

  1. 当一个新的对等方Alice加入一个洪流时,tracker随机的选择对等方的一个子集,并将这些对等方的IP地址发送给Alice
  2. Alice拿到对等方列表,尝试与列表上的对等方建立TCP连接,并一些对等方(邻近对等方)成功建立连接
  3. Alice周期性的询问每个邻近对等方他们所拥有的块列表(bitmap),有了这些信息他将会对他当前还没有的块发出请求(TCP)
  4. Alice请求块的过程中使用最稀缺优先(rarest first)技术,即优先请求在邻居中最稀缺的块,从而让稀缺的块更为迅速的重新分发,目标是均衡每个块在洪流中的副本数量
  5. 下载完成所有的块后,将其组装还原为一个完整的文件
  6. Alice在提供数据时每个周期选择最合适的4个邻居疏通),并向他们发送块
    • 一般三个周期为一个大周期
    • 前两个周期选择为它提供优质下载速度的邻居(优先级高)
    • 最后一个周期随机选择邻居
    • 这种方式被称为“一报还一报”

P2P因特网电话

  • Skype
  • 引用广泛
    • PC到PC、PC到电话、电话到PC的服务
    • PC到PC的视频会议服务
    • 属于即时通信IM(Instant Messaging)

混合模式

  • 集中式和分布式相结合
  • 边缘节点(普通节点SC)和超级节点SN直接采用集中式结构
  • 超级节点之间采用分布式结构
  • 注册服务器:负责客户端的注册、存储用户名密码、登陆时身份认证

工作原理

  1. 用户启动Skype
  2. 连接到其SN
  3. 通过SN进行身份认证,广播其在线信息
  4. 查找用户:使用全球索引(Global Index GI)技术,返回地址
  5. 双方直接通过TCP连接通讯
posted @ 2023-05-05 17:59  Texley  阅读(50)  评论(0)    收藏  举报