FTP(文件传输协议)是一种多通道协议,采用C/S(Client/Server)架构,客户端与服务器端建立TCP连接之后即可实现文件的上传和下载。下面是关于单、多通道的解释:
单通道协议:通信只需建立一个TCP/UDP会话,使用一个固定的端口。多通道协议:通信时需要建立多个TCP/UDP会话,使用的端口未必固定,动态协商生成。在FTP协议中使用的两个通道分别是控制通道和数据通道。数据通道用来传输数据;控制通道用来下达FTP的操作指令和进行登录认证。FTP的工作模式也分为主动模式和被动模式。
被动模式。 控制通道:由Client端发起,client端随机一个端口N,访问服务器的21号端口,服务器告知客户端(x.x.x.x,P1,P2)。x.x.x.x是服务器的IP地址,P1和P2是两个随机生成的数。 数据通道:由Client主动发起,client使用N+1端口,访问服务器的P1x256+P2号端口。主动模式。 控制通道:由Client主动发起,Client使用随机的端口号N,访问服务器的21号端口,客户端告知服务器(x.x.x.x,P1,P2)。 数据通道:Server主动发起,Server使用20号端口,访问客户端的N+1端口,N+1=P1x256+P2。还有一个简单文件传输协议(TFTP),是早期用来传输小文件的,现在很少使用,使用的是UDP协议和69号端口。
在DHCP的工作过程中,客户端与服务器之间通过DHCP报文的交互进行地址或其他配置信息的请求和确认。DHCP报文格式如下所示:
op:DHCP报文的操作类型,分为请求报文和响应报文,1为请求报文;2为响应报文。htype、hlen:DHCP客户端的硬件地址类型和长度。hops:DHCP报文经过的DHCP中继的数目。DHCP请求报文每经过一个DHCP中继,该字段就会增加1。xid:客户端发起一次请求时选择的随机数,用来标识一次地址请求过程。secs:DHCP客户端开启DHCP请求后的时间。flags:第一个比特为广播响应标识,用来标识DHCP服务器响应报文是采用单播还是广播发送,0表示采用单播方式,1表示采用广播方式。其余比特保留不用。ciaddr:DHCP客户端的IP地址。yiaddr:DHCP服务器分配给客户端的IP地址。siaddr:DHCP客户端获取IP地址等信息的服务器IP地址。giaddr:DHCP客户端发出请求报文后经过的第一个DHCP中继的IP地址。chaddr:DHCP客户端的硬件地址。DHCP共有8种报文,具体类型和功能如下表所示:
报文类型主要功能DHCP-DiscoverDHCP客户端广播发送,用来查找网络中可用的DHCP服务器DHCP-OfferDHCP服务器用来响应客户端的DHCP-Discover请求,并为客户端指定相应配置参数DHCP-RequestDHCP客户端广播发送给DHCP服务器,用来请求配置参数或者续借租期DHCP-AckDHCP服务器通知客户端可以使用分配的IP地址和配置参数DHCP-NakDHCP服务器通知客户端地址请求不正确或者租期已过期DHCP-ReleaseDHCP客户端主动向DHCP服务器发送,告知服务器该客户端不再需要分配的IP地址DHCP-DeclineDHCP客户端发现地址冲突或由于其他原因导致地址不可用,则发送DHCP-Decline报文,通知服务器所分配的IP地址不可用DHCP-InformDHCP客户端已经有IP地址,用它来向服务器请求其他的配置参数为了获取一个可用的IP地址,DHCP客户端需要和DHCP服务器进行报文交互,下面是一个标准的交互过程: (1)CLIENT首先发出广播的DHCPDISCOVER报文,广播的目的是让DHCP SERVER能够收到这个请求报文。在这个报文中,CLIENT可以在“选项”字段中加入“request paramter list”选项,表明自己想要获得的各种参数,而且四个IP地址字段都必须为0。
(2)由于DHCPDISCOVER报文是广播,那么所有的DHCP SERVER都能够收到,所有的DHCP SERVER都会响应一个DHCPOFFER报文,其中“你的IP地址”字段就是DHCP SERVER能够提供给CLIENT使用的IP地址,而且DHCP SERVER会把自己的IP地址放在“选项”字段中以便CLIENT区分不同的DHCP SERVER,发出此报文后,在DHCP SERVER上就会存在一个已分配IP地址的记录。DHCPOFFER 在IP和MAC绑定的情况下用单播工作。
(3)CLIENT能够收到所有的DHCPOFFER报文,但CLIEN只能处理其中的一个,一般的原则是CLIENT接收、处理最先收到的那个DHCPOFFER报文。CLIENT会再发出一个广播的DHCPREQUEST报文,在“选项”字段中会加入选中的DHCP SERVER的IP地址和用户想要的IP地址,之所以广播是因为要通知所有的DHCP SERVER进行相应的处理。
(4)DHCP SERVER收到DHCPREQUEST报文,判断“选项”字段中的DHCP SERVER的IP地址是否与自己的地址相同,不相同,则不做任何处理,如果自己发出过DHCPOFFER报文,则清除相应IP地址记录;当“选项”字段中的DHCP SERVER的IP地址是与自己的IP地址相同时,DHCP SERVER就会响应一个DHCPACK报文,其内容同DHCPOFFER类似,并在“选项”字段中增加了IP地址使用租期选项。
(5)CLIENT收到DHCPACK报文后(经过上面的处理后,有且只有一个DHCPACK报文),会检查DHCP SERVER分配给自己的IP地址是否能够使用,如在以太网类型的网络中,CLIENT会发出免费的ARP请求来确定DHCP SERVER分配的IP地址是否已经被别人使用,如果可以使用,则CLIENT成功获得IP地址,并根据IP地址使用租期自动启动续延过程。
(6)如果CLIENT发现DHCP SERVER分配的IP地址已经被别人使用,则CLIENT会发出DHCPDECLINE报文通知DHCP SERVER禁用这个IP地址以免引起IP地址冲突。然后CLIENT又开始新的DHCP过程,从第1步开始。
(7)当CLIENT成功获取IP地址后,会根据IP地址使用租期自动启动续延过程,在使用租期过去50%时刻处,向DHCP SERVER发送单播DHCPREQUEST报文续延租期,如果成功即收到DHCP SERVER的DHCPACK报文,则租期相应向前延长,如果失败即没有收到DHCPACK报文,则CLIENT继续使用这个IP地址。在使用租期过去87.5%时刻处,向DHCP SERVER发送广播DHCPREQUEST报文续延租期,如果成功即收到DHCP SERVER的DHCPACK报文,则租期相应向前延长;如果失败即没有收到DHCPACK报文,则CLIENT继续使用这个IP地址。在使用租期到期时,CLIENT应自动放弃使用这个IP地址,并开始新的DHCP过程,从第1步开始。
(8)CLIENT在成功获取IP地址后,随时可以通过发送DHCPRELEASE报文释放自己的IP地址,DHCP SERVER收到DHCPRELEASE报文后,会回收相应的IP地址重新分配。当存在DHCP RELAY时,所有的DHCP报文都会经过DHCP RELAY进行转发,整个DHCP交互过程同上面类型,只是在报文封装时,稍有不同。由上面的叙述可以看出,DHCP SERVER的行为完全由CLIENT来驱动,DHCP SERVER无法控制CLIENT的行为。因此DHCP协议的安全性比较差。
域名的表示方法为:主机名.次顶级域名.顶级域名.根域,根域为“.”,一般最后的根域不表示。
(1)递归查询 一般客户机和服务器之间属递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到结果后转交给客户机。 主机向本地域名服务器的查询一般都是采用递归查询。如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向其他根域名服务器继续发出查询请求报文。 (2)迭代查询 一般DNS服务器之间属迭代查询,如:若DNS2不能响应DNS1的请求,则它会将DNS3的IP给DNS2,以便其再向DNS3发出请求。 本地域名服务器向根域名服务器的查询通常是采用迭代查询。当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地域名服务器进行后续的查询。