计算机网络-网络文件共享协议

这篇具有很好参考价值的文章主要介绍了计算机网络-网络文件共享协议。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

在计算机网络中,我们经常会遇到在不同计算机网络系统之间如何共享和访问文件的场景,并且在实际项目中有这样的需求,在Linux中需要动态的mount文件,需要选择合适的网络文件共享协议以满足并发,吞吐量等需求。这就涉及今天要讲的网络文件共享协议SMB和NFS。

SMB vs NFS

什么是SMB

SMB 即 Server Message Block,最初是由IBM开发的,并被Microsoft进一步发展为CIFS(Common Internet File System)。虽然主要使用于windows,但目前也支持跨平台。该协议还在不断发展,最新的SMB版本是v.3.1.1。有时会将CIFS与SMB混淆,实际上CIFS是微软对SMB的实现。

大家可能也听说过Samba,Samba是SMB在Linux上的实现:

Samba:SMB 协议最初是由 Samba 提供 Unix 支持的。由于微软最初没有公开发布其专有协议的公共规范,Samba 的开发者不得不对其进行逆向工程。未来版本的 Samba 能够使用后来 SMB 协议的公开规范。Samba 包括对 SMB3(3.1.1)的支持。

Linux CIFS utils:这个内核软件充当 SMB 客户端,是在 Linux 上挂载现有 SMB 共享的首选方法。它最初是作为 Samba 软件的一部分包括在内的,但现在可以单独获得。Linux CIFS utils 作为大多数 Linux 发行版中的 cifs_utils 软件包提供

什么是NFS

NFS 即 Network File System,是由Sun Microsystems(现在为Oracle Corporation的一部分)开发的协议。它主要被设计用于UNIX/Linux操作系统的环境中。NFS v4是最新NFS版本。它支持并行文件访问,并且在这个版本中改进了安全性。向后兼容NFS v2和NFS v3。NFS v4支持更多的身份验证。

SMB vs NFS
SMB NFS
认证 User-based Host-based
端口 TCP 445; TCP 139, UDP 137, 138 TCP 2049, UDP 2049, TCP 111 and UDP 111; TCP 1110, UDP 1110, TCP 4045, UDP 4045.
加密 Kerberos, AES-256 Kerberos and TLS
File Lock 支持 只有高版本的支持
Performance 小文件performance更好,大文件一样。

实现

首先我们的网络文件是使用的Azure服务,我们首先来调查下Azure Blog服务都支持的协议,总结如下:

Azure Storage Service 支持的协议
Azure Blob Storage NFS 3.0
Azure File Storage (Standard) SMB
Azure File Storage (Premium) NFS 4.1, SMB

然后我们使用网络文件是为了读写Sqlite文件,而使用Sqlite文件必须得支持File Lock, 而NFS 3.0并不支持File Lock, 综合考虑,最合适的是SMB。 c#代码如下:文章来源地址https://www.toymoban.com/news/detail-861504.html

class LinuxMount : IMount
{
    private const String CredFolder = "/tmp";

    private static readonly String MountFileStorageCommand = "mount -t cifs {0} {1} -o credentials={2},dir_mode=0777,file_mode=0777,uid=0,gid=0,cache=strict,mfsymlinks,nobrl";
    private static readonly String UnmountFileStorageCommand = "umount -f {0}";

    public void Mount(DeviceMountOption option)
    {
        var mountPoint = option.MountPoint;
        EnsureFolder(mountPoint);
        EnsureFolder(CredFolder);
        var credFile = Path.Combine(CredFolder, $"credentials_{Guid.NewGuid()}");
        var credContent = $"username={option.Username}{Environment.NewLine}password={option.Password}";
        try
        {
            File.WriteAllText(credFile, credContent);
            ExcuteCommand(String.Format(MountFileStorageCommand, option.FileSharePath, mountPoint, credFile));
        }
        finally
        {
            if (File.Exists(credFile))
            {
                File.Delete(credFile);
            }
        }
    }

    public void Unmount(String mountPoint)
    {
        ExcuteCommand(String.Format(UnmountFileStorageCommand, mountPoint));
    }

    private void EnsureFolder(String folder)
    {
        var dir = new DirectoryInfo(folder);
        if (!dir.Exists)
        {
            dir.Create();
        }
    }

    private void ExcuteCommand(String command)
    {
        using var proc = new Process();
        proc.StartInfo.FileName = "sh";
        proc.StartInfo.Arguments = $"-c \"{command}\"";
        proc.StartInfo.UseShellExecute = false;
        proc.StartInfo.CreateNoWindow = true;
        proc.StartInfo.RedirectStandardOutput = true;
        proc.StartInfo.RedirectStandardError = true;
        proc.Start();

        var result = proc.StandardOutput.ReadToEnd();
        result += proc.StandardError.ReadToEnd();

        proc.WaitForExit();
        if (proc.ExitCode != 0)
        {
            throw new Exception($"Command failed, {result}");
        }
    }
}

到了这里,关于计算机网络-网络文件共享协议的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【计算机网络】网络层协议 -- ICMP协议

    ICMP(Internet Control Message Protocol,控制报文协议),用于在IP主机、路由器直接传递控制消息,是一个TCP/IP协议。 ICMP协议的定位 网络层的最典型的协议是IP协议,但是除了IP协议之外,还有ICMP协议和IGMP协议。 ICMP、IGMP和IP协议虽然都属于网络层的协议,但是ICMP协议和IGMP协议属

    2024年02月14日
    浏览(23)
  • [计算机网络]认识“协议”

    在网络体系结构中,应用层的应用程序会产生数据,这个数据往往不是简单的一段字符串数据,而是具有一定意义的结构化数据,应用层要想在网络中发送这个结构化数据,就要将其转化成报文结构,而这个 将应用程序产生的结构化数据转化成报文的过程就是序列化 。 数据

    2024年02月05日
    浏览(21)
  • 计算机网络之5层网络协议

    计算机网络是我们日常生活中无法分割的一部分,它让我们能够实现互联互通,快速传输数据,并在各个领域取得了巨大的成就。而要实现这种高效的通信,网络协议就变得至关重要。网络协议是计算机之间进行通信的规则和约定,它们确保了数据能够在网络中顺畅传输。在

    2024年02月10日
    浏览(26)
  • 【计算机网络-网络层】路由选择协议

    路由器是一种具有多个输入端口和输出端口的 专用计算机 ,其任务是 转发分组 和 路由选择 。 实现的网络模型:物理层、数据链路层、网络层。 路由器的结构分为两个部分: 路由选择部分(控制部分) :核心是路由选择处理机,它根据 路由选择协议 构造出 路由表 ,路

    2024年02月02日
    浏览(23)
  • 【计算机网络笔记】什么是网络协议?

    本篇文章总字数:1027字 预计阅读时间:3~7min 建议收藏之后慢慢阅读 硬件(主机、路由器、通信链 路等)只是计算机网络的基础。计算机网络中的数据交换必须遵守事先约定好的 规则 。如果仅仅修好了道路、有了车辆,没有交通规则来指导我们安全、有序的行驶,交通系统

    2024年02月07日
    浏览(23)
  • 【计算机网络】网络基础--协议/网络协议/网络传输流程/地址管理

    网络的发展分为一下几个阶段: 独立模式: 计算机之间相互独立: 此时计算机之间是相互独立的,每个人在执行任务的时候是独立的,需要等待前一个将任务完成之后,自己才能进行执行任务,是串行执行的,效率很低。 网络互联: 多台计算机连接在一起, 完成数据共享:

    2024年02月03日
    浏览(21)
  • 【计算机网络】TCP协议

    实验目的 应用所学知识: 1. 熟悉 TCP 的协议格式。 2. 理解 TCP 对序列号和确认号的使用。 3. 理解 TCP 的流量控制算法和拥塞控制算法。 实验步骤与结果 1.任务一: 将Alice.txt上传到服务器: 使用wireshark捕获数据包,看到计算机和gaia.cs.umass.edu之间的一系列 TCP 和 HTTP 通信,包

    2023年04月20日
    浏览(30)
  • 【计算机网络:DHCP协议】

    动态主机配置协议(DHCP)作为一种核心网络协议,其主要功能是简化网络设备(如计算机、打印机、手机等)的网络配置过程。通过自动分配IP地址和其他必要的网络配置信息,它极大地减轻了网络管理员的负担,并提高了网络的灵活性和可扩展性。 DHCP,即动态主机配置协

    2024年02月22日
    浏览(21)
  • 计算机网络-TCP协议

    TCP被称为面向连接的,因为在应用程序开始互传数据之前,TCP会先建立一个连接,该连接的建立涉及到 三次“握手 ”。 TCP的连接不是一条真实存在的电路,而是一条逻辑链接 ,其共同状态仅保留在两个通信端系统的TCP程序中。 TCP连接也是点对点的,即TCP连接只能存在于一

    2024年02月08日
    浏览(29)
  • 计算机网络——HTTP协议

            HTTP(超文本传输协议),定义在RFC2616中,是用于分布式和协作式多媒体系统之间交互的应用层通信协议。         HTTP是一个无状态协议,意味着它不保存先前交互的记录。每个请求都独立于其他请求处理。         HTTP旨在促进客户端和服务器在分布式系

    2024年01月21日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包