请输入您要查询的百科知识:

 

词条 9P (protocol)
释义

  1. Server applications

  2. Implementation

  3. See also

  4. References

  5. External links

{{Multiple issues|{{technical|date=February 2017}}{{primary sources|date=August 2015}}
}}{{IPstack}}

9P (or the Plan 9 Filesystem Protocol or Styx) is a network protocol developed for the Plan 9 from Bell Labs distributed operating system as the means of connecting the components of a Plan 9 system. Files are key objects in Plan 9. They represent windows, network connections, processes, and almost anything else available in the operating system.

9P was revised for the 4th edition of Plan 9 under the name 9P2000, containing various improvements. Some of the improvements made are, the removal of certain filename restrictions, the addition of a 'last modifier' metadata field for directories, and authentication files.[1] The latest version of the Inferno operating system also uses 9P2000. The Inferno file protocol was originally called Styx, but technically it has always been a variant of 9P.

A server implementation of 9P for Unix, called u9fs,[2][3] is included in the Plan 9 distribution. A 9P OS X client kernel extension is provided by Mac9P.[4] A kernel client driver implementing 9p with some extensions for Linux is part of the v9fs project. 9P and its derivatives have also found application in embedded environments, such as the Styx on a Brick project.[5]

Server applications

Many of Plan 9's applications take the form of 9P file servers. Examples include:

  • acme: a text editor/development environment
  • rio: the Plan 9 windowing system
  • plumber: interprocess communication
  • ftpfs: an FTP client that presents the files and directories on a remote FTP server in the local namespace
  • wikifs: a wiki editing tool that presents a remote wiki as files in the local namespace
  • webfs: a file server that retrieves data from URLs and presents the contents and details of responses as files in the local namespace

Outside of Plan 9, the 9P protocol is still used when a lightweight remote filesystem is required:

  • NixOS: a purely functional and declarative Linux distribution can rebuild itself inside a virtual machine, where the client uses 9P to mount the store directory of the host.
  • Windows Subsystem for Linux: where the subsystem implements 9P as a server and the host Windows operating system acts as a client.[6]
  • Crostini: a custom 9P server is used to provide access to files outside of a Linux VM [7]
  • QEMU: the VirtFS device allows for filesystem sharing over 9P, which is accelerated with kernel drivers and shared memory [8][9]

Implementation

9P sends the following messages between clients and servers.[10] These messages correspond to the entry points in the Plan 9 vfs layer that any 9P server must implement.

version

Negotiate protocol version[11]

error

Return an error[12]

flush

Abort a message[13]

auth, attach

Establish a connection[14]

walk

Descend a directory hierarchy[15]

create, open

Prepare a fid for I/O on an existing or new file[16]

read, write

Transfer data from and to a file[17]

clunk

Forget about a fid[18]

remove

Remove a file from a server[19]

stat, wstat

Inquire or change file attributes[20]

See also

  • IL (network protocol), transport protocol that was designed for 9P in local area networks
  • Distributed file system

References

1. ^[https://9p.io/plan9/about.html Plan9 from Bell Labs -- Overview]
2. ^[https://www.netlib.org/research/ u9fs.tgz source code tarball]
3. ^u9fs manual page (online html version)
4. ^[https://github.com/benavento/mac9p/ Mac9P]
5. ^Styx on a Brick project
6. ^[https://blogs.msdn.microsoft.com/commandline/2019/02/15/whats-new-for-wsl-in-windows-10-version-1903/]
7. ^{{Cite web|url=https://chromium.googlesource.com/chromiumos/docs/+/master/containers_and_vms.md#Overview|title=Chromium OS Docs - Running Custom Containers Under Chrome OS|website=chromium.googlesource.com|access-date=2019-03-28}}
8. ^{{Cite journal|last=Jujjuri|first=Venkateswararao|last2=Van Hensbergen|first2=Eric|last3=Liguori|first3=Anthony|last4=Pulavarty|first4=Badari|date=July 13–16, 2010|title=VirtFS—A virtualization aware File System pass-through|url=https://www.kernel.org/doc/ols/2010/ols2010-pages-109-120.pdf|journal=Linux Symposium|volume=|pages=|via=}}
9. ^{{Cite web|url=https://wiki.qemu.org/Documentation/9psetup|title=Documentation/9psetup - QEMU|website=wiki.qemu.org|access-date=2019-03-28}}
10. ^9p protocol
11. ^Negotiate protocol version
12. ^Return an error
13. ^Abort a message
14. ^Messages to establish a connection
15. ^walk page from Section 5 of the plan 9 manual
16. ^Prepare a fid for I/O on an existing or new file
17. ^Transfer data from and to a file
18. ^Forget about a fid
19. ^Remove a file from a server
20. ^Inquire or change file attributes

External links

  • 9P Resources page at cat-v.org
  • 9P Manual
  • The Styx Architecture for Distributed Systems by Rob Pike and Dennis Ritchie
  • The Organization of Networks in Plan 9 by Dave Presotto and Phil Winterbottom
  • Security in Plan 9

8 : Application layer protocols|Inferno (operating system)|Inter-process communication|Internet Protocol based network software|Network file systems|Network file transfer protocols|Network protocols|Plan 9 from Bell Labs

随便看

 

开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。

 

Copyright © 2023 OENC.NET All Rights Reserved
京ICP备2021023879号 更新时间:2024/11/10 22:50:12