第7章 应用层
什么是应用层
应用层位于TCP/IP协议簇的最高层,在这一层中,网络应用程序和服务通过TCP和UDP端口与低层协议进行通信。也许有人会问,TCP和UDP端口已经构成了定义零号的网路接口,为什么还要把应用层算在协议栈中呢?需要指明的是,在像TCP/IP这样的分层体系中,每一层都是通向网络的一个接口。应用层必须像传输层一样了解TCP和UDP端口,而且必须相应地传递数据。
TCP/IP的应用层是一些能够意识到网络的软件组件,向TCP和UDP端口发送和接收数据。这些组件从逻辑相似性来讲并不太相同,有些只是收集网络配置的简单工具,而有些则可能是支持桌面操作系统的用户界面系统或应用编程接口。有些组件为网络提供服务,比如文件和打印服务或名称解析服务。本章将介绍应用层中常见的服务和程序。这些组件的具体实现取决于编程和软件设计的细节。
TCP/IP应用层与OSI
应用层存在于很多不同的操作系统和网络环境,而在这些环境中,OSI模型是定义和描述网络系统的重要工具。OSI模型能够帮助我们理解TCP/IP应用层中发生的过程。
TCP/IP应用层对应于OSI模型的应用层、表示层和会话层。
- 应用层:OSI的应用层(不要与TCP/IP的应用层混淆)包含的组件为用户应用程序提供服务并支持网络访问
- 表示层:表示层把数据转化为与平台无关的格式,并处理加密和数据压缩
- 会话层:负责管理联网计算机上应用程序之间的通信,提供了一些传输层不具备、与连接相关的功能,比如名称识别和安全
这些服务对于应用程序和实现来说并不是必需的。在TCP/IP模型中,各种实现都不必遵循这些OSI细分的层次。但从整体来说,OSI模型中应用层、表示层和会话层的功能都属于TCP/IP应用层的职责。
网络服务
应用层的很多组件都是网络服务。前面章节中讲到,协议系统中的任何一层都为系统中的其他层提供服务。在大多数情况下,这些服务是定义明确的、属于协议系统的一部分。然而在应用层中,这些服务对于协议软件的运行并不是必需的,更多的是为用户提供方便,或是让本地操作系统连接到网络。
客观地说,协议栈中的低层协议与通信机制有关,与日常用户的关系就不明显了。而从另一个方面来说,应用层包含的大量网络服务却是为用户提供的:文件服务、远程访问服务、E-mail和HTTP Web服务协议。
下表列出了最重要的一些应用层协议和服务。
协议 | 描述 |
BitTorrent | 点对点文件共享协议,通常用于从Internet中快速下载大型文件 |
通用Internet文件系统(CIFS) | SMB文件服务协议增强版本 |
域名系统(DNS) | 把Internet名称映射为IP地址的一种分层系统 |
动态主机配置协议(DHCP) | 用于动态分配IP地址和其他网络配置参数的协议 |
文件传输协议(FTP) | 一种上传和下载文件的流行协议 |
Finger | 查看和请求用户信息的协议 |
超文本传输协议(HTTP) | 万维网的通信协议 |
Internet消息访问协议(IMAP) | 访问邮件消息的通用协议 |
轻量级目录访问协议(LDAP) | 用于实现和管理信息目录服务的协议 |
网络文件系统(NFS) | 让远程用户能够访问文件资源的协议 |
网络时间协议(NTP) | 在TCP/IP网络同步时钟和其他时间资源的协议 |
邮局协议(POP) | 从邮件服务器下载E-mail协议 |
远程过程调用(RCP) | 每个协议能够让一台计算机上的程序调用另一个计算机上的子程序或过程 |
服务器信息块(SMB) | 文件和打印服务协议 |
简单网络管理协议(SNMP) | 管理网络设备的协议 |
- 文件和打印服务
- 名称解析服务
- 远程访问服务
- Web服务
文件和打印服务
打印服务器负责操作打印机,满足针对这台打印机的全部打印请求。文件服务器操作数据存储设备(比如硬盘),满足对设备内数据读取和写入的请求。
由于文件服务和打印服务太常用了,它们经常会被统一考虑。也就是经常会用一台计算机(有时甚至是同一个服务)来提供文件和打印服务功能。无论这2个服务是否在同一台计算机上,它们的原理是一样的。一个文件服务先对文件的请求经过网络传递到传输层,后者通过适当的接口把请求路由到发文件服务器的服务程序。
文件服务系统,比如UNIX/Linux的网络文件系统(NFS)和Microsoft的通用Internet文件系统(CIFS)与服务器信息块(SMB),都工作于应用层,经典的文件传输工具文件传输协议(FTP)和简单文件传输协议(TFTP)亦是如此。
名称解析服务
名称解析就是把预定义的、方便用户使用的名称映射为IP地址的过程。域名系统(DNS)服务为Internet提供了名称解析,也能为独立的TCP/IP网络提供名称解析。DNS使用名称服务器解决DNS名称查询。名称服务运行于服务器的应用层,并且与其他名称服务器交换名称解析信息。其他常见的名称解析系统有网络信息服务(NIS)、NetBIOS名称解析,还有一些名称服务利用了轻量级目录访问协议(LDAP)
远程访问
让用户从一台计算机向另外一台计算机发起交互式连接请求的技术大多集中在应用层。比如Telnet和SSH就可以让用户通过网络登录到远程系统并发送命令,而现代的屏幕共享工具为桌面GUI系统实现了类似的效果。
为了把本地环境与网络集成在一起,有些网络操作系统使用名为重定向器的服务。重定向器有时被称为请求者。重定向截获本地计算机上的服务请求,查看这个请求是否可以在本地实现,还是转发到网络中的其他计算机。如果请求针对其他计算机中的服务,重定向器就把请求转发到网络上。
重定向器为需要访问网络资源的用户提供了通用的解决方案,就好像这些服务位于本地环境一样。例如,对一个远程硬盘的操作与对客户端计算机上本地硬盘上的操作是一样的。
Web服务
超文本输出协议(HTTP)是应用层的一个协议,是万维网生态系统的核心。HTTP最初的用途是传输文本和图像,但Web服务模型的发展需要大量与Web相关的协议和组件来建立与运行Web浏览器中的工具。
TCP/IP工具
应用层还包含一些TCP/IP工具。这些工具最初是围绕Internet和早期的UNIX开发的,现在用于配置、管理和诊断全世界的TCP/IP网络。
工具 | 描述 |
连接工具 | |
IPConfig | 一个Window工具,显示TCP/IP配置信息(相应的UNIX工具是ifconfig) |
Ping | 测试网络连通性的工具 |
Arp | 查看并可能修改本地或远程计算机的ARP缓存的工具。ARP缓存包含物理地址与IP地址之间的映射 |
Traceroute | 追逐数据报经过Internet路径的工具 |
Route | 查看、添加或编辑路由表条目的工具 |
Netstat | 显示IP、UDP、TCP和ICMP统计数据的工具 |
NBTstat | 显示NetBIOS和NBT统计数据的工具 |
Hostname | 返回本地主机名称的工具 |
文件传输工具 | |
FTP | 使用TCP的基本文件传输工具 |
Tftp | 使用UDP的基本文件传输工具,一般用于给网络设备下载代码这样的任务 |
Rcp | 简单的远程文件传输工具 |
远程工具 | |
Telnet | 远程终端工具 |
Rexec | 通过rexecd daemon在远程计算机上运行命令的工具 |
Rsh | 调用远程计算机上的shell来执行命令的工具 |
Finger | 显示用户信息的工具 |
Internet工具 | |
浏览器 | 能够访问万维网HTML内容的工具 |
新闻浏览器 | 与Internet新闻组连接的工具 |
E-mail阅读器 | 提供收发E-mail功能的工具 |
Archie | 能够访问匿名FTP站点索引的工具,曾经很流行,但万维网及其搜索引擎降低了Archie的重要性 |
Gopher | 基于菜单的Internet信息工具。与万维网相比,它像Archie一样已经过时了 |
Whois | 能够访问个人联系信息目录(类似于Internet白页)的工具 |
问与答:
- 问:作为文件服务器的计算机处于运行状态,而且也连接到了网络,但用户不能访问文件,会是什么问题呢?
答:首先我们要检查文件服务器的服务程序是否在运行。文件服务器并不仅仅是一台计算机,它是运行于计算机上的一个服务,用于满足文件请求。
- 问:OSI模型为什么把应用层的功能进一步划分为3个单独的层(会话层、表示层和应用层)?
答:应用层提供了广泛的服务,OSI模型对应用层的细分为软件开发人员更好地组织其中的部件提供了一种模块化结构,也为应用程序与协议栈之间的交互提供了更多的选择。
问题
- 使用什么网络工具可以检测网络的连通性?
答:ping工具用来检测网络连通性 - 什么应用层协议用来载入Web页面?
答:HTTP超文本传输协议 - 哪两种应用层协议用来接收邮件?
答:POP3(邮局协议版本3)和IMAP(Internet消息访问协议)。 - 哪个协议将主机名称映射为IP地址?
答:DNS,域名服务器。 - 哪个协议用来同步计算机时钟?
答:NIP,网络时间协议。