精华内容
下载资源
问答
  • 文件服务器实现思路

    千次阅读 2019-06-06 09:43:06
    C/C++文件服务器主要是 FDFS (FastDFS)文件存储系统的一个文件代理。文件服务支持 HTTP 协议,支持上传,下载基本功能,支持秒传文件(如果文件曾经上传到服务器,服务会记录文件信息,不用再次上传),这些文件...

    1、概述

        C/C++文件服务器主要是 FDFS (FastDFS)文件存储系统的一个文件代理。文件服务支持 HTTP 协议,支持上传,下载基本功能,支持秒传文件(如果文件曾经上传到服务器,服务会记录文件信息,不用再次上传),这些文件信息会记录在文件服务对应的数据库。文件服务器也有本地文件缓存,主要支持热点文件上传下载。

        每个文件上传前客户端需要计算其 Md5 值,文件 Md5 值是文件内容的唯一证书,客户端根据该值跟服务器交互,如果Md5已记录在数据库,那说明该文件曾经上传到服务器。因为文件内容不保存文件名,所以文件服务器也只保存文件内容,并不保存文件名,文件名由其它服务进行维护。

        文件服务器只保存文件数据,与其它系统没有任何业务逻辑关系。只支持小文件的上传下载,续传等功能。文件需要加密的可以在客户端加密,文件服务器不作任何加密操作。文件信息需要建立与业务信息的关系,请客户端上传或者下载成功文件后,再向相关的业务服务器添加关联的存储记录。

    2、架构图

    client :登录的客户端。
    LVS: 服务器集群系统负载均衡。
    file server 和 fdfs 均表示服务器集群,支持多机器部署共同工作。
    file :表示缓存磁盘的文件。
    mysql :文件服务器记录文件信息以及 fdfs 对应的文件索引信息。

    fdfs:FastDFS是一个开源的轻量级分布式文件系统。

    3、逻辑时序

    展开全文
  • 1、在此之前我们的nginx和FTP服务器都已经配置好了,那么现在我们来将它打通,做成一个文件服务器。例如一个图片服务器。 我们创建一个文件conf文件 sudo vim image.imooc.com.conf 用我们此前说的配置文件 ...

    1、在此之前我们的nginx和FTP服务器都已经配置好了,那么现在我们来将它打通,做成一个文件服务器。例如一个图片服务器。

    我们创建一个文件conf文件

    sudo vim image.imooc.com.conf

    用我们此前说的配置文件

    sudo cat img.happymmall.com.conf

     

    
    server {
        listen 80;
        autoindex off;
        server_name image.imooc.com;
        access_log /usr/local/nginx/logs/access.log combined;
        index index.html index.htm index.jsp index.php;
        #error_page 404 /404.html;
        if ( $query_string ~* ".*[\;'\<\>].*" ){
            return 404;
        }
    
        location ~ /(mmall_fe|mmall_admin_fe)/dist/view/* {
            deny all;
        }
    
        location / {
            root /ftpfile/;
            add_header Access-Control-Allow-Origin *;
        }
    }
    

    保存退出

    :wq

    2、重启nginx

    cd ..
    
    cd ..
    
    ll
    
    cd sbin/
    
    
    sudo ./nginx -s reload

     

    3、我们访问测试一下

    4、

    sudo cat ../conf/vhost/image.imooc.com.conf

     

    5、我们连接一下ftp服务器

    我们直接通过image.imooc.com/boy.jpg就可以访问到这个图片

    我们会在项目中使用阿帕奇或者FTP的一些开源包,然后我们利用里面的工具,在上传图片的时候,我们就调用FTP的服务,把这个图片传到FTP的服务器上。这个时候我们就能拿到上传之后的文件名,还有它的前缀,前缀我们可以通过动态的配置在项目里面去做。上传图片的这个完整的URL我们已经拿到了。然后我们把这个URL存起来就可以了。

    展开全文
  • FTP文件传输服务器原理

    千次阅读 2019-07-25 15:23:20
    FTP服务器,全称File Transfer Protocol Server,是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。FTP,文件传输协议(File Transfer Protocol)是用于在网络上进行文件传输的一套标准协议,...

    FTP服务器,全称File Transfer Protocol Server,是在互联网上提供文件存储和访问服务的计算机,它们依照FTP协议提供服务。FTP,文件传输协议(File Transfer Protocol)是用于在网络上进行文件传输的一套标准协议,使用客户/服务器模式。FTP是专门用来传输文件的协议。

    FTP是一个客户机/服务器系统,用户通过使用一个支持FTP协议的客户端,连接到远程主机上的服务器程序上。用户在客户端发出命令,远程主机服务器接收到命令后执行用户所发出的命令,同时将执行结果返回到客户端。简单来说,就是用户对服务器发出一条命令,要求服务器向用户发送一份文件,服务器响应并发送文件到客户端,用户收到文件将其放置于用户工作目录中,这一过程就是FTP服务器进行的文件交流。

    FTP服务器工作原理

    FTP基于TCP协议服务,是互联网中进行文件传输的协议,默认使用20、21号两个端口,一个数据端口和一个命令端口,端口20是数据端口,用于文件在客户端和服务器之间传输数据流。端口21是命令端口,用于传输控制流,接受客户端发出的相关FTP命令与参数。

     

    文件传输协议

     

    如图中FTP服务的工作原理所示。FTP客户端在计算机网络中向FTP服务器发送服务请求,FTP服务器接收与响应FTP客户机的请求,并向FTP客户机提供所需的文件传输服务。根据TCP协议的规定,FTP服务器使用熟知端口号20、21来提供服务,FTP客户机使用临时端口号来发送请求。FTP协议为控制连接与数据连接规定不同的熟知端口号,为控制连接规定的熟知端口号是21,为数据连接规定的熟知端口号为20。FTP协议采用的是。

    持续连接的通信方式,它所建立的控制连接的维持时间通常较长。

    讲完FTP的工作原理的主要连接方式,接着讲解FTP工作原理中两种数据连接的建立类型:主动模式和被动模式。FTP的主动模式是指客户端从任意一个非特权端口连接FTP服务器的熟知端口,即端口21。FTP服务器在收到命令后从数据端口连接客户端又一临时端口,返回数据;被动模式是指客户端开启两个任意非特权端口提交命令,FTP服务器被动开启任意非特权端口发送命令给客户端,客户端接收命令后从本地端口向FTP服务器发起建立连接的传送数据通道,在这一模式内,命令连接和数据连接都由客户端发起,解决服务器发起到客户的连接的问题。

    通俗来讲,我们如果把服务端作为判断标准。

    主动模式:服务端从20端口主动向客户端发起连接。

    被动模式:服务端在指定范围内的某个端口被动等待客户端发起连接。

    FTP的实现目标

    1、实现文件共享,即计算机客户端通过FTP客户端和互联网能连接到世界各地的FTP服务器,实现文件共享及资源共享。

    2、实现信息交互户,即其他计算机客户端能通过互联网访问你的计算机上面搭建的FTP服务器,使你的信息资料能够传播到世界各地。

    3、进行有效的数据传输。不同类型、不同系统、不同格式的电脑之间能够互换文件。

    展开全文
  • HTTP文件下载原理

    万次阅读 2016-09-05 16:56:08
    于HTTP协议,向服务器请求某个文件时,只要发送类似如下的请求即可: GET /Path/FileName HTTP/1.0Host: www.server.com:80Accept: * / *User-Agent: GeneralDownloadApplicationConnection: close 每行用一个...

    于HTTP协议,向服务器请求某个文件时,只要发送类似如下的请求即可:
    GET /Path/FileName HTTP/1.0

    Host: www.server.com:80

    Accept: * / *

    User-Agent: GeneralDownloadApplication

    Connection: close

     每行用一个“回车换行”分隔,末尾再追加一个“回车换行”作为整个请求的结束。
    

    第一行中的GET是HTTP协议支持的方法之一,方法名是大小写敏感的,HTTP协议还支持OPTIONS、HAED、POST、PUT、DELETE、TRACE、CONNECT等方法,而GET和HEAD这两个方法通常被认为是“安全的”,也就是说任何实现了HTTP协议的服务器程序都会实现这两个方法。对于文件下载功能,GET足矣。GET后面是一个空格,其后紧跟的是要下载的文件从WEB服务器根开始的绝对路径。该路径后又有一个空格,然后是协议名称及协议版本。

    除第一行以外,其余行都是HTTP头的字段部分。Host字段表示主机名和端口号,如果端口号是默认的80则可以不写。Accept字段中的/表示接收任何类型的数据。User-Agent表示用户代理,这个字段可有可无,但强烈建议加上,因为它是服务器统计、追踪以及识别客户端的依据。Connection字段中的close表示使用非持久连接。

    关于HTTP协议更多的细节可以参考RFC2616(HTTP 1.1)。因为我只是想通过HTTP协议实现文件下载,所以也只看了一部分,并没有看全。

    如果服务器成功收到该请求,并且没有出现任何错误,则会返回类似下面的数据:

    HTTP/1.0 200 OK

    Content-Length: 13057672

    Content-Type: application/octet-stream

    Last-Modified: Wed, 10 Oct 2005 00:56:34 GMT

    Accept-Ranges: bytes

    ETag: “2f38a6cac7cec51:160c”

    Server: Microsoft-IIS/6.0

    X-Powered-By: ASP.NET

    Date: Wed, 16 Nov 2005 01:57:54 GMT

    Connection: close

    不用逐一解释,很多东西一看几乎就明白了,只说我们大家都关心内容吧。

    第一行是协议名称及版本号,空格后面会有一个三位数的数字,是HTTP协议的响应状态码,200表示成功,OK是对状态码的简短文字描述。状态码共有5类:1xx属于通知类;2xx属于成功类;3xx属于重定向类;4xx属于客户端错误类;5xx属于服务端错误类。对于状态码,相信大家对404应该很熟悉,如果向一个服务器请求一个不存在的文件,就会得到该错误,通常浏览器也会显示类似“HTTP 404 - 未找到文件”这样的错误。Content-Length字段是一个比较重要的字段,它标明了服务器返回数据的长度,这个长度是不包含HTTP头长度的。换句话说,我们的请求中并没有Range字段(后面会说到),表示我们请求的是整个文件,所以Content-Length就是整个文件的大小。其余各字段是一些关于文件和服务器的属性信息。

    这段返回数据同样是以最后一行的结束标志(回车换行)和一个额外的回车换行作为结束,即“/r/n/r/n”。而“/r/n/r/n”后面紧接的就是文件的内容了,这样我们就可以找到“/r/n/r/n”,并从它后面的第一个字节开始,源源不断的读取,再写到文件中了。

    以上就是通过HTTP协议实现文件下载的全过程。但还不能实现断点续传,而实际上断点续传的实现非常简单,只要在请求中加一个Range字段就可以了。

    假如一个文件有1000个字节,那么其范围就是0-999,则:

    Range: bytes=500- 表示读取该文件的500-999字节,共500字节。
    Range: bytes=500-599 表示读取该文件的500-599字节,共100字节。
    Range还有其它几种写法,但上面这两种是最常用的,对于断点续传也足矣了。如果HTTP请求中包含Range字段,那么服务器会返回206(Partial Content),同时HTTP头中也会有一个相应的Content-Range字段,类似下面的格式:
    Content-Range: bytes 500-999/1000
    Content-Range字段说明服务器返回了文件的某个范围及文件的总长度。这时Content-Length字段就不是整个文件的大小了,而是对应文件这个范围的字节数,这一点一定要注意。

    一切好像基本上没有什么问题了,本来我也是这么认为的,但事实并非如此。如果我们请求的文件的URL是类似http://www.server.com/filename.exe这样的文件,则不会有问题。但是很多软件下载网站的文件下载链接都是通过程序重定向的,比如pchome的ACDSee的HTTP下载地址是:

    http://download.pchome.net/php/tdownload2.php?sid=5547&url=/multimedia/viewer/acdc31sr1b051007.exe&svr=1&typ=0

    这种地址并没有直接标识文件的位置,而是通过程序进行了重定向。如果向服务器请求这样的URL,服务器就会返回302(Moved Temporarily),意思就是需要重定向,同时在HTTP头中会包含一个Location字段,Location字段的值就是重定向后的目的URL。这时就需要断开当前的连接,而向这个重定向后的服务器发请求。

    好了,原理基本上就是这些了。其实装个Sniffer好好分析一下,很容易就可以分析出来的。不过NetAnts也帮了我一些忙,它的文件下载日志对开发人员还是很有帮助的。

    展开全文
  • 常用文件服务器

    万次阅读 2019-03-16 15:20:13
    常用文件服务器: (主要说一些基础知识,配置过程简单,可以百度下,小编主要整理下知识点) 一、FTP 服务器 软件包: vsftpd FTP端口: 控制端口 21/tcp 数据端口 20/tcp (主动模式) 配置文件: /etc/vsftpd/...
  • ''' 客户端'''import ...文件下载器-客户端""" # 创建 TCP 套接字 client_soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 连接服务器 client_soc.connect(('127.0.0.1', 8081)) ...
  • FTP服务器原理

    万次阅读 多人点赞 2018-08-02 11:38:35
    在我们平时上网的过程中,一般都是使用FTP的客户端对商家提供的服务器进行访问(上传、下载文件),例如我们微软的SkyDrive网盘,115网盘等。 FTP介绍 FTP文件传输协议(File Transfer Protocol),用于Internet...
  • FastDFS文件服务器

    千次阅读 2019-01-25 15:26:45
    文件服务器
  • C++socket网络编程大全实战http服务器(支持php)视频培训教程概况:本课程会同时演示在linux和windows中的编程,课程中的线程和正则表达式都使用c++提供库。本课程包含了socket网络编程常用的所有特性,包括tcp、udp...
  • c++实现的文件上传下载服务器

    热门讨论 2012-11-13 10:07:37
    这个是公司实习的时候布置的作业,主要是用C++和mfc实现的文件上传和下载的服务器和客户端,可暂停,是一份拿去学习socket通信的原理,继续完善的不错的服务器和客服端代码,
  • https://huangyongxing310.iteye.com/blog/2321943?tdsourcetag=s_pcqq_aiomsg
  • 分布式文件系统(FastDFS原理介绍)

    千次阅读 2012-12-29 00:06:23
    分布式文件系统(FastDFS原理介绍) 在生产中我们一般希望文件系统能帮我们解决以下问题,如:1.超大数据存储;2.数据高可用(冗余备份);3.读/写高性能;4.海量数据计算。最好还得支持多平台多语言,支持...
  • 文件服务器存储解决方案探索

    千次阅读 2019-02-25 21:49:54
    文件服务器(file servers)是一种器件,它的功能就是向服务器提供文件。 它加强了存储器的功能,简化了网络数据的管理。 它一则改善了系统的性能,提高了数据的可用性,二则减少了管理的复杂程度,降低了运营费用。...
  • DNS服务器原理介绍(一)

    千次阅读 2018-12-28 09:15:07
    在nsswitch的配置文件/etc/nsswitch.conf中有这么一行语句,”hosts: files dns“,就表示域名解析时先找本机的/etc/hosts文件然后再找dns服务器。 需要详细了解可以看/etc/nsswitch.conf配置文件,nsswitch.conf...
  • FastDFS文件同步原理文件目录简介

    千次阅读 2020-06-20 20:16:29
    FastDFS文件同步原理 同一组内的StorageServer之间是对等的,文件上传、删除等操作可以在任意一台StorageServer上进行; 文件同步(添加/删除/修改)只在同组内的StorageServer之间进行,采用push方式,即源服务器...
  • web文件上传下载原理浅析

    万次阅读 2017-12-11 10:58:36
    一、web文件上传浅析 现在有很多Web程序都有上传功能,实现上传功能的组件或框架也很多,如基于java的Commons FileUpload、还有Struts1.x和Struts2中...虽然现在有很多上传组件可以利用,但是了解Web上传文件原理
  • Web服务器工作原理详解(基础篇)

    万次阅读 多人点赞 2018-08-14 17:12:00
    概述:Web服务器概念较为广泛,我们最常说的Web服务器指的是网站服务器,它是建立在Internet之上并且驻留在某种计算机上的程序。Web服务器可以向Web客户端(如浏览器)提供文档或其他服务,只要是遵循HTTP协议而设计的...
  • web服务器运行原理

    千次阅读 2019-03-04 09:45:41
    服务器的运行和 WEB 应用的处理,都是在一个文件中实现的。 这几天的工作,就是把程序解耦,将功能分离,服务器只用来提供WEB服务,WEB应用用来实现数据处理。 大家可以了解一下开发中比较常用的WEB框架,比如 ...
  • 搭建FastDFS文件上传服务器

    万次阅读 多人点赞 2018-07-27 17:34:57
    参考:分布式文件系统FastDFS设计原理 参考:FastDFS分布式文件系统 1. 简介 FastDFS 是一个开源的高性能分布式文件系统(DFS)。 它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡。...
  • 文件上传的基本原理(一)

    万次阅读 2017-09-05 20:50:20
     Struts/Spring MVC 文件上传实现都是基于Commons-fileupload,但背后的原理,大多数估计没有关注,最近阅读Commons-fileupload源码也发现,只有基础才是最重要的,万变不离其宗,在it领域不然会被漫天的新技术,冲...
  • 基于Spring搭建文件服务器

    千次阅读 2018-10-27 15:26:13
    文件服务器的搭建架构有很多种,如基于nginx+vsftp、nginx+fastDFS等架构,其中vsftp或fastDFS用于文件读写、上传存储、下载,nginx用于映射文件 ,方便http访问静态文件,实现在线预览图片或下载等功能。...
  • 服务器工作原理

    千次阅读 2016-05-31 23:21:42
    (2)单机程序工作原理 单机,即不连接到其他计算机的计算机,不在网络中。例如:两单机A、B,只...(3)客户机/服务器程序工作原理 将单机连成网络,如将A与B连成网络,则可以使它们之间提供服务,如A向B提供服
  • java上传文件到远程服务器(一)---HttpURLConnection方式

    万次阅读 多人点赞 2017-06-08 15:30:05
    我们在之前的文章JavaWeb静态资源分离思路中已经了解到要把文件上传到静态资源服务器有三种方式:java上传文件到ftp服务器(这个方案需要在静态资源服务器安装ftp服务)java使用HttpURLConnection上传文件到远程服务器 ...
  • 我们已经在上一篇文章中讲解了把文件上传到远程服务器的一种方式:java上传文件到远程服务器(一)---HttpURLConnection方式本章来尝试使用HttpClient方式上传文件到远程服务器:我们在之前的文章中已经在SpringMVC基础...
  • HTTP 文件上传的基本原理

    万次阅读 2016-06-12 11:22:14
    1、HTTP 文件上传的基本原理。 2、当前的主流文件上传组件性能对比.
  • python3写的简单本地文件上传服务器

    万次阅读 2017-11-29 17:02:31
    好吧我随口说的,反正因为各种原因(其实到底是啥我也不知道),简单的学习了下python,然后写了一个上传文件服务器的小玩具练手。 大概功能是这样: 1、获取本地文件列表(包括文件夹) 2、检查服务器上是否...
  • java+服务器上传和下载文件

    千次阅读 2019-08-22 16:13:57
    enctype属性规定发送到服务器之前应该如何对表单数据进行编码。 enctype作用是告知服务器请求正文的MIME类型(请求消息头content-type的作用一样) 1、1 enctype的取值有三种 值 描述 ...
  • 但笔者最近在做项目时遇到了一个大问题,项目需要上传视频文件,这些视频文件的尺寸一般大于2GB,用PHP开发时,将服务器端的上传尺寸设置得足够大,但用Chrome、FirFox等浏览器上传时,经常出现响应...
  • 一、分布式文件系统fastDFS-设计原理

    千次阅读 2016-08-29 15:25:28
    一、分布式文件系统fastDFS-设计原理 FastDFS是一个开源的轻量级分布式文件系统,由跟踪服务器(tracker server)、存储服务器(storage server)和客户端(client)三个部分组成, 主要解决了海量数据存储问题...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 546,152
精华内容 218,460
关键字:

文件服务器原理