最近研究了下 Windows 的共享设置,目的是在同一局域网下共享文件夹给其他设备读写。下面从原理和实际操作上介绍下共享过程。

SMB

Windows 共享使用 Server Message Block (SMB) 协议,它可以让应用程序访问本机网络下的其他设备的文件及服务。

SMB 是 IBM 在 1980 年代创造的协议,目前已经有了很多的升级及分支。

SMB 协议允许应用程序访问远程主机的文件和资源如打印机等,也可以同远程主机上设置了接收 SMB 协议的应用程序通信。它运行在网络的 layer 7 层,也就是 application 应用层,使用 TCP/IP 的 445 端口传输数据。

从 Windows 95 开始,微软将引入了 SMB 协议的支持。Linux 端,samba 作为一个开源软件提供 SMB 的支持。

阅读全文


Microsoft store 里都是 UWP 应用,运行在被称为 App Container 的虚拟沙箱环境中,其安全性及纯净度远胜于传统的 EXE 应用。但 App Container 机制同时也阻止了网络流量发送到本机(即 loopback), 使大部分网络抓包调试工具无法对 UWP 应用进行流量分析。该机制也阻止了 UWP 应用访问 localhost,如果你的代理地址在本地地址,UWP 就无法访问。

有两种方法来解除某个 UWP 应用的沙盒隔离,一种是使用系统自带的工具 CheckNetIsolation,一种是使用第三方工具 fiddler

CheckNetIsolation

Windows 10 自带了一个 CheckNetIsolation 工具,可以解除 UWP 应用的网络隔离,使之可以正常访问本地地址在终端执行以下指令即可:

CheckNetIsolation.exe loopbackexempt -a -p=SID

SID(security identifier) 是每个 UWP 应用独有的识别码,可以从注册表中获得应用的 SID 码。

阅读全文


下面介绍几种常用的命令行创建新文件的方法。

touch

touch test1.txt

>:

> test2.txt

cat:

cat /dev/null > test3.txt

echo:

echo > test4.txt

vim:

vim test5.txt
:wq

使用中选择最简单的方式即可。


调用 node.js 文件

node.js 有内建的 module system 模块系统,一个node.js 文件可以导入其他 node.js 文件内定义的功能。

语法如下:

const library = require('./libs')

和导入其他第三方模块类似使用 require 指令,需要指定 node.js 文件路径。以上示例表示导入当前目录下的 libs.js 文件。

js 文件中默认定义的 objects 等元素是私有的,不能够被外部使用。在被导入的文件中,需要在引用前 expose 暴漏出需要被外部使用的功能。需要使用到 module system 的 module.exports API 来实现。

阅读全文


WebDAV(Web-based Distributed Authoring and Versioning) 一种基于 HTTP 1.1协议的通信协议。它扩展了HTTP 1.1在 GETPOSTHEAD等几个HTTP标准方法以外添加了一些新的方法,使应用程序可对Web Server直接读写,并支持写文件锁定(Locking)及解锁(Unlock),还可以支持文件的版本控制。

简单说 webdav 就像一个网盘,可以远程访问他的目录名对其文件进行读写操作。

WebDAV 允许客户端进行下列操作:

  • 处理服务器上 WebDAV 发布目录中的资源
  • 具有正确权限的用户可以在 WebDAV目录中复制和移动文件
  • 修改与某些资源相关联的属性。例如,用户可写入并检索文件的属性信息
  • 锁定并解锁资源以便多个用户可同时读取一个文件。但每次只能有一个人修改文件
  • 搜索 WebDAV 目录中的文件的内容和属性

阅读全文