本文围绕以下三个部分展开:

一、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的区别相关推荐

  1. FTPS、SFTP和FTP的区别与联系

    本文主要综合了这篇和这篇以及自己的理解,简单解释FTP.FTPS和SFTP的区别和联系 FTP FTP,是File Transport Protocol的简称,是一个古老的文件传输协议(大概互联网出现 ...

  2. Http下载与Ftp下载区别

    HTTP和FTP是两种网络传输协议的缩写,FTP是File Transportation Protocol(文件传输协议)的缩写,而HTTP则是Hyper Text Transportation Pr ...

  3. HTTP和FTP的区别

    HTTP和FTP是两种网络传输协议的缩写,FTP是File Transportation Protocol(文件传输协议)的缩写,而HTTP则是Hyper Text Transportation Pr ...

  4. tcp udp http ftp 的区别

    TCP/IP代表传输控制协议/网际协议,指的是一系列协议. TCP和UDP使用IP协议从一个网络传送数据包到另一个网络.把IP想像成一种高速公路,它允许其它协议在上面行驶并找到到其它电脑的出口.TCP ...

  5. FTP与SFTP两者有什么区别

    FTP与SFTP两者有什么区别 在实际项目开发中最常使用的文件传输的方式有ftp和sftp两种,但是这两个传输方式各有什么特点呢?本文接下来将讨论SFTP.FTP的区别. 作者:聚IT来源:今日头条| ...

  6. HTTP协议与FTP协议的区别

    项目中应用到ftp,将ftp的笔记上传一下. 简单的说: HTTP是Hyper Text Transfer Protocol,超文本传输协议:面向网页的. FTP是File Transfer Prot ...

  7. http和ftp协议的区别

    项目中应用到ftp,将ftp的笔记上传一下. 简单的说: HTTP是超文本传输协议:面向网页的. FTP是File Transfer Protocol,文件传输协议:面向文件的. 1.FTP (1)F ...

  8. ftp的主动模式(port)与被动模式(PASV)

    转自:http://www.phpweblog.net/killjin/archive/2008/01/06/2653.html 目录 开场白  基础  主动FTP  主动FTP的例子  被动FTP ...

  9. 使用FtpWebRequest 类操作(上传、下载和删除)FTP上的XML文件

    使用如下类来实现ftp上操作xml遇到如下问题: 1.在公司内网中的服务器上搭建ftp来操作,一切正常:但是,当连接客户的机器的时候,出现乱码: 2.加上WebProxy后,客户端是xml格式的,下载 ...

最新文章

  1. 清华芯片研究再获顶会MICRO加持:软件定义芯片团队出品,最佳论文提名后又一突破...
  2. 小猿圈Python学习教程之后端接收前端回传的文件方法
  3. 困恼的mappedBy
  4. java gui框架_推荐!程序员整理的Java资源大全
  5. 5道谷歌面试题:即使是天才也要怀疑自己能力了(附答案)
  6. Maven-Eclipse使用maven创建HelloWorld Java项目,使用Junit-4.11的注解
  7. xware for linux,Ubuntu 14.04安装迅雷Xware过程笔记
  8. spring boot通过JPA访问Mysql
  9. 计算机配色原理,电脑配色原理介绍-华强电子网
  10. win10开始菜单没有反应
  11. Linux服务器常见运维性能测试(2)内存测试mbw、stream
  12. SpringBoot整合Quartz--使用/教程/实例
  13. 二本跨考985计算机考研,跨专业考研经验谈:从二本到985的飞跃
  14. Havok物理引擎与Unity3D的结合
  15. 计算机导论题目2020,计算机网络论文题目_
  16. Mixin Messenger 的分布式 D3M-PIN 码介绍
  17. 有关于配环境为什么这么糟心的一点事
  18. 【20保研】2019年吉林大学软件学院优秀大学生暑期夏令营活动通知
  19. xmos驱动_XMOS推出了Xcore.ai处理器,单个设备中提供高性能AI,DSP,控制和IO,价格从1美元起!...
  20. 在动态规划的海洋中遨游(三)

热门文章

  1. 2022年第十三届蓝桥杯 python B组 第B题 寻找整数
  2. 计算机组和用户组,计算机管理没有本地用户和组怎么解决
  3. 基于java的科研项目管理系统
  4. C语言中常量、变量和函数
  5. 什么是监控系统云台?
  6. 塔望食业洞察丨方便速食行业市场现状、消费趋势、品牌策略分析
  7. 两步建立自己的kindle书库
  8. OpenCore配置错误、故障与解决办法(05-14更新)
  9. mysql数据库课程设计机房管理系统_基于web的机房管理(完整源码+论文全套+教学视频)...
  10. 光模块自动测试系统软件,光模块自动化测试系统