HTTP与FTP的区别
本文围绕以下三个部分展开:
一、HTTP协议
二、FTP协议
三、HTTP与FTP的异同点
一、HTTP协议简介
1. 概念
HTTP: HyperText Transfer Protocal,超文本传输协议。它是Web的核心。 HTTP协议由两部分程序实现:一个客户机程序和一个服务器程序,它们运行在不同的端系统中,通过交换HTTP报文进行会话。 HTTP定义了这些报文的格式,以及客户机和服务器是如何进行报文交换的,即:Web客户机是如何向Web服务器请求Web页面,以及服务器如何将Web页面传送给客户机。
2. HTTP是一个无状态协议(stateless protocal)
服务器向客户机发送被请求的文件时,并不存储任何关于该客户机的状态信息。 假如某个特定的客户机在短短的几秒钟内两次请求同一个对象,服务器并不会因为刚刚为该用户提供了该对象就不再做出反应,而是重新发送该对象,就像该服务器已经完全忘记不久之前所做过的事一样。正因为一个HTTP服务器并不保存关于客户机的任何信息,所以我们说HTTP是一个无状态协议。
3. 非持久连接(non-persistent connection)和持久连接(persistent connection)
(1)在许多因特网应用中,客户机和服务器进行长时间的通信,其中客户机发出一系列请求,服务器对每个请求进行响应。 根据不同的应用程序以及应用程序使用的方式,这一系列请求,可以周期性地一个接一个地发出,也可以间断性地发出。 当这种客户机/服务器的交互运行于TCP协议之上时,应用程序的研制者需要确定每个请求/响应对,是经一个 单独的TCP连接 发送,还是所有的请求及相应的响应经 相同的TCP连接 发送。 如果每个请求/响应对,都是经一个 单独的TCP连接 发送,该应用程序被称为 使用 非持久连接;如果所有的请求及相应的响应都经 相同的TCP连接 发送,则该应用程序被称为 使用 持久连接。 (2)HTTP既可以使用非持久连接,也可以使用持久连接,默认方式下,HTTP使用持久连接。(3)非持久连接的缺点: 1)非持久连接必须为每一个请求的对象建立和维护一个全新的连接。对于这样的连接,在客户机和服务器都要分配TCP的缓冲区和变量,这给服务器带来了严重的负担,因为一台Web服务器可能同时服务于数以百计的客户机请求。 2)每一个对象的传输时延为两个RTT(Round-Trip Time,往返时间),即一个RTT用于建立TCP,另一个RTT用于请求和接收一个对象。传输时延太大。 在持久连接的情况下,服务器在发送响应后保持该TCP连接打开。 在相同的客户机和服务器之间的后续请求和响应报文,可通过相同的连接进行传送。特别是一个完整的Web页面(如基本的HTML文件,加上10个图形),可以用单个持久的TCP连接进行传送。 更有甚者,位于同一台服务器的多个Web页面,在从该服务器发送给同一个客户机时,可以在单个持久的TCP连接上进行。对这些对象的请求可一个接一个地发出,而不必等待未决请求的回答,像流水线一样进行。 一般来说,如果一个连接经过一定时间间隔(一个可配置的超时间隔)仍未被使用,HTTP服务器就关闭该连接。 HTTP的默认模式使用了流水线方式的持久连接。
4. HTTP报文格式
HTTP报文有两种:请求报文和响应报文。
二、FTP协议
FTP:File Transfer Protocol,文件传输协议。 在典型的FTP会话中,用户坐在一台主机(本地主机)前面,向一台远程主机上传文件或从远程主机下载文件。 用户通过一个FTP用户接口与FTP交互。用户首先提供远程主机的主机名,使本地主机的FTP客户机进程建立一个到远程主机FTP服务器进程的TCP连接。 然后,为使用户能访问远程主机的账户,用户必须提供一个用户标识和口令,作为FTP命令的一部分在该TCP连接上传送。一旦该服务器向该用户授权,用户就能从本地文件系统向远程文件系统传送文件,反之亦然。
三、HTTP与FTP的异同点
1. 同:
(1)都是应用层协议; (2)都运行在TCP上,即都使用TCP(而不是UDP)作为其支撑的运输层协议。
2. 异:
(1)HTTP是超文本传输协议,是面向网页的;FTP是文件传输协议,是面向文件的。 (1)HTTP协议默认端口:80号端口。FTP协议默认端口:21号端口。 (3)FTP的控制信息是带外(out-of-band)传送的,而HTTP的控制信息是带内(in-band)传送的。 FTP使用两个并行的TCP连接来传输文件,一个是 控制连接(control connection),一个是 数据连接(data connection)。 控制连接用于在两个主机之间传输控制信息,如用户标识、口令、改变远程目录的命令以及“put”和“get”文件的命令。 数据连接用于实际传输一个文件。 因为FTP协议使用一个分离的控制连接,因此称FTP的控制信息是带外传送的。 而HTTP协议是在传输文件的TCP连接中发送请求和响应首部行的,因此其控制信息是带内传送的。 (3)FTP服务器必须在整个会话期间保留用户的状态(state)信息,而HTTP是无状态的。 FTP服务器必须把特定的用户账户与控制连接联系起来,随着用户在远程目录树上移动,服务器必须追踪用户在远程目录树上的当前位置。对每个活动着的用户会话的状态进行追踪,可以对FTP会话总数进行限制。 (4)FTP的控制连接是持久连接,数据连接是非持久连接;而HTTP既可以使用非持久连接,也可以使用持久连接,默认方式下,HTTP使用持久连接。 当用户主机与远程主机开始一个FTP会话前,FTP的客户机(用户)首先在21号端口上发起一个用于控制的与服务器(远程主机)的TCP连接。FTP的客户机通过该控制连接,发送用户的标识和口令,也发送改变远程目录的命令。 1)FTP的PORT(主动式)工作方式:当需要传送数据时,客户端在控制连接链路上用PORT命令告诉服务器:“我打开了XXXX端口,你过来连接我”。于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据连接链路来传送数据。 2)FTP的PASV(被动式)工作方式:当需要传送数据时,服务器在控制连接链路上用PASV命令告诉客户端:“我打开了XXXX端口,你过来连接我”。于是客户端向服务器的XXXX端口发送连接请求,建立一条数据连接链路来传送数据。 如果在同一个会话期间,用户还需要传输另一个文件,FTP则打开另一个数据连接。 因此,FTP的控制连接贯穿了整个用户会话期间,但是针对会话中的每一次文件传输,都需要建立一个新的数据连接。故,控制连接是持久连接,而数据连接是非持久连接。
HTTP与FTP的区别相关推荐
- FTPS、SFTP和FTP的区别与联系
本文主要综合了这篇和这篇以及自己的理解,简单解释FTP.FTPS和SFTP的区别和联系 FTP FTP,是File Transport Protocol的简称,是一个古老的文件传输协议(大概互联网出现 ...
- Http下载与Ftp下载区别
HTTP和FTP是两种网络传输协议的缩写,FTP是File Transportation Protocol(文件传输协议)的缩写,而HTTP则是Hyper Text Transportation Pr ...
- HTTP和FTP的区别
HTTP和FTP是两种网络传输协议的缩写,FTP是File Transportation Protocol(文件传输协议)的缩写,而HTTP则是Hyper Text Transportation Pr ...
- tcp udp http ftp 的区别
TCP/IP代表传输控制协议/网际协议,指的是一系列协议. TCP和UDP使用IP协议从一个网络传送数据包到另一个网络.把IP想像成一种高速公路,它允许其它协议在上面行驶并找到到其它电脑的出口.TCP ...
- FTP与SFTP两者有什么区别
FTP与SFTP两者有什么区别 在实际项目开发中最常使用的文件传输的方式有ftp和sftp两种,但是这两个传输方式各有什么特点呢?本文接下来将讨论SFTP.FTP的区别. 作者:聚IT来源:今日头条| ...
- HTTP协议与FTP协议的区别
项目中应用到ftp,将ftp的笔记上传一下. 简单的说: HTTP是Hyper Text Transfer Protocol,超文本传输协议:面向网页的. FTP是File Transfer Prot ...
- http和ftp协议的区别
项目中应用到ftp,将ftp的笔记上传一下. 简单的说: HTTP是超文本传输协议:面向网页的. FTP是File Transfer Protocol,文件传输协议:面向文件的. 1.FTP (1)F ...
- ftp的主动模式(port)与被动模式(PASV)
转自:http://www.phpweblog.net/killjin/archive/2008/01/06/2653.html 目录 开场白 基础 主动FTP 主动FTP的例子 被动FTP ...
- 使用FtpWebRequest 类操作(上传、下载和删除)FTP上的XML文件
使用如下类来实现ftp上操作xml遇到如下问题: 1.在公司内网中的服务器上搭建ftp来操作,一切正常:但是,当连接客户的机器的时候,出现乱码: 2.加上WebProxy后,客户端是xml格式的,下载 ...
最新文章
- 清华芯片研究再获顶会MICRO加持:软件定义芯片团队出品,最佳论文提名后又一突破...
- 小猿圈Python学习教程之后端接收前端回传的文件方法
- 困恼的mappedBy
- java gui框架_推荐!程序员整理的Java资源大全
- 5道谷歌面试题:即使是天才也要怀疑自己能力了(附答案)
- Maven-Eclipse使用maven创建HelloWorld Java项目,使用Junit-4.11的注解
- xware for linux,Ubuntu 14.04安装迅雷Xware过程笔记
- spring boot通过JPA访问Mysql
- 计算机配色原理,电脑配色原理介绍-华强电子网
- win10开始菜单没有反应
- Linux服务器常见运维性能测试(2)内存测试mbw、stream
- SpringBoot整合Quartz--使用/教程/实例
- 二本跨考985计算机考研,跨专业考研经验谈:从二本到985的飞跃
- Havok物理引擎与Unity3D的结合
- 计算机导论题目2020,计算机网络论文题目_
- Mixin Messenger 的分布式 D3M-PIN 码介绍
- 有关于配环境为什么这么糟心的一点事
- 【20保研】2019年吉林大学软件学院优秀大学生暑期夏令营活动通知
- xmos驱动_XMOS推出了Xcore.ai处理器,单个设备中提供高性能AI,DSP,控制和IO,价格从1美元起!...
- 在动态规划的海洋中遨游(三)