21-05-08-计网自顶向下方法

2.3.1 SMTP

SMTP的基本操作:

  • A调用邮件代理并提供B的邮件地址,输入报文,使用用户代理发送报文
  • A的用户代理把报文发送给A的邮件服务器,该报文被存放在邮件服务器的报文队列中
  • A邮件服务器上的SMTP客户端发现了该报文,则创建一个到运行B的邮件服务器上的SMTP服务器上的TCP连接
  • 初始的SMTP握手,SMTP通过该TCP连接发送A的报文
  • B的邮件服务器上,SMTP的服务器接收该报文,再将其放入B的邮箱中
  • B在方便时调用用户代理阅读报文

A向B发送报文

SMTP一般不使用中间邮件服务器发送邮件,即使两个邮件服务器相隔非常远,TCP连接也是连接这两个地方,如果B的邮件服务器没有开机,则该报文会保留在A的邮件服务器上进行尝试,则邮件并不在中间某个邮件服务器存留

例子

SMTP使用的是持续连接:

如果发送服务器有几个报文发往同一个接收邮件服务器,则可以通过同一个TCP连接发送这些所有的报文,每个报文用一个新的MAIL FROM:crepes.fr开始,以一个独立句点指示该邮件的结束,并且当所有邮件发送完才发送QUIT

2.3.2 与HTTP的对比

(1)

HTTP是一个拉协议,用户使用HTTP从web服务器拉取对象,TCP连接是由想接收文件的机器发起的

SMTP是一个推协议,发送邮件服务器把对象推向接收服务器,TCP是由想发送文件的机器发起的

(2)

SMTP采用 7 比特ASCII格式,如果报文中包含了非 7 比特的ASCII字符或二进制数据,则该报文必须按照 7 比特的ASCII码进行编码

HTTP不受限制

(3)

对于一个有文本和图像的文档

HTTP把每个对象封装到HTTP响应报文中

SMTP把所有报文对象放在一个报文中

2.3.3 邮件报文格式

需要包含一个各种环境的首部信息,在一系列首部行中

每个首部行必须包含 From: 和 To:

典型的报文首部如下:

典型报文首部

一个空白行后是以ASCII格式的报文体

2.3.4 邮件访问协议

存在问题:

接收方的邮件服务器不总是在线的,除非总是不间断地运行

解决:

用户在本地运行代理程序,而访问存储总是保持在开机共享的邮件服务器上的邮箱,该邮件服务器与其他用户共享,通常由用户的ISP进行维护

接收方如何得到SMTP的报文,因为SMTP是推协议,于是有了新的邮件访问协议,如POP3,IMAP,HTTP

电子邮件协议及其通信实体

1.POP3

协议简单、功能有限,用户代理打开一个到邮件服务器端口110上的TCP连接后,POP3开始运行

  • 特许阶段

用户代理发送用户名和口令鉴别用户

  • 事务处理阶段

用户代理取回报文,同时用户代理可以对报文做删除标记,取消删除标记,获取邮件的统计信息

  • 更新阶段

用户退出且结束该POP3会话,邮件服务器则删除被标记删除的报文

事务处理过程,对于用户的命令服务器有两种回答:

  • + OK(有时跟着数据):前面的命令正常
  • + ERR,前面命令差错

特许阶段两个主要命令

  • user

  • pass

  • 下载并删除方式

  • 下载并保留方式

2.IMAP

解决报文无法在服务器分类浏览问题

IMAP服务器把每个报文和一个文件夹联系起来,当报文第一次到达服务器时,与收件人的INBOX文件夹相关联

IMAP提供能为用户创建新文件夹、文件移动、远程查询命令,还维护了IMAP会话的用户状态信息

允许用户代理获取报文某些部分,当低带宽连接时有益处

3.基于web的电子邮件

此时用户代理则是普通的服务器,与远程邮箱之间的通信则是通过HTTP运行,当然邮件服务器和邮件服务器之间使用的仍是SMTP

2.4 DNS:因特网的目录服务

识别主机的两种方式,主机名和IP地址

2.4.1 DNS提供的服务

域名系统:主机名到IP地址转换的目录服务

DNS:

  • 一个由分层的DNS服务器实现的分布式数据库
  • 一个使得主机能够查询分布式数据库的应用层协议

DNS服务器通常是运行BIND软件的UNIX机器

DNS协议运行在UDP之上,使用 53 端口

DNS是应用层协议,

  • 使用客户 - 服务器模式运行在通信的端系统之间
  • 通过端到端的运输协议来传送DNS报文

DNS并不是和用户直接交流,为用户应用程序及其他软件提供核心功能,即将主机名转换为对应的IP地址

DNS被其他应用层协议所使用,如HTTP、SMTP和FTP

当浏览器请求URL时

  • 同一用户主机上运行着DNS应用的客户端
  • 浏览器从上述URL抽取主机名,将主机名传给DNS应用的客户端
  • DNS客户向DNS服务器发送一个包含主机名的请求
  • DNS客户最终收到来自DNS的该IP地址,于是进行TCP连接

其他重要服务

  • 主机别名:比主机规范名更加容易记忆

  • 邮件服务器别名

  • 负载均衡:可用于web服务器和邮件服务器

2.4.2 DNS工作原理概述

用户主机上的DNS收到请求后,向网络中发送一个DNS查询报文,使用UDP和53端口,在经过毫秒或秒的时延后,用户主机上的DNS接收到一个提供所希望映射的DNS回答报文

简单设计:只使用一个DNS服务器,包含所有映射

存在问题:

  • 单点故障
  • 通信容量
  • 远距离的集中式数据库:单个DNS服务器不可能邻近所有查询客户,严重时延
  • 维护:数据巨大,更新频繁

1.分布式、层次数据库

部分DNS服务器层次结构

3种类型的DNS服务器:

  • 根DNS服务器

400多个根名字服务器遍及全世界,根名字服务器提供TLD服务器的IP地址

  • 顶级域(TLD)DNS服务器

对于顶级域,如com,org,net,edu,gov和所有的国家顶级域,都有其TLD服务器(集群),TLD服务器提供权威DNS服务器的IP地址

  • 权威DNS服务器

因特网上具有公共访问的主机需要提供DNS记录,来映射为IP地址

还有一个本地DNS服务器,其实不属于该服务器的层次结构

每个ISP都有其本地DNS服务器,当主机与ISP连接时,通过DHCP提供本地DNS服务器的IP地址

主机的DNS服务器通常“邻近”本主机

各种DNS服务器的交互

根DNS服务器 --> edu

TLD DNS访问 --> umass.edu

权威DNS服务器 --> IP地址

例子中发送了 4 粉查询报文, 4 份回答报文

当TLD服务器不知道权威DNS服务器的IP地址,而需要通过一台中间DNS服务器时,则需要增加了 2 份DNS报文

实际中都采用上图的模式,从请求主机到本地DNS服务器的查询是递归的,其余查询是迭代的

2.DNS缓存

在一个请求链中,当某DNS服务器接收到一个DNS回答(即包含某主机名到IP地址的映射)时,则将映射缓存在本地存储器中,映射时间不是永久的,一般设置为 2 天

2.4.3 DNS记录和报文

共同实现DNS分布式数据库的所有DNS服务器存储了资源记录RR,RR提供了主机名到IP地址的映射

每个DNS回答报文包含了一条或多条RR

RR是一个包含了下列字段的 4 元组

(Name,Value,Type,TTL)

TTL:记录生存的时间,资源记录应当从缓存中删除的时间

Name和Value的值取决于Type

  • Type = A:Name是主机名,Value是对应的IP地址
  • Type = NS:Name是个域(如foo.com),Value是如何知道获得该域中主机IP地址的权威DNS服务器的主机名
  • Type = CHAME:Value是别名为Name的主机对应的规范主机名
  • Type = MX:Value是别名为Name的邮件服务器的规范主机名

用于某特定主机名的权威DNS服务器:有一条A类型的RR(普通DNS服务器也可以拥有)

不是用于某特定主机名的权威DNS服务器,则有一条NS类型的RR,对应主机名的域;还有一条A记录,提供NS记录的Value字段中的DNS服务器IP地址

如edu TLD服务器不是主机gaia.cs.umass,edu的权威DNS服务器,则它拥有一条包括主机cs.umass.edu的域记录,即(umass.edu, dns.umass.edu, NS) ;还有一条A类型(dns.umass.edu,128.119.40.111,A)

1.DNS报文

两种报文格式一致:

DNS报文格式

  • 标识符:16 bit,标识该查询,会被复制到对查询的回答报文中,匹配请求和回答
  • 标志:
    • 1bit表示查询(0)还是回答(1)
    • 1bit表示当DNS服务器是请求名字的权威DNS服务器时,当没有某记录时是否递归查询,是(1),否(0)
    • 4个字段表示问题、回答、权威、附加信息的长度
  • 问题:包含正在查询的信息
    • 名字字段:正在被查询的主机名字
    • 类型字段:A,MA等
  • 回答:对最初请求的名字的资源记录,有多条RR,因此主机名有多个IP地址
  • 权威:包含了其他权威服务器的记录
  • 附加:其他有帮助的记录

2.5 P2P 文件分发

1.P2P体系结构的扩展性

P2P和客户 - 服务器分发结构分发时间对比

由图可知P2P体系结构最小分发时间不仅总是小于客户 - 服务器的分发时间,并且对于任意的对等方数量N,总是小于 1 小时,因此P2P体系结构是自扩展的,原因:对等方除了是消费者还是重新分发者

2.BitTorrent

洪流:参与一个特定文件分发的所有对等方发集合,彼此下载等长度的文件块,一般256KB

每个洪流有一个基础设施节点,称为追踪器

当一个对等方加入洪流,则向追踪器注册自己,并周期性向追踪器通知仍在洪流中

当A加入洪流时,追踪器给其一个子集,并将全部对等方IP发给A,A根据子集创建并行TCP连接

每时刻A周期性询问邻近对等方有哪些块,然后使用最稀缺优先技术,A没有的块,邻近对等方中拥有此块,但数量最少,于是请求这块,使此块更快分发,为了均衡每块的副本数量

响应请求时,对能向A请求放以最高速率提供数据的邻居给出优先权,10秒后再重新计算

每过30秒,A也要随机选择邻居向其发送块

一报还一报

2.6 视频流和内容分发网

单一数据中心缺陷

  • 巨大的时延
  • 经过相同的链路多次发送,浪费带宽与额外费用

利用内容分发网CDN,分布在多个地理位置

CDN两种安置原则

  • 深入:靠近端用户
  • 邀请做客:放置在因特网交换点IXP

简单的拉策略:如果客户向一个未存储该视频的集群请求某视频,则该集群检索给视频(某中心仓库或者另外一个集群),向客户流式传输视频的同时在本地存储一个副本,当满存储时删除不经常请求的视频

1.CDN操作

CDN需要截获特定视频的请求,以便:

  • 确定此时适合用于该客户的CDN服务器集群
  • 将客户的请求重定向到该集群的某台服务器

截获和重定向机制:

利用DNS

DNS将用户的请求重定向到一台CDN服务器上

  • 用户访问位于NetCinema的Web网页
  • 当用户点击链接http//video.netcinema.com/6Y7B23V 时,该用户主机发送了一个对于video.netcinema.com 的DNS请求
  • 用户的本地DNS服务器(LDNS)将该DNS请求中继到一台用于NetCinema的权威DNS服务器,该服务器观察到主机名video.netcinema.com中的字符串“video”,将该DNS请求移交给KingCDN, NetCinema权威DNS服务器并不返回一个IP地址,而是向LDNS返回一个KingCDN域的主机名,如al105.kingcdn.com
  • 从这时起,DNS请求进入了KingCDN专用DNS基础设施,用户的LDNS则发送第二个请求,此时是对al105.kingcdn.com的DNS请求KingCDN的DNS系统最终向LDNS返回KingCDN内容服务器的IP地址,所以正是在这里,在KingCDN的DNS系统中,指定了CDN服务器,客户将能够从这台服务器接收到它的内容
  • LDNS向用户主机转发内容服务CDN节点的IP地址
  • 一旦客户收到KingCDN内容服务器的IP地址,它与具有该IP地址的服务器创建了一条直接的TCP连接,并且发出对该视频的HTTP GET请求。如果使用了DASH,服务器将首先向客户发送具有URL列表的告示文件,每个URL对应视频的每个版本,并且客户将动态地选择来自不同版本的块

2.集群选择策略

简单策略:地理上最邻近的集群,但不代表着网络路径或跳数是如此

实际策略:对集群和客户之间的时延和丢包进行实时的测量,ping报文或者DNS请求

posted @ 2021-05-08 23:25  zephxu  阅读(103)  评论(0)    收藏  举报