目录
应用层协议概要
应用协议的定义
应用协议与协议的分层
相当于OSI中第5、第6、第7层的协议
远程登录
TELNET
选项
TELNET客户端
SSH
文件传输
FTP的工作机制概要
通过ASCII码字符串进行的交互处理
电子邮件
电子邮件的工作机制
邮件地址
MIME
SMTP
试用SMTP命令
POP
试用POP命令
IMAP
电子邮件发送和接收过程
发送端口25/587/465的区别
到此为止所介绍的IP协议、TCP协议以及UDP协议是通信最基本的部分, 它们属于OSI参考模型中的下半部分。
应用协议主要是指OSI参考模型中第5层、第6层、 第7层上半部分的协议。
利用网络的应用程序有很多,包括Web浏览器、电子邮件、远程登录、文件 传输、网络管理等。能够让这些应用进行特定通信处理的正是应用协议。
TCP和IP等下层协议是不依赖于上层应用类型、适用性非常广的协议。而应 用协议则是为了实现某种应用而设计和创造的协议。
例如,远程登录等应用经常使用的TELNET协议,它的支持基于文字的命令 与应答,通过命令可以执行各种各样的其他应用。
网络应用由不同的用户和软件供应商开发而成。为了实现网络应用的功能, 在应用之间进行通信时将其连接的网络协议是非常重要的。设计师和开发人员 根据所开发模块的功能和目的,可以利用现有的应用协议,也可以自己定义一个 新的应用协议。
应用可以直接享用传输层以下的基础部分。因为开发者只要关心选用哪种应 用协议、如何开发即可,而不必担心应用中的数据该以何种方式发送到目标主机 等问题。这也是得益于网络层的功劳。
TCP/IP的应用层涵盖了OSI参考模型中第5、第6、第7层的所有功能,不 仅包含了管理通信连接的会话层功能、转换数据格式的表示层功能,还包括与对 端主机交互的应用层功能在内的所有功能。
远程登录是为了实现TSS (分时)环境,是将主机和终端的关系 应用到计算机网络上的一个结果。TSS中通常有一个处理能力非常强的主机,围 绕着这台主机的是处理能力没有那么强的多个终端机器。这些终端通过专线与主 机相连。
类似地,实现从自己的本地计算机登录到网络另一端计算功能的应用就叫做 远程登录。通过远程登录到通用计算机或UNIX工作站以后,不仅可以直接使用 这些主机上的应用,还可以对这些计算机进行参数设置。远程登录主要使用TELNET和SSH 两种协议。
TELNET利用TCP的一条连接,通过这一条连接向主机发送文字命令并在主 机上执行。本地用户好像直接与远端主机内部的Shell,相连着似的,直接在本地 进行操作。
TELNET可以分为两类基本服务。一是仿真终端功能,二是协商选项机制。
TELNET经常用于登录路由器或高性能交换机等网络设备进行相应的设置。
通过TELNET登录主机或路由器等设备时需要将自己的登录用户名和密码注册到 服务端。
TELNET中除了处理用户所输入的文字外,还提供选项的交互和协商功能。
例如,为实现仿真终端(NVT, Network Virtual Terminal)所用到的界面控制信息 就是通过选项功能发送出去的。而且,如图所示TELNET中的行模式或透明 模式两种模式的设置,也是通过TELNET客户端与TELNET服务端之间的选项功 能进行设置的。
所谓TELNET客户端是指利用TELNET协议实现远程登录的客户端程 序。很多情况下,它的程序名就是telnet命令。
TELNET客户端通常与目标主机的23号端口建立连接,并与监听这 个端口的服务端程序telnetd进行交互。当然,也可以与其他的TCP端口 号连接,只要在该端口上有监听程序能够处理telnet请求即可。在一般的 telnet命令中可以按照如下格式指定端口号:
telnet主机名 TCP端口号
TCP端口号为21时可以连接到ITP应用,为25时可以连 接到SMTP,为80时可连接到HTTP ,为llO时可 连接到POP3 。如此看来,每个服务器都有相应的端口号在等 待连接。
因此,以下两个命令可以视为相同:
ftp主机名
telnet主机名21
鉴于ITP、SMTP、HTTP、POP3等协议的命令和应答都是字符串, 因此通过TELNET客户端连接以后可以直接输入这些协议的具体命令。 TELNET客户端也可用于跟踪TCP/IP应用开发阶段的问题诊断。
SSH是加密的远程登录系统。TELNET中登录时无需输入密码就可以发送, 容易造成通信窃听和非法入侵的危险。使用SSH后可以加密通信内容。即使信息 被窃听也无法破解所发送的密码、具体命令以及命令返回的结果是什么。
SSH还包括很多非常方便的功能:
端口转发是指将特定端口号所收到的消息转发到特定的IP地址和端口号码的 一种机制。由于经过SSH连接的那部分内容被加密,确保了信息安全,提供了更 为灵活的通信
FTP是在两个相连的计算机之间进行文件传输时使用的协议。FTP中也需要在登录到对方的计算机后才能 进行相应的操作。
互联网上有一种FTP服务器是允许任何人进行访问的,这种服务器叫做匿名 服务器(anonymous ftp)。登录这些服务器时使用匿名(anonymous)或ftp都 可以。
FTP是通过怎样的机制才得以实现文件传输的呢?它使用两条TCP连接:一 条用来控制,另一条用于数据(文件)的传输。
用于控制的TCP连接主要在FTP的控制部分使用。例如登录用户名和密码的 验证、发送文件的名称、发送方式的设置。利用这个连接,可以通过ASCII码字 符串发送请求和接收应答。在这个连接上无法发送数 据,数据需要一个专门的TCP进行连接。
FTP控制用的连接使用的是TCP21号端口。在TCP21号端口上进行文件GET (RETR)、PUT (STOR)、以及文件一览(LIST)等操作时,每次都会建立一个 用于数据传输的TCP连接。数据的传输和文件一览表的传输正是在这个新建的连 接上进行。当数据传送完毕之后,传输数据的这条连接也会被断开,然后会在控 制用的连接上继续进行命令或应答的处理。
通常,用于数据传输的TCP连接是按照与控制用的连接相反的方向建立的。
因此,在通过NAT连接外部FTP服务器的时候,无法直接建立传输数据时使用的 TCP连接。此时,必须使用PASV命令修改建立连接的方向才行。
控制用的连接,在用户要求断开之前会一直保持连接状态。不过,绝大多数 FTP服务器都会对长时间没有任何新命令输人的用户的连接强制断开
数据传输用的TCP连接通常使用端口20。不过可以用PORT命令修改为其他 的值。最近,出于安全的考虑,普遍在数据传输用的端口号中使用随机数进行 分配。
FTP中请求命令中使用着"RETR"等ASCIIT码字符串。而针对这些命令的 应答则使用如"200"等3位数字的ASCII码字符串。TCP/IP的应用协议中有很 多使用这种ASCII码字符串的协议。
对于ASCII码字符串型的协议来说换行具有重要意义。很多情况下,一行字 符串表示一个命令或一个应答,而空白则用来标识与参数之间的分割符。即,命 令和应答的消息通过换行区分、参数用空格区分。换行由"CR" (ASCII码的十 进制数为13)和"LF" (ASCII码的十进制数为10)两个控制符号组成。
表列出了FTP主要的命令、表汇总了FTP的应答信息。
电子邮件,顾名思义,就是指网络上的邮政。通过电子邮件人们可以发送编 写的文字内容、数码相片,还可以发送各种报表计算得出的数据等所有计算机可 以存储的信息。
电子邮件的发送距离不受限,可以在全世界互联网中的任何两方之间进行收 发。如果没有电子邮件,出差时也就无法接收最新的邮件信息。电子邮件还可以 提供邮件组的服务。它是指向邮件组中的所有用户同时发送邮件的功能。邮件组 现在被广泛用于公司或学校下达通知、不同国度的人们讨论共同的话题等场景。 出于以上这些优点,电子邮件已经成为当前人们普遍使用的一种服务。
提供电子邮件服务的协议叫做SMTP(Simple Mail Transfer Protocol)。SMTP 为了实现高效发送邮件内容,在其传输层使用了TCP协议。
早期电子邮件是在发送端主机与接收端主机之间直接建立TCP连接进行邮件 传输。发送人编写好邮件以后,其内容会保存在发送端主机的硬盘中。然后与对 端主机建立TCP连接,将邮件发送到对端主机的硬盘。当发送正常结束后,再从 本地硬盘中删除邮件。而在发送过程中一旦发现对端计算机因没有插电等原因没 有收到邮件时,发送端将等待一定时间后重发。
这种方法,在提高电子邮件的可靠性传输上非常有效。但是,互联网应用逐 渐变得越发复杂,这种机制也将无法正常工作。例如,使用者的计算机时而关机 时而开机的情况下,只有发送端和接收端都处于插电并且开机的状态时才可能实 现电子邮件的收发。由于日本属于东九时区,和美国之间存在时差。日本的白天 相当于美国的夜晚。如果大家都是只在白天开机,那么日本跟美国之间就根本无 法实现收发邮件。由于互联网是一个连接全世界所有人进行通信的网络,所以这 种时差问题就不得不考虑在内。
为此,在技术上改变了以往直接在发送端与接收端主机之间建立TCP连接的 机制,而引进了一种一直会连接电源的邮件服务器。发送和接收端通过邮件服 务器进行收发邮件。接收端从邮件服务器接收邮件时使用POP3 { Post Office Protocol)协议。
电子邮件的机制由3部分组成,它们分别是邮件地址,数据格式以及发送 协议。
使用电子邮件时需要拥有的地址叫做邮件地址。它就相当于通信地址和姓名。
互联网中电子邮件地址的格式如下:
名称@通信地址
例如,master@ tcpip. kusa. ac. jp中的master为名称,tcpip. kusa ac. jp 为地址。
电子邮件的地址和域名的构造相同。此处,kusa. ac. jp表示域名,tcpip 则表示master接收邮件的主机名称或为发送邮件所用的子网名称。现在个人邮件 地址和邮件组的格式完全相同,因此,光从地址上是无法区分个人电子邮件地址 和邮件组的。
现在,电子邮件的发送地址由DNS进行管理。DNS中注册有邮件地址及其作 为发送地址时对应的邮件服务器的域名。这些映射信息被称作MX记录。例如, kusa. ac. jp的MX记录中指定了mailserver. kusa. ac. jp。于是任何发给以 kusa. ac. jp结尾的地址的邮件都将被发送到mailserve. kusa. ac. jp服务器。就这 样,根据MX记录中指定的邮件服务器,可以管理不同邮件地址与特定邮件服务 器之间的映射关系。
很长一段时间里,互联网中的电子邮件只能处理文本格式的邮件。不过现 在,电子邮件所能发送的数据类型已被扩展到MIME, 可以发送静态图像、动 画、声音、程序等各种形式的数据。鉴于MIME规定了应用消息的格式,因此在 OSI参考模型中它相当于第6层表示层。
MIME基本上由首部和正文(数据)两部分组成。首部不能是空行,因为一 旦出现空行,其后的部分将被视为正文(数据)。如果MIME首部的"ContentType"中指定"Multipart/Mixed" , 并以"boundary= "后面字符作为分隔符,那 么可以将多个MIME消息组合成为一个MIME消息。这就叫做multipart。即,各个 部分都由MIME首部和正文(数据)组成。
" Content-Type"定义了紧随首部信息的数据类型。以IP首部为例,它就相 当于协议字段。表列出了具有代表性的" Content-Type"。
SMTP是发送电子邮件的协议。它使用的是TCP的25号端口。
SMTP建立一 个TCP连接以后,在这个连接上进行控制和应答以及数据的发送。客户端以文本的形式发出请求,服务端返回一个3位数字的应答。
每个指令和应答的最后都必须追加换行指令(CR、LF)。
随着电子邮件使用的普及,那些漫天的广告邮件和包含钓鱼连接的垃圾邮件 成为了日益严重的问题。由于SMTP本身没有验证发送者的功能,因此人们无法 避免这类邮件到达自己的邮件服务器。不过现在,通过"POP before SMTP"或 "SMTP认证" (SMTP Authentication)等功能进行认证,以此防止冒充发送者的人 也越来越多。
并且很多除了自己本域的邮件服务器以外,很多供应商已将网络设置为不与 其他网络的25号端口进行通信
当允许使用TELNET登录SMPT服务器时,可如表的形式在登 录"SMTP服务器后输入命令。
telnet 服务器名或其IP地址 25
假定自己是SMTP客户端,那么在执行SMTP相关命令以后可以收到 如表所示的应答信息。通过这样的尝试可以加深对SMTP协议中各个 动作的理解。
SMTP是发送邮件的协议,即,SMTP是想要发送邮件的计算机 向接收邮件的计算机发送电子邮件的一种协议。在以UNIX工作站为主的互联网 初期,这种机制没有什么问题,但是后来用个人电脑连接互联网的环境中就出现很多不便之处。
个人电脑不可能长时间处于开机状态。只有用户在使用时才会开机。在这种 情况下,人们希望一开机就能接收到邮件。然而SMTP没有这种处理机制。SMTP 的一个不利之处就在于它支持的是发送端主机的行为,而不是根据接收端的请求 发送邮件。
为了解决这个问题,就引人了POP协议。如图所示,该协议是一种用 于接收电子邮件的协议。发送端的邮件根据SMTP协议将被转发给一直处于插电 状态的POP服务器。客户端再根据POP协议从POP服务器接收对方发来的邮件。 在这个过程中,为了防止他人盗窃邮件内容,还要进行用户验证
POP与SMTP一样,也是在其客户端与服务器之间通过建立一个TCP连接完 成相应操作。POP的具体命令和相关应答代码如表所示。它的命令都是较短 的ASCII码字符串,应答更是极其简单,只有两种。正常的情况下为"+OK", 发 生错误或异常的情况下为"·-ERR"。
当允许使用TELNET登录POP服务器时,在以如下形式登录"POP 服务器后,可以手工执行表所列的命令。
telnet 服务器名或其IP地址 110
与前一节的SMTP一样,假定自己是POP客户端,在执行POP相关 命令以后可以收到相应的应答信息。
IMAP与POP类似,也是接收电子邮件的协议。在POP中邮件由客户端进 行管理,而在IMAP中邮件则由服务器进行管理。
使用IMAP时,可以不必从服务器上下载所有的邮件也可以阅读。由于IMAP 是在服务器端处理MIME信息,所以它可以实现当某一封邮件含有10个附件时 “只下载其中的第7个附件”的功能。这在带宽较窄的线路上起着非常重要的作 用。
而且IMAP在服务器上对“已读/未读“信息和邮件分类进行管理,因此,即 使在不同的计算机上打开邮箱,也能保持同步,使用起来非常方便。如此一来, 使用IMAP, 在服务器上保存和管理邮件信息,就如同在自己本地客户端的某个闪 存中管理自己的信息一样简单。
有了IMAP人们就可以通过个人电脑、公司的电脑、笔记本电脑以及智能手 机等连接到IMAP服务器以后进行收发邮件。由此,在公司下载的电子邮件就不 必在笔记本电脑和智能手机上转来转去。IMAP确实为使用多种异构终端的人们 提供了非常便利的环境。
虽然POP3是用来接收邮件的协议,但不要理解成没有SMTP一样能收取邮件,邮件服务器是通过SMTP来控制邮件的中转,两个邮件服务器之间传输工作和POP3一点关系都没有。
当两台不同的服务器进行消息通讯时,是SMTP进行握手,A服务器发送邮件到B服务器,B服务器的SMTP会替本地用户接受外面发过来的邮件,然后POP3/IMAP去读取SMTP收取的邮件。
SMTP是邮局,POP3是快递员,快递员只会去邮局领取邮件,而不是直接去发件人手上直接拿,两个地区(邮箱服务器)邮件收发也是通过邮局(SMTP)来完成
图示6个步骤进行说明:
用户A的邮箱为[email protected],通过foxmail客户端写好一封邮件点击发送,即提交到了QQ邮箱服务器,使用的是SMTP协议。
QQ邮箱会对A发送邮件的收件地址进行解析,判断是否为内部邮箱的账号,如果也是qq邮箱,会直接存储到自己的存储空间,如果不是则会发送到指定邮箱服务器,使用的也是SMTP协议。
163服务器收到邮件后会再次判断该邮件是否为自己的邮件,如果是则存到自己的存储空间,等待POP3服务去读取邮件
用户B收到消息后,打开客户端访问163服务器(也可以自己敲命令直接访问),163服务器会去调用POP3服务
Pop3服务接到指令后,读取存储空间中发送给B的未读邮件服务。
将读取到的邮件返回给客户端软件
SMTP服务的标准端口是25,邮件服务器之间通讯转发使用的都是25
587端口是客户端向服务器提交消息的推荐端口。
465端口是smtp的加密端口,个人理解:465是服务器与客户端之间的加密,25端口是服
务器与服务器的,是不能呢随便更改的,否则会收不到别的服务器发送的邮件。