首页 > 代码库 > 网络基础---应用层

网络基础---应用层

应用层是OSI与TCP/IP模型的顶层,第7层提供了人们所用的应用程序与下层网络的接口,通过下层网络传递你的信息。应用层协议用于在源主机与目的主机运行的应用程序之间交换数据。现在有许多应用层的协议,并不断开发出新的协议。虽然TCP/IP协议族的开发早于OSI模型的推出,但TCP/IP应用层协议与OSI模型的上层结构(应用层、表示层、会话层)仍然大致对应。大多数的应用程序(如Web浏览器或电子邮件客户端)已包含OSI模型5、6、7层的功能

常见的应用层系统和协议有


  • 域名系统

  • HTTP(超文本传输协议)

  • SMTP(简单邮件传输协议)

  • POP(邮局协议)

  • DHCP(动态主机配置协议)



表示层


表示层有三个主要功能:

  • 对应用层数据进行编码转换,从而确保目的设备可以通过适当的应用程序理解源设备上的数据

  • 采用可被目的设备解压缩的方式对数据进行压缩

  • 对传输数据进行加密,并在目的设备上对数据解密


会话层


会话层用于在源应用程序和目的应用程序之间创建并维持会话。会话层用于处理信息交换,发起对话并使其处于活动状态,并在对话中断或长时间处于空闲状态时重启会话。


最广为人知的TCP/IP应用层协议包括:

  • 域名服务协议(DNS),用于将Internet域名解析为IP地址

  • 超文本传输协议(HTTP),用于传输构成万维网网页的文件

  • 简单邮件传输协议(SMTP),用于传输邮件及其附件信息

  • Telnet协议(一种终端模拟协议),提供对服务器和网络设备的远程访问

  • 文件传输协议(FTP),用于系统间的文件交互传输

TCP/IP协议族中的协议一般由请求注解(RFC)文件定义。Internet工程任务组(IETF)负责维护作为TCP/IP协议族标准的RFC文件。

在应用层中,软件程序或进程采用两种形式访问网络,应用程序和服务。

我们需要明白的是,协议仅仅提供了服务使用的规则,服务提供了做事的功能。


端口号用于标示应用层服务或程序的唯一性

当我们研究不同的TCP/IP应用层协议和服务时,我们将参考与这些服务相关联的TCP和UDP端口号。这些服务包括:

  • 域名系统(DNS)-TCP/UDP端口 53

  • 超文本传输协议(HTTP)-TCP端口 80

  • 简单邮件传输协议(SMTP)-TCP端口 25

  • 邮局协议(POP)-UDP端口 110

  • Telnet-TCP端口 23

  • 动态主机配置协议(DHCP)-UDP端口67

  • 文件传输协议(FTP)-TCP端口 20 和端口 21

DNS协议

DNS协议定义了一套自动化的服务,该服务将资源名称与数字网络地址匹配。协议涵盖了查询格式、响应格式及数据格式。DNS协议通信采用单一格式,即消息格式。该格式用于所有类型的客户端查询和服务器响应、报错消息以及服务器间的资源记录信息的传输。

在Windows操作系统中,可以通过 nslookup 程序查询域名服务器,如下图:


技术分享

DNS服务器使用域名守护程序(通常简称为named守护程序)提供域名解析。

DNS服务器中存储不同类型的资源记录,用来解析域名。这些记录中包含域名、地址及记录的类型

这些记录有以下类型:

  • A记录-终端设备地址

  • NS记录-权威域名服务器

  • CNAME记录-规范域名(或称为完全合格域名FQDN)。适用环境是单一网络地址对应多个服务,但每个服务在DNS服务器上都有各自的条目

  • MX记录-邮件交换记录;它将域名映射到用于该域的一系列邮件交换服务器上

当客户端提出查询请求时,服务器的named守护进程将首先检索自己的记录,以查看是否能够自行解析域名。如果服务器不能通过自身存储的记录解析域名,它将连接其他服务器对该域名进行解析。该解析请求将会发送到很多服务器,因此需要耗费额外的时间,而且耗费带宽。当检索到匹配信息时,当前服务器将该信息返回至源请求服务器,并将匹配域名的数字地址临时保存在缓存中。

当再次请求相同的域名时,第一台服务器就可以直接调用域名缓存中的地址。通过缓存机制,不但降低了DNS查询数据网络的流量,也将少了上层服务器的工作负载。在Windwos系统中,DNS客户端服务可以预先在内存中存储已解析的域名,从而优化DNS域名解析性能。

windows中 输入ipconfig/displaydns命令可以显示所有DNS缓存条目。

DNS层级关系


域名系统采用分级系统创建域名数据库,从而提供域名解析服务。该层级模型的外观类似一颗倒置的树。位于最高层的根域名服务器维护最高级域名服务器记录,而后者维护下一级域名服务器的记录,以此类推。例如:hotel.elong.com .com是顶级域名 .elong是二级域名

每个域名的组成都是按照层级树由上而下的顺序排列。域名系统正是依靠这些分散的、分层级的服务器保存并维护资源记录的。服务器根据资源列表中的记录解析域名,而备用服务器也可以处理域名解析请求。如果指定服务器中有与其域级别相对应的资源记录,则该服务器可以称为这些记录的主域名服务器。


HTTP协议


超文本传输协议(HTTP)是TCP/IP协议族中的一种协议。该协议是为了检索和发布HTML页面而开发出来的,现在用于分布式协同信息系统。在万维网中,HTTP是一种数据传输协议。同时,它还是最常用的应用程序协议。


虽然HTTP是一种很灵活的协议,但是它并不安全,上传消息,如:POST 都是以纯文本的方式进行的,服务器的响应消息,例如HTML网页,也是不加密的。

为了在Internet上安全传输信息,人们使用安全超文本传输协议(HTTPS)来传输信息。HTTPS可以采用身份认证和加密两种方式保证数据传输的安全性。HTTPS还指定了应用层和传输层之间数据通信的附加规则。


POP和SMTP

电子邮件服务器运行两个独立的进程

  1. 邮件传送代理(MTA)

  2. 邮件分发代理(MDA)

邮件传送代理进程用于发送电子邮件。MTA从邮件客户端程序或者另外一台电子邮件服务器上的MTA处接收消息。根据消息标题和内容,MTA决定如何将该消息发送到目的地。如果邮件的目的地址位于本地服务器上,则该邮件将转给MDA。如果邮件的目的地址不在本地服务器上,则MTA将电子邮件发送到相应服务器上的MTA上。

SMTP协议的消息格式包括一套严格的命令集和回复集。这些命令支持SMTP协议下的操作,如 会话初始化、邮件交换、邮件转发、验证邮箱名、扩展邮件列表以及邮件交换的开启和关闭。

SMTP协议下常用的命令包括:

HELO-将SMTP客户端进程对应到SMTP服务器进程

EHLO-HELO的新形式,包括服务扩展

MAIL FROM-标志发件人

RECPT TO-标志收件人

DATA-标志消息内容


FTP

文件传输协议(FTP)也是一种常见的应用层协议,FTP用于客户端和服务器之间文件的传输。为了确保文件的成功传输,FTP要求在客户端和服务器之间建立两条连接:一条是命令和回复连接,另一条是实际文件传输连接

客户端在TCP端口21建立第一条连接,该连接由客户端和服务器回复组成,用于管理传输流量

第二条连接建立在TCP端口20,每当有文件需要传输时建立该连接,用于实际文件传输


DHCP

通过动态主机配置协议(DHCP)服务,网络中的设备可以从DHCP服务器中获取IP地址和其他信息。该服务自动分配IP地址、子网掩码、网关以及其他IP网络参数。DHCP协议允许主机在接入网络时动态获取IP地址。主机连入网络时,将联系DHCP服务器并请求IP地址。DHCP从已配置的地址范围中选择一条地址,并将其临时租给主机一段时间。

当运行DHCP服务软件时,很多类型的设备都可以成为DHCP服务器。在大多数中型到大型网络中,DHCP服务器通常都是基于PC的本地专用服务器。而家庭网络的DHCP服务器一般都是位于ISP处,家庭网络中的主机直接从ISP接收IP配置。

许多家庭网络和小型企业使用集成服务器路由器(ISR)设备连接到ISP。在这种情况下,ISP既是DHCP客户端又是服务器。ISR作为客户端从ISP接收IP配置并为在本地网络上的主机做服务器。


文件共享协议

服务器消息块(SMB)是一种客户端/服务器文件共享协议。IBM于20世纪80年代末开发了服务器消息块,用于规范共享网络资源(如 目录、文件、打印机、串行接口等)的结构。与FTP协议支持的文件共享不同,SMB协议中的客户端要求和服务器建立长期连接,一旦连接建立,客户端就可以访问服务器资源,就如同资源位于客户端主机上一样。


P2P服务和Gnutella协议


通过基于Gnutella协议的P2P应用程序,人们可以将自己硬盘中的文件共享给其他人下载。通过Gnutella协议兼容软件,用户可以在Internet上连接Guntella服务,然后定位并访问由其他Guntella对等设备共享的资源。

很多P2P应用程序并不使用中央数据库记录各个对等设备上的可用文件列表,而是让网络中的各个设备相互查询可用文件,并通过Gnutella协议和服务定位资源。当用户连接Guntella时,客户端应用程序将检索可连接的其他Guntella服务节点。这些节点将查询资源位置并回复请求。此外,他们还管理控制信息,以便服务查找其他节点。实际文件的传输过程往往是基于HTTP服务。

Gnutella协议中定义了5种不同类型的数据包:

ping——用于查找设备

pong——用于回复ping

query——用于定位文件

query hit——用于回复query

push——用作请求下载


Telnet服务及协议

在图形用户界面出现之前,人们使用的是基于文本的系统,这些系统往往只显示与中央计算机连接的终端,网络面世后,人们也需要像以前那样访问计算机系统。

Telnet的退出正是为了满足这种需求,Telnet于20世纪70年代初面世,在TCP/IP协议族中属于最旧的协议之一。Telnet协议中规定了在网络数据中模拟基于文本的终端设备数据的标准。该协议及其客户端程序统称为Telnet

为支持Telnet客户端的连接,服务器上需要运行名为"Telnet守护程序"的服务。通过Telnet客户端应用程序,从终端设备处建立一条虚拟连接。一旦建立Telnet连接,用户就可以执行服务器上的所有许可的功能,就如同直接在服务器上输入指令一样。只要拥有权限,用户就可以终止进程、配置设备、甚至是关闭系统。

Telnet协议命令包括

Are You There (AYT)——允许用户请求终端屏幕上显示的资源,通常是个提示符,以表明VTY会话处于活动状态

Erase Line(EL)——从当前行中删除所有文本

Interrupt Process(IP)——暂停、中断、放弃或者终止与虚拟终端连接的进程


尽管Telnet协议支持用户身份验证,但是它不是加密数据的传输。所有在Telnet会话期间交换的数据都将以纯文本格式在网络内传输,这样的话,传输的数据可能会被中途截获。

安全外壳协议(SSH)为访问服务器提供了一种安全的办法。SSH的结构适用于远程安全登录及其他网络服务。该协议还提供了比Telnet更强大的身份验证功能,并支持会话数据的加密传输。作为一种最佳实践,不管是否需要,网络工程师都应该始终用SSH来代替Telnet。

本文出自 “晚飞的笨鸟” 博客,请务必保留此出处http://yonghuisoft.blog.51cto.com/6167075/1610458

网络基础---应用层