应用层
1 应用层的主要功能
最靠近用户的一层,向应用程序提供网络通信
网络应用程序可被分为两大类:
直接网络应用程序:Browser , e-mail ,FTP , Telnet
间接网络应用程序:Word , resource manager , (viaRedirector)
2 域名解析系统DNS
DNS是分层次的,基于域的命名方案,且采用了分布式数据库系统来实现
2.1 DNS的使用方法:
- 为了将一个名字映射为IP地址,应用程序调用一个叫解析器(resolver)的库过程,把名字作为参数传递给这个过程(如:gethostbyname()就是一个解析器)
-解析器发送一个UDP分组给本地DNS服务器,它会负责查找该名字,然后将对应的IP地址返回给解析器
·解析器返回结果给应用程序,然后应用程序即可开始工作了
域名解析:
- 一个解析器收到一个域名查询时,它将该查询传递给本地的一个域名服务器
- 如果待查询的域名落在该名字服务器的管辖范围内,它将返回权威资源记录
· 一个权威资源记录(authoritative record)是指来自于管理该记录的权威机构,因此总是正确的,它和缓存的记录不同,后者可能是过期的 - 如果被请求的域名是远程的,且本地没有关于它的信息,那么本地名字服务器向根域服务器发送一条查询此域的消息
域名解析的种类:
- 主机向本地域名服务器的查询一般都是采用递归查询。
- 本地域名服务器向根域名服务器的查询通常是采用迭代查询
优化方法:
高速缓存—减少查询环节,提高效率
缺点:缓存中的内容不具有权威性
DNS消息传递一般采用UDP
采用TCP的时候
- UDP 报文超过512Bytes
- 从(second)服务器的数据更新
2.2 DNS名字空间
- 互联网被分成200多个顶级域
- 每个域被分成若干子域,子域还可进一步划分
- 所有这些域可以用一棵树来表示
顶级域有两种
- 通用域( generic )
-
国家域( country )
2.3 资源记录
- 每个域,无论是单主机域还是顶级域,都可以有一组跟它相关联的资源记录(ResourceRecords)
- 当一个解析器把域名传递给DNS时,DNS所返回的是与该域名相关联的资源记录。所以DNS的主要功能是将域名映射到资源记录上
- 一个资源记录包括5个部分:
域名、生存期(该条记录的稳定时间)、类别、类型、值
2.4 根域服务器—最高级域名服务器:
最重要的域名服务器;存储所有顶级域名的名字和IP
无论是哪个本地域名服务器,无论何时,只要它无法回答一个查询请求,它都会向根域服务器求救 (for help)
全球有 13 根域服务器,它们的名字分别是a to m(前13 个字母)
3 各种应用的特点
3.1 电子邮件
电子邮件系统通常由两部分组成:
-
用户代理(UA):让用户能够阅读和发送邮件
·本地程序,提供命令行或图形界面,让用户和电子邮件系统交互 -
消息传输代理 (MTA):将消息从源端送到目标端
·通常是系统守护进程,即运行在后台的进程,在系统中传递电子邮件
SMTP简单邮件传输协议
两个最后投递协议:
- POP3:(在收信端不在线时候代理接收)
允许用户和消息传输代理MTA联系,然后把邮件从ISP那里拷贝到用户的协议 - IMAP:
假设所有的电子邮件都永久地保存在服务器上的多个邮箱中
3.2 万维网(World Wide Web)【构建在Internet上的分布式系统,www是应用,internet是基础设施】
WWW的组成部分:(Web页面由URL (UniformResource Locators)标识)
- 资源,web页面,Resource (html)
- 统一资源定位器:URL
- 通信协议HTTP
WWW的传输层使用了TCP
浏览器解释不同资源方式:内嵌插件或外挂
缓解服务器前端压力:TCP移交
当用户单击一个超级链接(URL)时:
- 浏览器检查URL (读取浏览器的输入)
- 浏览器向 DNS服务器询问域名的IP地址
- DNS返回对应的IP地址
- 浏览器和Web服务器建立TCP 连接(在端口80)
- 浏览器发送请求,要求获取文件products.html
- Web服务器返回被请求的文件
- TCP连接被释放
- 浏览器解释显示下载到本地的文件
3.2.1 Cookie是什么
3.3 文件传输(FTP、TFTP和NFS)
FTP:
一种可靠的面向连接的服务,采用TCP在支持FTP的系统间传输文件,它支持双向二进制文件和ASCII文件传输。
TFTP:
一种无连接的不可靠的服务,采用UDP在支持TFTP的系统间传输文件。
双链接的好处:断点续传
3.4 远程登录Telnet【显示器在本地终端,服务器在远程终端】
Telnet和rlogin
- 不要求远地系统创建众多的服务器,只需为每个远程登陆用户建立一个进程,这个进程再通过创建子进程为远程登陆用户提供各种允许的服务。
- 本地用户在本地终端对远地系统进行远程登陆,该远程登陆的内部视图实际上是一个TCP连接;
- 将本地终端上的键盘输入逐键传到远地机;
- 将远地机输出送回本地终端。
ssh (安全外壳协议)
ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。
通过使用SSH,你可以把所有传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止DNS欺骗和IP欺骗。使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、PoP、甚至为PPP提供一个安全的"通道"