上帝视角
应用层
我们前面介绍过TCP/IP模型的下三层,分别是网络接入层、网络层和传输层。它们都是为应用层服务的,传输应用层的各种数据,现在我们就来看看最高层的应用层。
应用层
在TCP/IP模型中,应用层提供的服务相当于OSI模型的应用层、表示层和会话层的服务总和。不仅包含了管理通信连接的会话层功能、数据格式转换的表示层功能,还包括主机间交互的应用层功能。
应用层功能
应用层的目的是向应用程序提供网络接口,直接向用户提供服务。相比于下层的网络协议,应用协议要常见得多,可能大家都听过HTTP、HTTPS、SSH等应用层协议。
应用层协议
TCP/IP模型中应用层位于传输层之上,传输层的端口号用于标识数据所对应的应用层协议。也就是说,有端口号的协议都是应用层协议。应用协议是终端设备之间的应用通信规则。应用之间交互的信息叫消息,应用协议定义这些消息的格式以及消息的控制或操作的规则。
应用协议与端口号
应用协议的通信方式可分为两类:
服务器和客户端模型P2P模型在服务器和客户端模型中,始终公开固定IP地址的主机为其它主机的应用程序提供服务,请求服务的主机之间不会互相通信。这些为其它主机提供服务的终端设备称为服务器,那些请求服务的主机则称为客户端。大多数应用层协议,都是这种模型。
服务器和客户端模型
在P2P模型中,没有特定的服务器或客户端,这些设备上安装的应用程序,可以在主机间建立对等连接,既可以提供服务,也可以接受服务。通常是大流量的应用程序采用P2P模型,比如:下载器等。
P2P模型
开发应用程序时,为了实现相应的功能和目的,可以使用现有的应用协议,也可以自己定义一个新的应用协议。同时,应用程序可以直接使用传输层以下的网络传输服务,开发者只需要关心选择哪种应用协议、如何开发即可,而不用考虑数据是如何传输到目的地。这也是TCP/IP分层模型的特点。
网络传输服务
应用程序有很多,包括Web浏览器、电子邮件、远程登录、文件传输、网络管理等。这些应用程序都会使用应用协议进行通信,应用协议正是为了实现应用程序的功能而设计和创造的。
应用程序
远程登录
网络设备的管理方式,分为本地管理和远程管理。远程管理是从本地主机登录到网络对端设备,向网络对端的设备发送管理数据,以实现设备管理的操作方式。通过远程管理,不仅可以直接使用主机上的应用,还可以对主机进行参数设置。远程登录主要使用Telnet和SSH两种协议管理网络设备。
远程登录
女神叫大刘去她公司修理网络,大刘都不用去女神的公司,直接远程登录解决问题。
Telnet
在实际工作中,除了个别无法远程管理设备外,大多会采用远程管理的方式,来管理设备的配置文件和系统文件。对比本地管理,远程管理不受物理位置限制,连上网络就可以对世界另一端的设备进行操控,更省去了插拔设备线缆、终端设置的过程,可以通过一个远程应用同时管理大量的网络设备。
Telnet协议定义了一台设备通过IP网络向远端设备发起明文管理连接的通信标准,可以在一台设备上通过Telnet协议与一台远端设备建立管理连接,并对远端设备实施配置和监控,这种方式的体验与本地登录设备并无区别。发起管理的设备为Telnet客户端,被管理的设备是Telnet服务器。因此,Telnet协议是一个典型的服务器和客户端模型的应用层协议。
Telnet协议
Telnet协议通过TCP协议建立服务器和客户端的一条连接,并通过这条连接向服务器发送用户名、密码和命令。Telnet协议使用的是TCP23端口,表示客户端在发起Telnet连接时,默认连接服务器的TCP23号端口。
当Telnet客户端输入命令后,这些命令通过TCP连接发送到23号端口,监听请求的守护进程Telnetd收到后,将命令发送给Shell,Shell为操作系统进行命令解释,然后操作系统执行Telnet客户端发出的命令。同理,操作系统按照相反的顺序,将命令执行的结果发回给Telnet客户端。
Telnet协议实现了远程命令传输,但是客户端和服务器跨越不可靠的公共网络时,在命令传输过程中可以截获Telnet通信的所有数据,然后使用截获的用户名和密码来通过Telnet服务器的身份认证,并登录到设备上对配置文件进行修改。
Telnet协议的安全隐患
Telnet协议存在重大安全隐患,不推荐在实验室之外的环境使用。
SSH
SSH协议全程是安全外壳协议,目的就是为了取代Telnet,SSH是加密的远程登录协议,提供更加安全的远程登录服务。使用SSH后会加密通信内容。即使信息被截获,由于无法解密,也无法了解数据的真正内容。
SSH协议
SSH协议常用版本是SSHv2,SSH客户端通过SSHv2协议与SSH服务器建立一条TCP的加密信道,建立这条安全信道的方式是让客户端使用服务器的RSA公钥来验证SSH服务器的身份。SSH协议默认使用TCP22端口。
如果客户端成功验证了服务器的身份,它们之间就会创建出一个会话密钥,并用双方协商出来的加密算法和会话密钥,对这个信道传输的数据进行加密。这样,两台设备之间就建立了一条安全的信道,使用这条安全信道发送密码,密码以密文的形式传输,通过服务器的身份认证。SSH就是通过这种方式建立加密信道,确保SSH服务器,也就是被管理设备的Shell免遭非法用户操作。
文件传输
除了远程登录,我们还需要从远端设备传输文件,文件传输协议提供的应用服务可以满足我们的需求。FTP是网络上文件传输的标准协议,FTP使用TCP作为传输协议,支持用户的登录认证和访问权限的控制。另一种常见的文件传输协议是TFTP协议,TFTP是一种简单的文件传输协议,不支持用户的登录认证,也没有复杂的命令。TFTP使用UDP作为传输协议,并有重传机制。
文件传输
FTP
FTP用于服务器和客户端之间传输文件,是IP网络上传输文件的通用协议。FTP采用客户端和服务器的模式,使用TCP协议提供可靠传输。FTP可以对登录服务器的用户名和密码进行验证,允许客户端指定文件的传输类型,并且可以设置文件的传输权限。
FTP使用两条TCP连接实现文件传输。一条是FTP控制连接,用来控制管理;另一条是FTP数据连接,用于数据传输。FTP控制连接用于传输FTP控制命令和命令执行的应答信息,比如登录用户名和密码的验证、发送文件的名称、发送方式的设置。这条连接在整个FTP会话过程中一直保持打开,通过ASCII码字符串发送请求和接收应答。在控制连接上无法发送数据,而FTP数据连接用于文件和文件列表的传输,仅在需要传输数据时建立数据连接,数据传输完毕后终止。
FTP协议
FTP控制连接使用的是TCP21号端口,也是FTP服务器的侦听端口,等待客户端的连接。在TCP21号端口进行文件GET(RETR)、PUT(STOR),以及文件表(LIST)等操作时,每次都会建立一个用于数据传输的数据连接。数据和文件表的传输正式在这个数据连接上进行的。
数据连接的TCP连接通常使用端口20。也可以使用PORT命令修改为其它值。
相同的一个文件,不同的操作系统可能有不同的存储方式。为了确保文件能够准确的传送给对方,常用2中传输模式:
ASCII模式ASCII模式是默认的文件传输模式。发送方把本地文件转换成标准的ASCII码,然后在网络中传输;接收方收到文件后,根据自己的文件存储方式,把它转换成本地文件。ASCII文件传输模式通常用于传输文本文件。二进制流模式二进制流模式也称为图像文件传输模式。发送方不做任何转换,把文件按照比特流的方式进行传输。二进制文件类型通常用于传送程序文件。在FTP数据连接过程中,有两种数据传输方式:主动方式和被动方式。
FTP主动传输方式,也称为PORT方式。采用主动方式建立数据连接时,FTP客户端会通过FTP控制连接向FTP服务器发送PORT命令,PORT命令携带参数:A1、A2、A3、A4、P1、P2,其中A1、A2、A3、A4表示需要建立数据连接的主机IP地址,而P1和P2表示客户端用于传输数据的临时端口号,临时端口号的数值为*P1+P2。当需要传输数据时,服务器通过TCP端口号20与客户端提供的临时端口建立数据传输通道,完成数据传输。在整个过程中,由于服务器在建立数据连接时主动发起连接,因此被称为主动模式。
主动模式
如果客户端在防火墙内部,主动方式可能会有问题,因为客户端的端口号是随机的,防火墙并不知道。默认安全策略,防火墙只会允许外部主机访问部分内部已知端口,阻断对内部随机端口的访问,从而无法建立FTP数据连接。这时,就需要使用FTP被动方式来进行文件传输。
被动方式也被称为PASV方式。FTP控制通道建立后,希望通过被动方式建立数据传输通道的FTP客户端会利用控制通道向FTP服务器发送PASV命令,告诉服务器进入被动方式传输。服务器选择临时端口号并告知客户端,命令参数和主动传输方式一致。当需要传输数据时,客户端主动与服务器的临时端口建立数据传输通道,并完成数据传输。在整个过程中,服务器是被动接收客户端的数据连接,所以被称为被动模式。
被动模式
采用被动方式时,两个连接都由客户端发起。一般防火墙不会限制内部的客户端发起的连接,这样就解决了主动方式下的问题。
TFTP
TFTP也是用于服务器和客户端之间传输文件的,对比FTP,TFTP没有复杂的交互接口和认证控制,适用于不需要复杂交互的网络环境。
TFTP采用客户端和服务器的模式,使用UDP协议传输,服务器使用端口号69侦听TFTP连接。由于UDP不能提供可靠的数据传输,因此TFTP使用超时重传机制确保数据正确发送。TFTP只能提供简单的文件传输能力,包括文件的上传和下载。不支持文件目录功能,也不能对用户的身份进行验证和授权。
TFTP下载
TFTP协议传输是由客户端发起的。当需要下载文件时,客户端向TFTP服务器发送一个读请求,然后从服务器接收数据,并向服务器发送确认;当需要上传文件时,由客户端向服务器发送一个写请求,然后向服务器发送数据,并接收服务器的确认。
TFTP上传
与FTP类似,TFTP传输文件有两种模式:netascii模式和octet模式。octet传输模式对应FTP的二进制流模式,用于传输程序文件;netascii模式对应FTP的ASCII模式,用于传输文本文件。
TFTP进行文件传输时,将传输文件看成是由多个连续的文件块组成。每一个TFTP数据报文中包含一个文件块,同时对应一个文件块编号。每次发完一个文件块后,就等待对方的确认,确认时指明块编号。发送方发完数据后,如果在规定时间内没收到对端的确认,那么发送方就会重新发送数据。发送确认的一方如果在规定时间内没收到下一个文件块数据,则重发确认报文。这种方式可以确保文件的传送不会因某一个数据的丢失而失败。
每次TFTP发送的数据报文中包含的文件块大小固定为
字节,如果文件长度恰好是
字节的整数倍,那么在文件传送完毕后,发送方还必须在最后发送一个不包含数据的报文,用来表示文件传输完毕。如果文件长度不是
字节的整数倍,那么最后传送的数据报文包含的文件块肯定小于
字节,正好作为文件结束的标志。电子邮件
电子邮件,顾名思义,就是指网络上的邮政。通过电子邮件,可以发送文字内容、图片,还可以发送报表数据等所有计算机可以存储的信息。电子邮件不受距离限制,可以与世界上任一的互联网用户互相联系。由于使用简易、投递迅速、易于保存、不受距离限制等特点,使得电子邮件已经成为人们普遍使用的一种应用。
电子邮件
大刘向女神发的第一封邮件。
通信架构
电子邮件在几十年的发展过程中出现了明显的变化,从原始的发送方电脑直接向接收方电脑发送电子邮件,演变成收发双方都使用邮件服务器代为收发邮件。通过这种方式,电子邮件通信不再依赖接收方当前是否在线,而电子邮件的通信过程由简单的发送方到接收方,演变成发送方电脑到发送方邮件服务器,发送方邮件服务器到接收方邮件服务器,以及接收方邮件服务器到接收方电脑的三个通信过程。并且参与通信的四方都不是直接相连,而是分别独立连接到互联网中。这个架构中,邮件发送方和接收方使用的电脑称为用户代理。
邮件架构
邮件地址
使用电子邮件时,需要拥有一个地址,这个地址叫做邮件地址,也叫邮箱地址。它相当于通信地址和姓名。我的电子邮件如下:
networkfox
qq.