如题。用户用FTP客户端访问FTP服务器,TCP/IP各层是如何工作的?,请详细一点谢谢了,请写出每一层的工作状况。
文件传输协议FTP利用TCP连接在客户机和服务器之间上传和下载文件。FTP协议占用了两个TCP端口,FTP服务器监听21号端口,准备接受用户的连接请求。当用户访问FTP服务器时便主动与服务器的21号端口建立控制连接。如果用户要求下载文件,则必须等待服务器的20号端口主动发出建立数据连接的请求,文件传输完成后数据连接随之释放。在客户端看来,这种处理方式被叫做“被动式FTP”,Windows系统中默认的就是这种处理方式。由于有的防火墙阻止由外向内主动发起的连接请求,所以FTP数据连接可能由于防火墙的过滤而无法建立。为此有人发明了一种主动式FTP,即数据连接也是由客户端主动请求建立的,但是在服务器中接收数据连接的就不一定是20号端口了。
在TCP/IP协议族中,网络层主要有IP协议、ICMP协议、ARP协议和RARP协议等4个协议;其中,利用地址转换协议(ARP)可根据IP地址查询对应的MAC地址。而反向地址转换协议(RARP)则把MAC地址转换成对应的IP地址。
ICMP协议用于传送有关通信问题的消息,例如,数据报不能到达目标站、路由器没有足够的缓存空间或路由器向发送主机提供最短路径信息等。ICMP报文封装在IP数据报中传送,因而不保证可靠的提交。
FTP协议属于TCP/IP协议族的应用层协议,利用FTP协议进行文件传送时,在客户/服务器之间一般需要建立一条控制连接(使用TCP21端口)和一条数据连接(使用TCP20端口)。
如果需要详细的协议状况,不妨搜索百度百科,这里通俗地写写每层关键:
这里每一层可对应"OSI七层网络模型"
ETHERNET层:二层转发,也就是通过MAC地址表去找对应的设备。
IP层:三层转发,其实也就是通过IP去找对应的MAC,网关IP是预设好的(或者通过DHCP获取,需要DHCP服务器,这种特定情况你觉得复杂可以先不用理解)。方法是不断的去找网关IP,网关记录了到底去哪里找,最后还是走二层转发,也就是找到对应的MAC地址
TCP/UDP层:上面所述都是用来路由转发的层,也就是找设备,这个层是用来区分设备上那么多软件,到底是哪个软件的连接。TCP和UDP都是用报文中的特定的一个数字来区分是哪个软件的,我们把这个数字叫端口。TCP和UDP区别仅仅在于TCP基于连接,连接就是说包的顺序,是否同步,完整性,质量都是要监控的,而UDP比较简单,随便收发,并不监控这些。
FTP层:FTP层是四层协议,就是基于20和21这两个端口的TCP协议,通过FTP协议,FTP服务器和客户端可以交流信息。
其中端口20用于传输数据,端口21用于传输控制信息,比如TCP客户端要连接,那就走21端口去发起TCP连接,FTP层填好定好的字段,TCP客服务器收好了,发个回应并要求密码,TCP客户端要下载数据,TCP客户端告知TCP服务器后,TCP服务器从20端口把数据下载到TCP客户端,就是这样。
如果需要实际看看FTP包中的详细字段内容,可以在有FTP连接时,下载Wireshark软件直接捕捉网络数据包。
如果需要学习详细的内容,可以搜索:
OSI七层网络模型
以太网完整协议
IP协议
TCP/IP协议
FTP协议
因为上面每一条都有相当多的知识,就不是一篇帖子能覆盖的了,建议先试试Wireshark,比较直观,从好玩/兴趣入手研究这个问题。
IIS7服务器管理工具里面的FTP功能可以说是很全、很实用的。它可以进行批量管理、定时上传下载、同步操作、数据备份、到期提醒、自动更新。IIS7服务器管理工具适用于Windows操作系统和liunx操作系统;支持Vnc客户端和Ftp客户端批量操作。这么简单实用的工具你真的值得拥有!