TCP/IP学习笔记(五)
作者:肖进
一、 DNS系统
1、DNS的授权:
网络信息中心NIC负责分配顶极域和委派其他指定地区域的授权机构。一个独立管理的DNS子树称为一个区域,许多二极域将他们的子域划分为更小的区域。当一个系统加入到一个区域中时,该区域的DNS管理者为该新系统申请一个域名和一个IP地址,并将他们加入到名字服务器的数据库中。
一个名字服务器负责一个或多个区域,一个区域的管理者必须为该区域提供一个主名字服务器和至少一个辅助名字服务器。
每个主名字服务器都必须知道根名字服务器的IP地址,根服务器必须知道所有二极域中每个授权名字服务器的名字和IP地址。
2、DNS报文格式:由12个字节首部和4个长度可变的字段组成。
标识 |
标志 |
问题数 |
资源记录数 |
授权资源记录数 |
额外资源记录数 |
查询问题 |
|
问答(资源记录数可变) |
|
授权(资源记录数可变) |
|
额外信息(资源记录数可变) |
◆ 标识字段由客户程序设置并由路由器返回结果。客户程序通过它来确定响应与查询是否匹配。
◆ 标志字段被划分为若干子字段:
QR |
opcode |
AA |
TC |
RD |
RA |
(zero) |
rcode |
QR-1位,0表示查询,1表示响应报文。
Opcode-4位,0表示标准查询,1表示反向查询,2表示服务器状态请求。
AA-1位,表示授权回答。
TC-1位,表示时可截断的,使用UDP时,它表示应当的总长度超过512字节时,只返回前512个字节。
RD-1位,表示期望递归。该位能在一个查询中设置,并在响应中返回。这个标志告诉名字服务器必须处理这个查询。如果该位为0,且被请求的名字服务器没有一个授权回答,它就返回一个能解答该查询的其他名字服务器列表,这称为叠代查询。
RA-1位,表示可用递归。如果名字服务器支持递归查询,则在响应中将该位置为1。
Rcode-4位返回码,0表示没有差错,3表示名字差错。名字差错只有从一个授权服务器上返回,它表示在查询中指定的域名不存在。
随后的4个16位的字段说明最后4个变长字段中包含的条目数。对于查询报文,问题数通常是1,而其他3项均为0。对于应答报文,问答数至少为1,剩下的2项可以是0或非0。
3、DNS查询报文中的问题部分:
格式如下,通常只有一个问题。
查询名 |
|
查询类型 |
查询类 |
查询名是要查找的名字,它是一个或多个标识符的序列。每个标识符以首字节的计数值来说明随后标识符的字节长度,每个名字以最后字节为0结束,长度为0的标识符是根标识符。计数字节的值必须为0-63,因为标识符的最大长度仅为63。该字段无需以整32为为边界,即无需填充字节。
举例:gemini.tuc.noao.edu的存储:
6gemini3tuc4noao3edu0
每个问题有一个查询类型,而每个响应(资源记录)也一个类型。最常见的查询类型是A类型(值为1),表示期望获得查询名的IP地址,一个PTR查询(值为12)则请求获得一个IP地址对应的域名。
查询类一般是1,指互联网地址。
4、DNS响应报文中的资源记录部分:
DNS报文中的最后三个字段,回答字段、授权字段和附加信息字段,均采用一种称为资源记录(RR)的相同格式。RR格式如下:
域名 |
|
类型 |
类 |
生存时间 |
|
资源数据长度 |
|
资源数据 |
域名是记录中资源数据对应的名字,它的格式和前面的查询名字段格式一样。
类型说明RR的类型码,它和前面的查询类型值是一样的。通常为1,表示互联网数据。
生存时间是客户程序保留该资源记录的秒数,资源记录通常的生存时间为2天。
资源数据长度说明资源数据的数量,该数据的格式依赖域类型字段的值,对于类型A资源数据是4字节的IP地址。
5、指针查询:给定IP地址,返回与该地址对应的域名。
例如顶极域名edu和它下面的noao域,对应的是网络号为140.252的B类网络。noao.edu的下一级必须是该IP地址的第一个字节(这里是140),再下一级为该IP地址的下一个字节(这里是252)。由于DNS名字是由DNS树的底部逐步向上书写的。这意味者IP地址为140.252.13.33的主机,它的DNS名字是33.13.252.140.noao.edu。
6、主机名检查:
当IP数据报到达一个作为服务器的主机时,无论时UDP数据报还是TCP连接请求,服务器进程所能获得的是客户的IP地址和端口号,某些服务器需要客户的IP地址来获得在DNS中的指针记录。
7、 资源记录:
IP地址查询为A类型,指针查询为类型PTR。名字服务器返回的资源记录:回答RR、授权RR和附加信息RR。
· (1) A-一个A记录定义了一个IP地址。
· (2) PTR-指针记录用于指针查询,IP地址被看作是noao.edu域下的一个域名。
· (3) CNAME-表示规范名字,用来表示一个域名,而有规范名字的域名通常叫做别名。某些FTP服务器使用它向其他的系统提供一个易于记忆的别名。
· (4) HINFO-表示主机信息,包括说明主机CPU和操作系统的两个字符串。
· (5) MX-邮件交换记录。功能:如果有邮件要发往use@foo.com,就将邮件发送到relay1.uu.net。
· (6) NS-名字服务器记录。它说明一个域的授权名字服务器,它由域名表示。
8、 高速缓存:
为了减少Internet上的DNS通信量,所有的名字服务器均使用高速缓存。
9、 用UDP还是TCP:
DNS均支持UDP和TCP,端口号都是53。当查询请求响应的长度超过了512个字节,而仅返回前512个字节,在这种情况下,名字解析器通常使用TCP重发原来的查询请求。既然DNS主要使用UDP,因此好的重传和超时程序就很重要了。
二、TFTP:简单文件传送协议
1、协议
开始工作时,TFTP的客户域服务器交换信息,客户发送一个读请求或写请求给服务器。在一个无盘系统进行系统引导的正常情况下,第一个请求时读请求(RRQ)。
TFTP报文格式如下:(5种)
IP首部 |
UDP首部 |
操作码1或2 |
文件名 |
0 |
模式 |
0 |
操作码3 |
块编号 |
数据 |
操作码4 |
块编号 |
操作码5 |
差错码 |
差错信息 |
0 |
TFTP报文的头两个字节表示操作码。对于读请求和写请求(WRQ),文件名字段说明客户要读写的位于服务器上的文件,这个文件字段以0字节作为结束。模式字段是一个ASCII码串netascii或octet,同样以0字节结束。Netascii表示数据以成行的ASCII码字符组成,以两个字节回车换行作为结束符。这两个行结束字符在这种格式和本地主机使用的行定界符之间进行转换。Octet则将数据看作8位一组的字节六而不作任何解释。
每个数据分组包含一个块编号字段,它以后要在确认分组中使用。以读一个文件为例,TFTP客户需要发送一个读请求说明要读的文件名和文件模式。如果这个能被这个客户读取,TFTP服务器就返回一个块编号为1的数据分组,TFTP服务器又发送一个块编号为1的ACK。如此重复知道这个文件传送完。除了最后一个数据分组可含有不足512字节的数据,其他每个数据分组均含有512个字节的数据。当TFTP客户收到一个不足512字节的数据分组,就知道它收到了最后一个数据分组。
在写请求的情况下,TFTP客户发送WRQ指明文件名和模式。如果该文件能被该客户写,TFTP服务器就返回块编号为0的ACK包,该客户就将文件的头512字节以块编号为1发出。服务器则返回块编号为1的ACK。
这种协议的数据传输称为停止等待协议。
最后一种TFTP报文类型是差错报文。它用于服务器不能处理读请求或写请求的情况。在文件传输过程中的读或写差错也会导致传送这种报文,接着停止传输。
既TFTP使用不可靠的UDP,TFTP就必须处理分组丢失和分组重复。
2、 安全性
由于TFTP设计用于系统引导过程,它不可能提供用户名和口令。
三、BOOTP:引导程序协议
先讲一下RARP的不足:(1)IP地址是唯一的返回结果(2)由于RARP使用链路层广播,因此RARP请求不会被路由器转发。
BOOTP使用UDP,且通常需要与TFTP协同工作。
1、分组格式
IP首部 |
UDP首部 |
BOOTP请求/应答 |
操作码(1,2) |
硬件类型1 |
硬件地址长度6 |
跳数 |
事务标识 |
|||
秒数 |
未使用 |
||
客户IP地址 |
|||
你的IP地址 |
|||
服务器IP地址 |
|||
网关IP地址 |
|||
客户主机硬件地址(16字节) |
|||
服务器主机名(64字节) |
|||
引导文件名(128字节) |
|||
特定厂商信息(64字节) |
操作码:1表示请求,2表示应答。
硬件类型:1表示以太网。
跳数:客户设置为1,但也能被代理服务器设置。
事务标识:客户设置并由服务器返回的32位整数,客户用它对请求和应答进行匹配。对每个请求,客户应将它设置位一个随机数。
秒数:客户设置为一个时间制服务求能够看到这个时间值,备用服务器在等待时间超过这个时间值才会响应客户的请求,这意味着主服务器没有启动。
IP地址:如果客户已经知道自身的IP地址就写入,否则将该字段设置为0。对于后面的情况,服务器用该客户的IP地址写入“你的IP地址”字段。服务器字段由服务器填写,如果使用了代理服务器,则该代理服务器就填写“网关IP地址”字段。
客户硬件地址:客户必须设置,尽管以太网数据帧头部和UDP首部都包括这个值。
服务器主机名:为一个空值中止符,由服务器填写,服务器还将在“引导文件名”字段填写包括用于系统引导的文件名及其所在位置的路径全名。
特定厂商区域:用于BOOTP扩展。
当一个客户使用BOOTP进行系统引导时,通常是采用链路层广播,IP首部中的IP地址为255.255.255.255,源地址通常是0.0.0.0,因为此时客户还不知道自身的IP地址。
2、端口号:
BOOTP服务器端口号是67,BOOTP客户为68。
作者:肖进
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.e1idc.net