常见的应用层协议

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wk_bjut_edu_cn/article/details/82887221

一、DHCP

DHCP概念

动态主机配置协议,是一个应用层协议,使用UDP协议工作。当我们将客户主机ip地址设置为动态获取方式时,DHCP服务器就会根据DHCP协议给客户端分配IP,使得客户机能够利用这个IP上网。

DHCP操作

1.寻找DHCP Server

当DHCP客户机第一次登录网络的时候(也就是客户机上没有任何IP地址数据时),它会通过UDP 67端口向网络上发出一个DHCPDISCOVER数据包(包中包含客户机的MAC地址和计算机名等信息)。因为客户机还不知道自己属于哪一个网络,所以封包的源地址为0.0.0.0,目标地址为255.255.255.255,然后再附上DHCP discover的信息,向网络进行广播。 

2. 提供IP地址租用

当DHCP Server监听到客户机发出的DHCP discover广播后,它会从那些还没有租出去的地址中,选择最前面的空置IP,连同其它TCP/IP设定,通过UDP 68端口响应给客户机一个DHCP OFFER数据包(包中包含IP地址、子网掩码、地址租期等信息)。此时还是使用广播进行通讯,源IP地址为DHCP Server的IP地址,目标地址为255.255.255.255。同时,DHCP Server为此客户保留它提供的IP地址,从而不会为其他DHCP客户分配此IP地址。

由于客户机在开始的时候还没有IP地址,所以在其DHCP discover封包内会带有其MAC地址信息,并且有一个XID编号来辨别该封包,DHCP Server响应的DHCP OFFER封包则会根据这些资料传递给要求租约的客户。

3. 接受IP租约

如果客户机收到网络上多台DHCP服务器的响应,只会挑选其中一个DHCP OFFER(一般是最先到达的那个),并且会向网络发送一个DHCPREQUEST广播数据包(包中包含客户端的MAC地址、接受的租约中的IP地址、提供此租约的DHCP服务器地址等),告诉所有DHCP Server它将接受哪一台服务器提供的IP地址,所有其他的DHCP服务器撤销它们的提供以便将IP地址提供给下一次IP租用请求。此时,由于还没有得到DHCP Server的最后确认,客户端仍然使用0.0.0.0为源IP地址,255.255.255.255为目标地址进行广播。

4. 租约确认

当DHCP Server接收到客户机的DHCP REQUEST之后,会广播返回给客户机一个DHCP ACK消息包,表明已经接受客户机的选择,并将这一IP地址的合法租用以及其他的配置信息都放入该广播包发给客户机。

客户机在接收到DHCP ACK广播后,会向网络发送三个针对此IP地址的ARP解析请求以执行冲突检测,查询网络上有没有其它机器使用该IP地址;如果发现该IP地址已经被使用,客户机会发出一个DHCP DECLINE数据包给DHCP Server,拒绝此IP地址租约,并重新发送DHCP discover信息。此时,在DHCP服务器管理控制台中,会显示此IP地址为BAD_ADDRESS。

如果网络上没有其它主机使用此IP地址,则客户机的TCP/IP使用租约中提供的IP地址完成初始化,从而可以和其他网络中的主机进行通讯。

不同的网络

像其他应用层进程一样,客户可以在某个网络上,而服务器可以在相隔好几个网络之外的另一个网络上。这就带来一个问题。DHCP请求是广播发送的,因为客户不知道服务器的IP地址。而广播的IP数据报不能通过任何路由器。路由器收到这样的分组就会丢弃它。全1的IP地址是一个受限广播地址。

要解决这个问题,就需要一个中介物。某台主机(或是一台能够配置为在应用层工作的路由器)可用来充当中继。在这种情况下,该主机就称为中级代理。中级代理直到DHCP服务器的单播地址,并在端口67监听广播报文。当它收到这种类型的分组后,就把它封装成一个单播数据报,并且把此请求发送给DHCP服务器。携带了单播目的地址的分组可以被任何一个路由器转发,最终到达DHCP服务器。DHCP服务器知道这个报文来自中继代理,因为在请求报文中有一个字段定义了中继代理的IP地址。中继代理在收到回答之后,再把它发送给DHCP客户。

二、DNS

DNS概念

万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。

域名系统

在因特网规模还还很小的时候,映射是通过主机文件来实现的。在这个主机文件中仅包含名字和地址这两列。每台主机都可以把主机文件存储在自己的磁盘上,并根据一个总主机文件进行定期更新。当程序或用户需要把名字映射为地址时,主机就可以查找主机文件并找出相应的映射。

但是时至今日,已经不可能用一个单独的主机文件把所有的地址和名字关联起来。主机文件会因为太大而无法存储在每台主机上。另外,每当映射关系发生变化时,也不可能对全世界所有的主机文件都进行更新。

目前采用的解决办法是将这个巨大的信息量划分为若干个较小的组成部分,并把每一部分存储在不同的主机上。使用这种方法时,需要映射的计算机可以寻找持有所需信息的最近的计算机。这种方法就是域名系统。

域名空间

名字被定义在根置于顶部的倒置树的结构中。这个树最多只能有128级:从第0级(跟)到第127级。

DNS域名服务器

DNS是能够在不同平台上使用的协议。在因特网中,域名空间(树)被划分为三个不同的部分:类属域、国家域和反向域。

因为完整的域名体系结构不能存储在一个单独的服务器上,所以它们分散地存储在若干个服务器上。一个服务器负责的范围,或者说有管理权想的范围,就称为区。

DNS服务器的管辖范围是以“区”为单位。区可能等于或小于域,但一定不可能大于域。

解析

把名字映射为地址,或者把地址映射为名字,都称为地址解析。

解析程序

DNS被设计为客户-服务器应用程序。需要把地址映射为名字或把名字映射为地址的主机要调用称为解析程序的DNS客户程序。解析程序访问靠得最近的DNS服务器并发出映射请求。若DNS服务器有这个信息,就满足解析程序的要求,否则,让解析程序再去找其他的服务器,或者直接请其他服务器提供这个信息。

当解析程序收到映射后,就解释这个响应,看它是真正的解析还是差错,最后把结果交给请求映射的进程。

递归解析

客户(解析程序)可以向名字服务器请求递归回答。这就表示解析程序期望服务器提供最终的解答。若服务器就是这个域名的权限服务器,就检查它的数据库并响应。若服务器不是它的权限服务器,就将请求发送给另一个服务器(通常是父服务器)并等待响应。若服务器是权限服务器,则响应,否则,就将查询再发送给另一个服务器。当查询最终被解析后,响应就原路返回,直至最后到达发出请求的客户。

迭代解析

迭代解析

若客户没有要求递归回答,则映射可以按迭代方式进行。若服务器是这个域名的权限服务器,它就发送解答。若不是,就返回(到客户)它认为可以解析这个查询的服务器的IP地址。客户再次向第二个服务器发送查询。若新找到的服务器能够解决这个问题,就i用IP地址回答,否则,就向客户返回一个新的服务器的IP地址。现在客户必须向第三个服务器再次查询。这个过程称为迭代的,因为客户向多个服务器重复同样的查询。

三、TELNET与SSH

TELNET概念

Telnet协议是TCP/IP协议族中的一员,是Internet远程登录服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。

网络虚拟终端(NVT)

接入到远程计算机的过程很复杂,这是因为每一个计算机及其操作系统都会接受一些特殊的字符组合作为记号。例如:在运行DOS操作系统的计算机中,文件结束标记是Ctrl+z,但在UNIX操作系统中则是Ctrl+d。

我们现在是和异构系统打交道。如果我们想接入世界上的任何一台远程计算机,那么我们必须首先知道将要连接的计算机的类型是什么,我们还必须安装那台计算机所使用的特定的终端仿真程序。TELNET解决这个问题的方法是定义一个通用的接口,称为网络虚拟终端字符集(NVT)。通过这个接口,TELNET客户把来自本地终端的字符(数据或命令)转换为NVT形式,然后交付给网络。另一方面,TELNET服务器把NVT形式的数据和命令转换成远程计算机可接受的形式。

远程的操作系统没有被设计成能够从TELNET服务器接收字符,它的设计使得它必须从终端驱动程序接收字符。解决这个问题的方法是增加一个称为伪终端驱动程序的软件,它将这些字符伪装成好像是从另一个终端发来的。然后操作系统就可以把这些字符传递给适当的应用程序。

四、TFTP

概念

TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户端与服务器之间进行简单文件传输的协议。和使用TCP的文件传输协议(FTP)不同,为了保持简单短小,TFTP使用了UDP。TFTP的实现(和它所需要的UDP、IP、和设备驱动程序)可以放入只读存储器中

TFTP是一个简单的协议,适合于只读存储器,仅用于无盘系统进行系统引导,它只使用几种报文格式,是一种停止等待协议

特点

1、简单
2、占用资源小
3、适合传递小文件
4、适合在局域网进行传递
5、端口号为69
6、基于UDP实现

UDP端口

在TFTP客户和TFTP服务器之间的通信可能持续很长的时间(几秒钟或几分钟)。若TFTP服务器使用熟知端口69和客户进行长时间的通信,那么在这段时间内就没有其他的客户能够使用这样的服务。解决这问题的方法是使用熟知端口进行初始连接,但对剩下的通信则采用临时端口。

步骤:

1.服务器使用熟知端口69被动打开连接。

2.客户主动打开连接,它使用临时端口作为源端口而熟知端口69作为目的端口。它使用RRQ报文或WRQ报文做到这点。

3.服务器主动打开连接,它使用新的临时端口作为源端口,而使用收到的来自客户的临时端口作为目的端口。它使用这些端口发送DATA或ACK或ERROR报文。服务器腾出熟知端口(69)使其他客户能够使用。当客户收到来自服务器的第一个报文时,它就使用自己的临时端口和服务器发送的临时端口进行今后的通信。

缺陷

TFTP分组中并不提供用户名和口令。这是TFTP的一个特性(即"安全漏洞")。由于TFTP是设计用于系统引导进程,它不可能提供用户名和口令。
目前大多数TFTP服务器提供了一个选项来限制只能访问特定目录下的文件,这个目录中只包含无盘系统进行系统引导时所需的文件

TFTP举例

操作码 功能
1 读请求,即下载
2 写请求,即上传
3 表示数据包,即DATA
4 确认码,即ACK
5 错误

因为udp的数据包不安全,即发送方发送是否成功不能确定,所以TFTP协议中规定,为了让服务器知道客户端已经接收到了刚刚发送的那个数据包,所以当客户端接收到一个数据包的时候需要向服务器进行发送确认信息,即发送收到了,这样的包成为ACK(应答包)

为了标记数据已经发送完毕,所以规定,当客户端接收到的数据小于516(2字节操作码+2个字节的序号+512字节数据)时,就意味着服务器发送完毕了

 TFTP数据包格式

猜你喜欢

转载自blog.csdn.net/wk_bjut_edu_cn/article/details/82887221