–
一.HTTP和FTP的区别
1.字面看
HTTP是Hyper Text Transfer Protocol,超文本传输协议; FTP是File Transfer Protocol,文件传输协议; 简单说HTTP是面向网页的,而FTP是面向文件的。
2.深入理解
1.FTP (1)FTP比HTTP复杂 FTP和HTTP一样都是Internet上广泛使用的协议,用来在两台计算机之间互相传送文件。相比于HTTP,FTP协议要复杂得多。 复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令; 另一个是数据链路,用来上传或下载数据。 (2)FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。 PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。 当需要传送数据时,客户端在命令链上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。 于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据。 PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。 当需要传送数据时,服务器在命令链上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。 于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据。 2.HTTP HTTP协议是基于请求/响应范式的(相当于客户机/服务器)。一个客户机与服务器建立连接后,发送一个请求给服务器, 请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME(关于MIME,看百度百科里是这样解释的 http://baike.baidu.com/view/160611.htm)信息包括请求修饰符、客户机信息和可能的内容。 服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码, 后边是MIME信息包括服务器信息、实体信息和可能的内容。
二.python实现两种文件共享方式
1.Http共享文件
使用Python下的SimpleHTTPServer共享文件。 命令行下输入下面的语句,即可将当前目录下的文件共享出去。 python -m SimpleHTTPServer 80 Python下内置了一个Http服务器,只需要上面的一句话即可以启动该服务器,默认的端口是8000。 启动后,可以在浏览器中输入“localhost:8000”即可查看当前文件夹下的文件,点击即可进行下载。 如果你当前的目录下有index.html文件,那么在浏览器中看到的应该是index.html中内容。
2.Ftp共享文件
Python并没有内置一个FTP服务器,所以需要第三方模块的支持。可以使用pyftpdlib 在命令行输入下面的语句进行安装: sudo pip install pyftpdlib(pip是一个安装和管理 Python 包的工具,是easy_install的替代品。) 在选定目录的命令行下输入下面的命令即可将该目录共享出去。 python -m pyftpdlib -p 21 其默认的端口是21,可以修改成其他的端口。 启动后,可以在浏览器中输入“ftp://localhost:21”即可查看当前文件夹下的文件。