《计》 应用层(2)

1、SMTP

(1)整体结构

因特网电子邮件系统包括用户代理、邮件服务器及简单邮件传输协议(Simple mail transfer protocol,SMTP),其结构图如下:

图片发自App

(2)邮件收发过程

每个用户代理都有自己的邮件服务器,发送邮件时先发给自己的邮件服务器,邮件服务器再发给对方的邮件服务器,对方的邮件服务器通过POP3或者IMAP 协议将邮件推给对方。

如下图:

图片发自App

(3)交互过程

用户代理与邮件服务器通过TCP连接进行报文交换,报文如下,包含了HELO 、MAIL FROM 、RCPT TO、DATA 、QUIT命令。

图片发自App

2、SMTP与http协议对比

两者都是基于TCP的协议,不同之处有:

(1)http 是一个拉协议(pull protocol ),即web客户端想要从web服务器上获得某些信息时主动向服务器发起请求拉取信息;SMTP基本上是一个推协议(push protocol),即发送邮件服务器把文件推向接收邮件服务器;

(2)SMTP要求每个报文都是ASCII码格式,不能传输非ASCII字符,比如具有重音的法文字符或二进制数据(如图形文件),那此时必须先对传输数据进行7比特ASCII编码。

(那法国人使用的电子邮件一定多一个ASCII编码环节?base64编码就是一种把二进制转成ASCII码的编码方法)

(3)处理既包含图形有包含文本的文档时,http把每个对象封装到自己的http响应报文中,SMTP把所有报文对象放在一个报文中。

3、POP3及IMAP

如上图,当Alice 把邮件发到Bob邮件服务器之后,Bob怎么获得这个邮件?SMTP是一个推协议,而取报文是一个拉操作。因此就有了取报文过程的协议:POP3(Post office protocol-version3)、IMAP (Internet mail access protocol )已及http。

POP3交互报文如下,注意到每次取完邮件该邮件就被删除了,用户无法从不同地方的任何一台机器上访问邮件


图片发自App

IMAP 解决了上面的问题


图片发自App

上面这段话说的应该是我们平时邮箱里的过滤器功能吧?给邮箱添加一个过滤器以及过滤的规则,然后特定主题或者带着特定字符的邮件就被自动存入用户设置的邮件夹了。

基于web的电子邮件则是用http协议来来拉取邮件。

DNS  介绍

1、概述

DNS(Domin Name System),域名系统,包括:(1)一个由分层的DNS服务器实现的 分布式数据库(2)一个使得主机能够查询分布式数据库的应用层协议。DNS协议运行在UDP之上,使用端口53。

DNS除了能将用户请求的主机名解析为IP地址还提供以下服务:(1)主机别名,用户通过主机别名查询规范主机名(2)邮件服务器别名(3)负载分配,有些服务器一个域名对应多个IP地址(如冗余的WEB服务器),用户请求web服务器的地址时,DNS服务器响应一个IP地址集,由于用户总是访问第一个IP地址,因此DNS服务器循环IP地址的次序,实现了循环分配负载。

(这是否就是经常听到云端开发人员说的 负载均衡?)

2、DNS工作机理

DNS的一种简单设计时只使用一个DNS服务器,该服务器上包含着全球所有域名 的映射,这种集中式设计会有什么问题?

(1) 单点故障,如果该服务器崩溃那么整个因特网崩溃,真是"一荣俱荣,一损俱损”啊!

(2) 通信容量,单个服务器要处理所有DNS查询,会累死把!

(3) 远距离的集中式数据库,服务器不可能邻近所有查询客户,如果服务器在美国,来着澳大利亚的查询会经历链路拥塞;

(4) 维护,很麻烦,不得不存储所有记录,频繁更新。

上面作者列的几个原因我觉得在工作中网络应用协议设计时是很好的启发和参考。

实际DNS系统结构如下图:

图片发自App

根DNS服务器:指示顶级域名服务器的地址;

顶级域名服务器(TLD):指示特定顶级域名(如com、org、net、edu、gov等)下的某个域名的权威域名服务器地址;

权威DNS服务器:提供某域名的IP地址;

实际应用中还有本地服务器,起代理作用,将DNS请求发往DNS服务器。请求过程如下图。


图片发自App

上图请求主机到本地DNS服务器的查询是递归查询的,其余查询是迭代查询。

DNS缓存:DNS系统广泛使用缓存技术。本地DNS服务器缓存域名对应的TLD服务器的地址,TLD服务器缓存权威服务器地址,因为缓存技术根服务器被绕过了。缓存周期通常为2天。

DNS 记录和报文

(1) DNS 资源记录(RR:resiurse Record)格式如下:

(name,value,type,TTL)  TTL为该记录的生存时间

RR包含四种类型Type:


图片发自App

如果一个DNS服务器是权威服务器,那么他会包含某主机名的A记录,如果某个DNS不是权威服务器,他会包含某主机名的NS记录,另外还有一条A记录,这条A记录记录了NS 记录中value值即权威DNS服务器的IP地址。

DNS报文格式如下:

图片发自App

3、在DNS数据库中插入记录

假定你刚刚创建了一个名为网络乌托邦的令人兴奋的创业公司,要登记自己公司域名该怎么做?

去注册登记机构注册域名networkutopia.com,提供你的基本以及辅助权威DNS服务器的名字以及IP地址。该注册机构会将一个类型NS以及类型A的记录输入TLD com服务器。

你还必须确保用于web服务器www.networkutopia.com的类型A的资源记录和用于邮件服务器mail.networkutopia.com的类型MX资源记录被输入你的权威DNS服务器中。完成这些步骤之后人们就可以访问你的web站点,并向你公司雇员发送邮件。

作者说的很对:“当人们在网上冲浪时,有比满足眼球更复杂的事情在进行."

你可能感兴趣的:(《计》 应用层(2))