2023年11月27日发(作者:)

TCPIP8应⽤层协议

8 应⽤层协议

8.1 TCP/IP应⽤层协议主要是指OSI参考模型中的第5层、第6层、第7层上半部分的协议。(会话层,表⽰层,应⽤层)

应⽤层协议定义:

利⽤⽹络的应⽤程序有很多,包括web浏览器、电⼦邮件、远程登陆、⽂件传输、⽹络管理等。能够让这些应⽤进⾏特定通信处理的正是应

⽤协议。

TCPIP等下层协议是不依赖于上层应⽤类型、适⽤性⾮常⼴的协议。⽽应⽤协议则是为了实现某种应⽤⽽设计和创造的协议。

应⽤协议与协议的分层:

应⽤可以直接享⽤传输层以下的基础部分。因为开发者只要关⼼选⽤哪种应⽤协议、如何开发即可,⽽不必担⼼应⽤中的数据该以何种⽅式

发送到⽬标主机等问题。这也是得益于⽹络层的功劳。

8.2 远程登录

远程登录是为了实现TSS(分时系统)环境,是将主机和终端的关系应⽤到计算机⽹络上的⼀个结果。TSS中通常有⼀个处理能⼒⾮常强的

主机。围绕着这台主机的是处理能⼒没有那么强的多个终端机器。这些终端通过专线与主机相连。

从⾃⼰的本地计算机登录到⽹络另⼀端计算功能的应⽤就叫做远程登录。

远程登录主要使⽤TELNETSSH两种协议。

8.2.1 TELNET

TELNET利⽤TCP的⼀条连接,通过这⼀条连接向主机发送⽂件命令并在主机上执⾏。本地⽤户好像直接与远端主机内部的shell相连似的,

直接在本地进⾏操作。

TELNET可以分为两类基本服务。⼀是仿真终端功能,⼆是协商选项机制。

TELNET经常⽤于登录路由器或⾼性能交换机等⽹络设备进⾏相应的设置。

通过TELNET登录主机或路由器等设备时需要将⾃⼰的登录⽤户名和密码注册到服务端。

选项:

TELNET中除了处理⽤户所输⼊的⽂字外,还提供选项的交互和协商功能。例如,为实现仿真终端(NVT,network virtual terminal)所⽤到

的界⾯控制信息就是通过选项功能发送出去的。

TELNET可⽤⾏模式或透明模式两种模式的设置,也是通过TELNET客户端与TELNET服务端之间的选项功能进⾏设置的。

⾏模式:客户端每从键盘输⼊⼀个换⾏,就将该⾏的数据作为1整⾏发送给服务端。

透明模式:客户端每输⼊⼀个字符都要发送给服务端。

TELNET客户端:

使⽤telnet命令,telnet 主机名 TCP端⼝号。所以(telnet 主机名 21)等同于(ftp 主机名)

8.2.2 SSH

SSH是加密的远程登录系统。TELNET中登录时⽆需输⼊密码就可以发送,容易造成通信窃听和⾮法⼊侵的危险。使⽤SSH后可以加密通信

内容。即使信息被窃听也⽆法破解所发送的密码、具体命令以及命令返回的结果是什么。

SSH还包括很多⾮常⽅便的功能:

1)可以使⽤更强的认证机制

2)可以转发⽂件

3)可以使⽤端⼝转发功能

端⼝转发是指将特定端⼝号所收到的消息转发到特定的IP地址和端⼝号码的⼀种机制。由于经过SSH连接的那部分内容被加密,确保了信息

安全,提供了更为灵活的通信。

使⽤端⼝转发的情况下,SSH客户端程序、SSH服务端程序都起着⼀个⽹关的作⽤。

8.3 ⽂件传输

FTP是在两个相连的计算机之间进⾏⽂件传输时使⽤的协议。FTP中也需要在登录到对⽅的计算机后才能进⾏相应的操作。

互联⽹上有⼀种FTP服务器是允许任何⼈进⾏访问的,这种服务器叫做匿名服务器。登录这些服务器时使⽤匿名或ftp都可以。

FTP的⼯作机制概要:

FTP是通过怎样的机制才得以实现⽂件传输的呢?它使⽤两条TCP连接:⼀条⽤来控制,另⼀条⽤于数据(⽂件)的传输。

⽤于控制的TCP连接主要在FTP的控制部分使⽤。例如登陆⽤户名和密码的验证、发送⽂件的名称、发送⽅式的设置。利⽤这个连接,可以

通过ASCII码字符串发送请求和接收应答。在这个连接上⽆法发送数据,数据需要⼀个专门的TCP进⾏连接。

FTP控制⽤的连接使⽤的是TCP 21号端⼝。在TCP 21号端⼝上进⾏⽂件GETPUT、以及⽂件⼀览等操作时,每次都会建⽴⼀个⽤于数据

传输的TCP连接。数据的传输和⽂件⼀览表的传输正是在这个新建的连接上进⾏。当数据传送完毕之后,传输数据的这条连接也会被断开,

然后会在控制⽤的连接上继续进⾏命令或应答的处理。

控制⽤的连接,在⽤户要求断开之前会⼀直保持连接状态。不过,绝⼤多数FTP服务器都会对长时间没有任何新命令输⼊的⽤户的连接强制

断开。

数据传输⽤的TCP连接通常使⽤端⼝20。不过可以⽤PORT命令修改为其它的值。出于安全的考虑,普遍在数据传输⽤的端⼝号中使⽤随机

数进⾏分配。

通过ASCII码字符串进⾏的交互处理:

FTP中请求命令中使⽤着“RETR”ASCII码字符串。⽽针对这些命令的应答则使⽤如“200”3位数字的ASCII码字符串。TCP/IP的应⽤协议

中有很多使⽤这种ASCII码字符串的协议。

对于ASCII码字符串型的协议来说换⾏具有重要意义。很多情况下,⼀⾏字符串表⽰表⽰⼀个命令或⼀个应答,⽽空⽩则⽤来标识与参数之

间的分割符。即,命令和应答消息通过换⾏区分、参数⽤空格区分。换⾏由“CR”“LF"两个控制符号组成。

8.4 电⼦邮件

8.4.1 电⼦邮件的⼯作机制

提供电⼦邮件服务的协议叫做SMTPSMTP为了实现⾼效发送邮件内容,在其传输层使⽤了TCP协议。

早期采⽤发送端发起与接收端直接建⽴TCP连接发送数据。不过这样会有些问题,主机不是⼀直打开的,不同⼦⽹中的私有IP主机不能直接

通信等。

后来引进了⼀种⼀直会连接电源的邮件服务器。发送和接收端通过邮件服务器进⾏收发邮件。接收端从邮件服务器接收邮件时使⽤POP3

议。

电⼦邮件的机制由3部分组成,它们分别是邮件地址、数据格式以及发送协议。

8.4.2 邮件地址

使⽤电⼦邮件时需要拥有的地址叫做邮件地址。它相当于通信地址和姓名。

互联⽹中电⼦邮件地址的格式如下:

名称@通信地址

现在,电⼦邮件的发送地址由DNS进⾏管理。DNS中注册有邮件地址及其作为发送地址时对应的邮件服务器的域名。这些映射信息被称作

MX记录。

8.4.3 MIME

过去很长⼀段时间⾥,互联⽹的电⼦邮件只能处理⽂本格式的邮件。不过现在,电⼦邮件所能发送的数据类型已被扩展到MIME,可以发送

静态图像、动画、声⾳、程序等各种形式的数据。鉴于MIME规定了应⽤消息的格式,因此在OSI参考模型中它相当于第6层表⽰层。

MIME基本上由⾸部和正⽂(数据)两部分组成。⾸部不能是空⾏,因为⼀旦出现空⾏,其后的部分将被视为正⽂(数据)。如果MIME⾸部

”Content-Type"中指定“Multipart/Mixed",并以”boundary=“后⾯字符作为分隔符,那么可以将多个MIME消息组合成为⼀个MIME消息。这

就叫做multipart。即各个部分都由MIME⾸部和正⽂(数据)组成。

”Content-Type"定义了紧随⾸部信息的数据类型。以IP⾸部为例,它就相当于协议字段。它可以表⽰⽂本、图像、动画等很多类型。

8.4.4 SMTP

SMTP是发送电⼦邮件的协议。它使⽤的是TCP25好端⼝。SMTP建⽴⼀个TCP连接以后,在这个连接上进⾏控制和应答以及数据的发

送。客户端以⽂本的形式发出请求,服务端返回⼀个3位数字的应答。

每个指令和应答的最后都必须追加换⾏指令(CRLF)。

当允许使⽤TELNET登录SMTP服务器时,可以⽤:telnet 服务器名或其IP地址 25

8.4.5 POP

前⼀节提到的SMTP是发送邮件的协议,即SMTP是想要发送邮件的计算机向接收邮件的计算机发送电⼦邮件的⼀种协议。

个⼈电脑长期处于关闭状态,⽤户使⽤时才开机。这种情况下,⼈们希望⼀开机就能接收到邮件。然⽽SMTP没有这种处理机制。SMTP

⼀个不利之处就在于它⽀持的是发送端主机的⾏为,⽽不是根据接收端的请求发送邮件。

为了解决这个问题,就引⼊了POP协议。该协议是⼀种⽤于接收电⼦邮件的协议。发送端的邮件根据SMTP协议将被转发给⼀直处于插电状

态的POP服务器。客户端再根据POP协议从POP服务器接受对⽅发来的邮件。在这个过程中,为了防⽌他⼈盗窃邮件内容,还要进⾏⽤户

验证。

POPSMTP⼀样,也是在其客户端与服务器之间通过建⽴⼀个TCP连接完成相应操作。POP的具体命令都是较短的ASCII码字符串,应答

“+OK”“-ERR"两种。

当允许使⽤TELNET登录POP服务器时,可以⽤:telnet POP服务器名或其IP地址 110

8.4.6 IMAP

IMAPPOP类似,也是接收电⼦邮件的协议。在POP中邮件由客户端进⾏管理,⽽在IMAP中邮件则由服务器进⾏管理。

使⽤IMAP时,可以不必从服务器上下载所有的邮件也可以阅读。由于IMAP是在服务端处理MIME信息,所以它可以实现当某⼀封邮件含有

10个附件时只下载其中的第7个附件的功能。这在带宽较窄的线路上起着⾮常重要的作⽤。⽽且IMAP在服务器上对已读/未读信息和邮件

分类进⾏管理,因此,即使在不同的计算机上打开邮箱,也能保持同步,使⽤起来⾮常⽅便。使⽤IMAP,在服务器上保存和管理邮件信

息,就如同在⾃⼰本地客户端的某个闪存中管理⾃⼰的信息⼀样简单。

IMAP为使⽤多种异构终端的⼈们提供了⾮常便利的环境。

8.5 WWW

万维⽹(WWWworld wide web)是将互联⽹中的信息以超⽂本形式展现的系统。也叫做web。可以显⽰WWW信息的客户端软件叫做

web浏览器。

借助浏览器,⼈们不需要考虑该信息保存在哪个服务器,只需要轻轻点击⿏标就可以访问页⾯上的链接并打开相关信息。

8.5.2 WWW基本概念

WWW定义了3个重要的概念,分别是访问信息的⼿段与位置(URIuniform resource identifier)、信息的表现形式(HTML,超⽂本标记

语⾔)以及信息转发(HTTP,超⽂本传输协议)等操作。

8.5.3 URI

统⼀资源标识,⽤于标识资源。URI是⼀种可以⽤于WWW之外的⾼效的识别码,它被⽤于主页地址、电⼦邮件、电话号码等各种组合中。

URLuniform resource locator)统⼀资源定位,⽤来标识互联⽹中资源(⽂件)的具体位置。但是URI不局限于标识互联⽹资源,它可以

作为所有资源的识别码。

URIhttp⽅案的具体格式如下:

其中主机名标识域名或IP地址,端⼝号标识传输端⼝号。http默认端⼝号为80。路径是指主机上该信息的位置,访问内容标识要传给CGI

信息,部分信息表⽰页⾯当中的位置等。

这种表⽰⽅法可以唯⼀地标识互联⽹中特定的数据。不过,由于⽤http⽅案展现的数据随时都有可能发⽣变化,所以即使将⾃⼰喜欢的页⾯

URI记住,也不能保证下次是否还能访问到该页。

8.5.4 HTML

HTML是记述web页的⼀种语⾔(数据格式)。它可以指定浏览器中显⽰的⽂字、⽂字的⼤⼩和颜⾊。此外,不仅可以对图像或动画进⾏相

关设置,还可以设置⾳频内容。

HTML具有纯⽂本的功能。在页⾯中不仅可以为⽂字或图像附加链接,当⽤户点击那些链接时还可以呈现该链接所指⽰的内容。绝⼤多数互

联⽹的web页,都以链接的形式指向关联的其它信息。逐⼀点开这些链接就可以了解信息。

HTML也可以说是WWW通⽤的数据表现协议。即使是在异构的计算机上,只要是可以⽤HTML展现的数据,那么效果基本上是⼀致的。如

果把它对应到OSI参考模型,那么可以认为HTML属于WWW的表⽰层。不过,鉴于现代计算机⽹络的表⽰层尚未万全准备就绪,根据操作系

统和所⽤软件的不同,最终表现出来的效果可能有细微差别。

8.5.5 HTTP

当⽤户在浏览器的地址栏⾥输⼊所要访问web页⾯的URI以后,HTTP的处理即会开始。HTTP中默认使⽤80端⼝。它的⼯作机制,⾸先是客

户端向服务器的80端⼝建⽴⼀个TCP链接,然后在这个TCP连接上进⾏请求和应答以及数据报⽂的发送。

HTTP中常⽤的有两个版本,⼀个HTTP1.0,另⼀个是HTTP1.1。在HTTP1.0中每⼀个命令和应答都会触发⼀次TCP连接的建⽴和断开。⽽

HTTP1.1开始,允许在⼀个TCP连接上发送多个命令和应答。由此,⼤量地减少了TCP连接的建⽴和断开操作,从⽽提⾼了效率。

当允许HTTP服务器和TELNET连接时,可以以如下形式登录HTTP服务器后,再以⼿动形式执⾏HTTP的命令。

telnet 服务器名或其IP地址 80

8.5.6 JavaScriptCGICookie

JavaScriptWeb的基本要素为URIHTMLHTTP。然⽽仅有这些还⽆法更改与条件相符的动态内容。JavaScript是⼀种嵌⼊在HTML

的编程语⾔,作为客户端程序可以运⾏于多种类型的浏览器中。这些浏览器将嵌⼊JavaScriptHTML下载后,其对应的JavaScript程序就可

以在客户端得到执⾏。

CGICGIweb服务器调⽤外部程序时所使⽤的⼀种服务端应⽤的规范。

⼀般的web通信中,只是按照客户端请求将保存在web服务器硬盘中的数据转发⽽已。这种情况下客户端每次收获的信息也是同样(静态)

的内容。⽽引⼊CGI以后客户端请求会触发web服务器端运⾏另⼀个程序,客户端所输⼊的数据也会传给这个外部程序。该程序运⾏结束后

将⽣成的HTML和其它数据再返回给客户端。

利⽤CGI可以针对⽤户的操作返回给客户端有各种各样变化(动态)的信息。论坛和⽹上购物系统中就经常使⽤CGI调⽤外部程序或访问数

据库。

Cookieweb应⽤为了获取⽤户信息使⽤⼀个叫做Cookie的机制。web服务器⽤Cookie在客户端保存信息(多为⽤户名登录名等信

息)。Cookie常被⽤于保存登录信息或⽹络购物中放⼊购物车的商品信息。

web服务器检查Cookie可以确认是否为同⼀对端的通信。从⽽存放于购物车⾥的商品信息就不必要在保存到服务器了。

8.6 ⽹络管理

TCP/IP中⽹络管理中可以使⽤SNMP收集必要的信息。它是⼀款基于UDP/IP的协议。

8.7 其它应⽤层协议

8.7.1 多媒体通信协议

8.7.2 P2P

互联⽹上电⼦邮件的通信,普遍属于⼀台服务器对应多个客户端的C/S模式,即1N的通信形态。

与之不同,⽹络上的终端或主机不经服务器直接11相互通信的情况叫做P2Ppeer to peer)。这就好⽐使⽤⽆线收发器进⾏⼀对⼀通

话。P2P中主机具备客户端和服务端两⽅⾯的功能,以对等的关系相互提供服务。

IP电话中也有使⽤P2P的例⼦。使⽤P2P后,可以分散⾳频数据给⽹络带来的负荷,实现更⾼效的应⽤。例如互联⽹电话Skype就采⽤了

P2P的功能。

除了IP点化外,其它实现互联⽹的⽂件传输应⽤如BitTorrent协议或⼀部分群组软件等,也使⽤到了P2P的技术。