FTP和HTTP的区别

FTP和HTTP的区别

  1. FTP使用了两行的TCP连接来传输文件,HTTP只有一条TCP连接

    ​ 存放用户表示,口令,改变远程目录的的命令以及put,get命令

    ​ <————————TCP控制连接端口21–————————->

    FTP客户 –————————–———————— FTP服务器

    ​ <————————TCP数据连接端口20–————————->

    ​ 发送实际文件

  2. FTP是有状态的在会话期间保留用户的状态,HTTP是无状态的不保存关于客户的任何信息

  3. FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式。

    PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,客户端服务器服务器从20端口向客户端的XXXX端口
    PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据时,在命令链上用PASV命令告诉:“我打开了XXXX端口,你过来连接我”。于是发送连接请求,建立一条数据链路来传送数据。

    第三点转自:https://blog.youkuaiyun.com/xiaoxiangzhu660810/article/details/8291656

### FTP HTTP 的主要区别及使用场景 #### 1. 定义与功能 FTP(File Transfer Protocol)主要用于文件上传下载操作,支持双向的数据传输。它是一个专门设计用于高效传输大文件的协议[^1]。 HTTP(HyperText Transfer Protocol)则专注于超文本数据的请求与响应模型,通常用于浏览网页或其他资源访问的操作。它的核心目标是提供一种简单的方式让用户获取文档、图片等内容[^1]。 #### 2. 工作模式 FTP采用的是控制连接数据连接分离的工作方式,这意味着每次会话都需要建立两个独立的通道来分别管理命令交互以及实际的数据流动过程。这种机制使得FTP能够更灵活地应对复杂的文件结构需求。 相比之下, HTTP遵循客户端-服务器架构下的单次握手原则,在每一次请求之后即断开链接(除非启用了持久化选项),因此其整体流程更为轻量化且适合频繁的小规模事务处理[^2]. #### 3. 连接特性 作为基于TCP的服务之一,FTP本身也是完全可靠并面向连接型别的;不仅如此,为了进一步增强安全性考量还引入了主动模式(Port Mode) 及被动模式 (Passive Mode)[^1]. 另一方面,尽管现代版本如HTTPS已经集成了加密措施以保护隐私信息不被窃听篡改等问题发生,但原始形态下的标准HTTP仍然是无状态(non-persistent), 并且不具备内在的安全保障机制[^2]. #### 4. 使用场合 当涉及到大规模静态资产比如软件分发包或者备份档案之类的任务时,选用FTP往往能带来更好的性能表现因为可以充分利用带宽资源同时维持较高的稳定性水平; 而对于动态内容呈现或是实时互动性强的应用环境,则毫无疑问应该优先考虑利用HTTP所提供的便捷性广泛的兼容性优势[^2]. ```python import ftplib from http.client import HTTPConnection def ftp_example(): server = 'ftp.example.com' username = 'user' password = 'pass' with ftplib.FTP(server, username, password) as ftp: print(ftp.getwelcome()) ftp.cwd('/pub') files = ftp.nlst() for file_name in files[:5]: print(file_name) def http_example(): conn = HTTPConnection('www.example.com', timeout=10) try: conn.request("GET", "/index.html") resp = conn.getresponse() print(resp.status, resp.reason) data_received = resp.read().decode()[:100] print(data_received) finally: conn.close() if __name__ == "__main__": ftp_example() http_example() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值