Misplaced Pages

Gopher (protocol)

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.
#33966

101-542: Early research and development: Merging the networks and creating the Internet: Commercialization, privatization, broader access leads to the modern Internet: Examples of Internet services: The Gopher protocol ( / ˈ ɡ oʊ f ər / ) is a communication protocol designed for distributing, searching, and retrieving documents in Internet Protocol networks. The design of

202-423: A CD-ROM , can be done on Gopher. A Gopher system consists of a series of hierarchical hyperlinkable menus. The choice of menu items and titles is controlled by the administrator of the server. Similar to a file on a Web server, a file on a Gopher server can be linked to as a menu item from any other Gopher server. Many servers take advantage of this inter-server linking to provide a directory of other servers that

303-489: A physical quantity . The protocol defines the rules, syntax , semantics , and synchronization of communication and possible error recovery methods . Protocols may be implemented by hardware , software , or a combination of both. Communicating systems use well-defined formats for exchanging various messages. Each message has an exact meaning intended to elicit a response from a range of possible responses predetermined for that particular situation. The specified behavior

404-450: A serial number . Once assigned a number and published, an RFC is never rescinded or modified; if the document requires amendments, the authors publish a revised document. Therefore, some RFCs supersede others; the superseded RFCs are said to be deprecated , obsolete , or obsoleted by the superseding RFC. Together, the serialized RFCs compose a continuous historical record of the evolution of Internet standards and practices. The RFC process

505-402: A tunneling arrangement to accommodate the connection of dissimilar networks. For example, IP may be tunneled across an Asynchronous Transfer Mode (ATM) network. Protocol layering forms the basis of protocol design. It allows the decomposition of single, complex protocols into simpler, cooperating protocols. The protocol layers each solve a distinct class of communication problems. Together,

606-474: A "cloud" as specific information in a particular file, and the prominence of the FTP, influenced the technology and the resulting functionality of Gopher. Gopher is designed to function and to appear much like a mountable read-only global network file system (and software, such as gopherfs , is available that can actually mount a Gopher server as a FUSE resource). At a minimum, whatever can be done with data files on

707-665: A +. A Gopher+ server will respond with a status line followed by the content the client requested. An item is marked as supporting Gopher+ in the Gopher directory listing by a tab + after the port (this is the case of some of the items in the example above). Other features of Gopher+ include: These are clients, libraries, and utilities primarily designed to access gopher resources. Clients like web browsers, libraries, and utilities primarily designed to access World Wide Web resources, but which maintain(ed) gopher support. Browsers with no Gopher native support can still access servers using one of

808-580: A coarse hierarchy of functional layers defined in the Internet Protocol Suite . The first two cooperating protocols, the Transmission Control Protocol (TCP) and the Internet Protocol (IP) resulted from the decomposition of the original Transmission Control Program, a monolithic communication protocol, into this layered communication suite. The OSI model was developed internationally based on experience with networks that predated

909-406: A command line: The protocol is also supported by cURL since 7.21.2-DEV, which was released in 2010. The selector string in the request can optionally be followed by a tab character and a search string. This is used by item type 7. Gopher menu items are defined by lines of tab-separated values in a text file . This file is sometimes called a gophermap . As the source code to a gopher menu,

1010-522: A common set of terms such as "MUST" and "NOT RECOMMENDED" (as defined by RFC  2119 and 8174 ), augmented Backus–Naur form (ABNF) ( RFC  5234 ) as a meta-language, and simple text-based formatting, in order to keep the RFCs consistent and easy to understand. The RFC series contains three sub-series for IETF RFCs: BCP, FYI, and STD. Best Current Practice (BCP) is a sub-series of mandatory IETF RFCs not on standards track. For Your Information (FYI)

1111-599: A computer environment (such as ease of mechanical parsing and improved bandwidth utilization ). Network applications have various methods of encapsulating data. One method very common with Internet protocols is a text oriented representation that transmits requests and responses as lines of ASCII text, terminated by a newline character (and usually a carriage return character). Examples of protocols that use plain, human-readable text for its commands are FTP ( File Transfer Protocol ), SMTP ( Simple Mail Transfer Protocol ), early versions of HTTP ( Hypertext Transfer Protocol ), and

SECTION 10

#1733085791034

1212-562: A de facto standard operating system like Linux does not have this negative grip on its market, because the sources are published and maintained in an open way, thus inviting competition. RFC (identifier) A Request for Comments ( RFC ) is a publication in a series from the principal technical development and standards-setting bodies for the Internet , most prominently the Internet Engineering Task Force (IETF). An RFC

1313-437: A gophermap is roughly analogous to an HTML file for a web page . Each tab-separated line (called a selector line ) gives the client software a description of the menu item: what it is, what it is called, and where it leads to. The client displays the menu items in the order that they appear in the gophermap. The first character in a selector line indicates the item type , which tells the client what kind of file or protocol

1414-453: A machine rather than a human being. Binary protocols have the advantage of terseness, which translates into speed of transmission and interpretation. Binary have been used in the normative documents describing modern standards like EbXML , HTTP/2 , HTTP/3 and EDOC . An interface in UML may also be considered a binary protocol. Getting the data across a network is only part of the problem for

1515-453: A networking protocol, the protocol software modules are interfaced with a framework implemented on the machine's operating system. This framework implements the networking functionality of the operating system. When protocol algorithms are expressed in a portable programming language the protocol software may be made operating system independent. The best-known frameworks are the TCP/IP model and

1616-555: A new submission which will receive a new serial number. Standards track documents are further divided into Proposed Standard and Internet Standard documents. Only the IETF, represented by the Internet Engineering Steering Group (IESG), can approve standards-track RFCs. If an RFC becomes an Internet Standard (STD), it is assigned an STD number but retains its RFC number. The definitive list of Internet Standards

1717-417: A packet-switched network, rather than this being a service of the network itself. His team was the first to tackle the highly complex problem of providing user applications with a reliable virtual circuit service while using a best-effort service , an early contribution to what will be the Transmission Control Protocol (TCP). Bob Metcalfe and others at Xerox PARC outlined the idea of Ethernet and

1818-496: A period character) on a line by itself. However, not all servers conform to this part of the protocol and the server may close a connection without returning a final full-stop. The main type of reply from the server is a text or binary resource. Alternatively, the resource can be a menu: a form of structured text resource providing references to other resources. Because of the simplicity of the Gopher protocol, tools such as netcat make it possible to download Gopher content easily from

1919-507: A platform for the first large-scale electronic library connections. The Gopher protocol is still in use by enthusiasts, and although it has been almost entirely supplanted by the Web, a small population of actively-maintained servers remains. The Gopher system was released in mid-1991 by Mark P. McCahill, Farhad Anklesaria, Paul Lindner, Daniel Torrey, and Bob Alberti of the University of Minnesota in

2020-554: A protocol. The data received has to be evaluated in the context of the progress of the conversation, so a protocol must include rules describing the context. These kinds of rules are said to express the syntax of the communication. Other rules determine whether the data is meaningful for the context in which the exchange takes place. These kinds of rules are said to express the semantics of the communication. Messages are sent and received on communicating systems to establish communication. Protocols should therefore specify rules governing

2121-554: A reference model for communication standards led to the OSI model , published in 1984. For a period in the late 1980s and early 1990s, engineers, organizations and nations became polarized over the issue of which standard , the OSI model or the Internet protocol suite, would result in the best and most robust computer networks. The information exchanged between devices through a network or other media

SECTION 20

#1733085791034

2222-478: A set of cooperating processes that manipulate shared data to communicate with each other. This communication is governed by well-understood protocols, which can be embedded in the process code itself. In contrast, because there is no shared memory , communicating systems have to communicate with each other using a shared transmission medium . Transmission is not necessarily reliable, and individual systems may use different hardware or operating systems. To implement

2323-572: A similar fashion; BCP n refers to a certain RFC or set of RFCs, but which RFC or RFCs may change over time). An informational RFC can be nearly anything from April 1 jokes to widely recognized essential RFCs like Domain Name System Structure and Delegation ( RFC  1591 ). Some informational RFCs formed the FYI sub-series. An experimental RFC can be an IETF document or an individual submission to

2424-576: A single communication. A group of protocols designed to work together is known as a protocol suite; when implemented in software they are a protocol stack . Internet communication protocols are published by the Internet Engineering Task Force (IETF). The IEEE (Institute of Electrical and Electronics Engineers) handles wired and wireless networking and the International Organization for Standardization (ISO) handles other types. The ITU-T handles telecommunications protocols and formats for

2525-456: A standardization process. Such protocols are referred to as de facto standards . De facto standards are common in emerging markets, niche markets, or markets that are monopolized (or oligopolized ). They can hold a market in a very negative grip, especially when used to scare away competition. From a historical perspective, standardization should be seen as a measure to counteract the ill-effects of de facto standards. Positive exceptions exist;

2626-415: A string followed by a carriage return followed by a line feed (a "CR + LF" sequence). This is the selector, which identifies the document to be retrieved. If the item selector were an empty line, the default directory would be selected. The server then replies with the requested item and closes the connection. According to the protocol, before the connection closes, the server should send a full-stop (i.e.,

2727-432: A time when there were still many equally competing computer architectures and operating systems. As a result, there are several Gopher clients available for Acorn RISC OS , AmigaOS , Atari MiNT , Conversational Monitor System (CMS), DOS , classic Mac OS , MVS , NeXT , OS/2 Warp , most Unix-like operating systems, VMS , Windows 3.x , and Windows 9x . GopherVR was a client designed for 3D visualization, and there

2828-430: A transfer mechanism of a protocol is comparable to a central processing unit (CPU). The framework introduces rules that allow the programmer to design cooperating protocols independently of one another. In modern protocol design, protocols are layered to form a protocol stack. Layering is a design principle that divides the protocol design task into smaller steps, each of which accomplishes a specific part, interacting with

2929-586: Is a sub-series of informational RFCs promoted by the IETF as specified in RFC ; 1150 (FYI 1). In 2011, RFC  6360 obsoleted FYI 1 and concluded this sub-series. Standard (STD) used to be the third and highest maturity level of the IETF standards track specified in RFC  2026 (BCP 9). In 2011 RFC  6410 (a new part of BCP 9) reduced the standards track to two maturity levels. There are five streams of RFCs: IETF , IRTF , IAB , independent submission , and Editorial . Only

3030-408: Is another of the four first of what were ARPANET nodes and the source of early RFCs. The ARC became the first network information center ( InterNIC ), which was managed by Elizabeth J. Feinler to distribute the RFCs along with other network information. From 1969 until 1998, Jon Postel served as the RFC editor . On his death in 1998, his obituary was published as RFC  2468 . Following

3131-539: Is authored by individuals or groups of engineers and computer scientists in the form of a memorandum describing methods, behaviors, research, or innovations applicable to the working of the Internet and Internet-connected systems. It is submitted either for peer review or to convey new concepts, information, or, occasionally, engineering humor. The IETF adopts some of the proposals published as RFCs as Internet Standards . However, many RFCs are informational or experimental in nature and are not standards. The RFC system

Gopher (protocol) - Misplaced Pages Continue

3232-413: Is documented in RFC  2026 ( The Internet Standards Process, Revision 3 ). The RFC production process differs from the standardization process of formal standards organizations such as International Organization for Standardization (ISO). Internet technology experts may submit an Internet Draft without support from an external institution. Standards-track RFCs are published with approval from

3333-511: Is even a Gopher client in MOO . Most such clients are hard-coded to work on Transmission Control Protocol (TCP) port 70. Because the protocol is trivial to implement in a basic fashion, there are many server packages still available, and some are still maintained. Communication protocol A communication protocol is a system of rules that allows two or more entities of a communications system to transmit information via any variation of

3434-453: Is governed by rules and conventions that can be set out in communication protocol specifications. The nature of communication, the actual data exchanged and any state -dependent behaviors, is defined by these specifications. In digital computing systems, the rules can be expressed by algorithms and data structures . Protocols are to communication what algorithms or programming languages are to computations. Operating systems usually contain

3535-544: Is now typical of Internet Draft documents, the precursor step before being approved as an RFC. In December 1969, researchers began distributing new RFCs via the newly operational ARPANET. RFC  1 , titled "Host Software", was written by Steve Crocker of the University of California, Los Angeles (UCLA), and published on April 7, 1969. Although written by Steve Crocker, the RFC had emerged from an early working group discussion between Steve Crocker, Steve Carr, and Jeff Rulifson . In RFC  3 , which first defined

3636-502: Is obsoleted by various newer RFCs, but SMTP itself is still "current technology", so it is not in "Historic" status. However, since BGP version 4 has entirely superseded earlier BGP versions, the RFCs describing those earlier versions, such as RFC  1267 , have been designated historic. Status unknown is used for some very old RFCs, where it is unclear which status the document would get if it were published today. Some of these RFCs would not be published at all today; an early RFC

3737-449: Is referred to as communicating sequential processes (CSP). Concurrency can also be modeled using finite state machines , such as Mealy and Moore machines . Mealy and Moore machines are in use as design tools in digital electronics systems encountered in the form of hardware used in telecommunication or electronic devices in general. The literature presents numerous analogies between computer communication and programming. In analogy,

3838-552: Is submitted as plain ASCII text and is published in that form, but may also be available in other formats . For easy access to the metadata of an RFC, including abstract, keywords, author(s), publication date, errata, status, and especially later updates, the RFC Editor site offers a search form with many features. A redirection sets some efficient parameters, example: rfc:5000. The official International Standard Serial Number (ISSN) of

3939-478: Is the Official Internet Protocol Standards. Previously STD 1 used to maintain a snapshot of the list. When an Internet Standard is updated, its STD number stays the same, now referring to a new RFC or set of RFCs. A given Internet Standard, STD n , may be RFCs x and y at a given time, but later the same standard may be updated to be RFC z instead. For example, in 2007 RFC  3700

4040-408: Is the synchronization of software for receiving and transmitting messages of communication in proper sequencing. Concurrent programming has traditionally been a topic in operating systems theory texts. Formal verification seems indispensable because concurrent programs are notorious for the hidden and sophisticated bugs they contain. A mathematical approach to the study of concurrency and communication

4141-594: Is typically independent of how it is to be implemented . Communication protocols have to be agreed upon by the parties involved. To reach an agreement, a protocol may be developed into a technical standard . A programming language describes the same for computations, so there is a close analogy between protocols and programming languages: protocols are to communication what programming languages are to computations . An alternate formulation states that protocols are to communication what algorithms are to computation . Multiple protocols often describe different aspects of

Gopher (protocol) - Misplaced Pages Continue

4242-660: The Internet Research Task Force (IRTF), and an independent stream from other outside sources. A new model was proposed in 2008, refined, and published in August 2009, splitting the task into several roles, including the RFC Series Advisory Group (RSAG). The model was updated in 2012. The streams were also refined in December 2009, with standards defined for their style. In January 2010, the RFC Editor function

4343-744: The National Physical Laboratory in the United Kingdom, it was written by Roger Scantlebury and Keith Bartlett for the NPL network . On the ARPANET , the starting point for host-to-host communication in 1969 was the 1822 protocol , written by Bob Kahn , which defined the transmission of messages to an IMP. The Network Control Program (NCP) for the ARPANET, developed by Steve Crocker and other graduate students including Jon Postel and Vint Cerf ,

4444-423: The OSI model . At the time the Internet was developed, abstraction layering had proven to be a successful design approach for both compiler and operating system design and, given the similarities between programming languages and communication protocols, the originally monolithic networking programs were decomposed into cooperating protocols. This gave rise to the concept of layered protocols which nowadays forms

4545-561: The PARC Universal Packet (PUP) for internetworking. Research in the early 1970s by Bob Kahn and Vint Cerf led to the formulation of the Transmission Control Program (TCP). Its RFC   675 specification was written by Cerf with Yogen Dalal and Carl Sunshine in December 1974, still a monolithic design at this time. The International Network Working Group agreed on a connectionless datagram standard which

4646-496: The finger protocol . Text-based protocols are typically optimized for human parsing and interpretation and are therefore suitable whenever human inspection of protocol contents is required, such as during debugging and during early protocol development design phases. A binary protocol utilizes all values of a byte , as opposed to a text-based protocol which only uses values corresponding to human-readable characters in ASCII encoding. Binary protocols are intended to be read by

4747-569: The public switched telephone network (PSTN). As the PSTN and Internet converge , the standards are also being driven towards convergence. The first use of the term protocol in a modern data-commutation context occurs in April 1967 in a memorandum entitled A Protocol for Use in the NPL Data Communications Network. Under the direction of Donald Davies , who pioneered packet switching at

4848-574: The Gopher protocol and user interface is menu-driven, and presented an alternative to the World Wide Web in its early stages , but ultimately fell into disfavor, yielding to Hypertext Transfer Protocol ( HTTP ). The Gopher ecosystem is often regarded as the effective predecessor of the World Wide Web. The Gopher protocol was invented by a team led by Mark P. McCahill at the University of Minnesota . It offers some features not natively supported by

4949-611: The IETF creates BCPs and RFCs on the standards track. The IAB publishes informational documents relating to policy or architecture. The IRTF publishes the results of research, either as informational documents or as experiments. Independent submissions are published at the discretion of the Independent Submissions Editor. Non-IETF documents are reviewed by the IESG for conflicts with IETF work. IRTF and independent  RFCs generally contain relevant information or experiments for

5050-559: The IETF, and are usually produced by experts participating in IETF Working Groups , which first publish an Internet Draft. This approach facilitates initial rounds of peer review before documents mature into RFCs. The RFC tradition of pragmatic, experience-driven, after-the-fact standards authorship accomplished by individuals or small working groups can have important advantages over the more formal, committee-driven process typical of ISO and national standards bodies. Most RFCs use

5151-507: The Internet at large not in conflict with IETF work. compare RFC  4846 , 5742 and 5744 . The Editorial Stream is used to effect editorial policy changes across the RFC series (see RFC  9280 ). The official source for RFCs on the World Wide Web is the RFC Datatracker. Almost any published RFC can be retrieved via a URL of the form https://datatracker.ietf.org/doc/html/rfc5000, shown for RFC  5000 . Every RFC

SECTION 50

#1733085791034

5252-640: The Internet community, other documents also called requests for comments have been published, as in U.S. Federal government work, such as the National Highway Traffic Safety Administration . The inception of the RFC format occurred in 1969 as part of the seminal ARPANET project. Today, it is the official publication channel for the Internet Engineering Task Force (IETF), the Internet Architecture Board (IAB), and – to some extent –

5353-436: The RFC Editor. A draft is designated experimental if it is unclear the proposal will work as intended or unclear if the proposal will be widely adopted. An experimental RFC may be promoted to standards track if it becomes popular and works well. The Best Current Practice subseries collects administrative documents and other texts which are considered as official rules and not only informational , but which do not affect over

5454-790: The RFC Series Approval Board (RSAB). It also established a new Editorial Stream for the RFC Series and concluded the RSOC. The role of the RSE was changed to the RFC Series Consulting Editor (RSCE). In September 2022, Alexis Rossi was appointed to that position. Requests for Comments were originally produced in non- reflowable text format. In August 2019, the format was changed so that new documents can be viewed optimally in devices with varying display sizes. The RFC Editor assigns each RFC

5555-451: The RFC series is 2070-1721. Not all RFCs are standards. Each RFC is assigned a designation with regard to status within the Internet standardization process. This status is one of the following: Informational , Experimental , Best Current Practice , Standards Track , or Historic . Once submitted, accepted, and published, an RFC cannot be changed. Errata may be submitted, which are published separately. More significant changes require

5656-632: The RFC series, Crocker started attributing the RFC series to the Network Working Group. Rather than being a formal committee, it was a loose association of researchers interested in the ARPANET project. In effect, it included anyone who wanted to join the meetings and discussions about the project. Many of the subsequent RFCs of the 1970s also came from UCLA, because UCLA is one of the first of what were Interface Message Processors (IMPs) on ARPANET. The Augmentation Research Center (ARC) at Stanford Research Institute , directed by Douglas Engelbart ,

5757-554: The United States. Its central goals were, as stated in RFC   1436 : Gopher combines document hierarchies with collections of services, including WAIS , the Archie and Veronica search engines , and gateways to other information systems such as File Transfer Protocol (FTP) and Usenet . The general interest in campus-wide information systems (CWISs) in higher education at the time, and

5858-478: The Web and imposes a much stronger hierarchy on the documents it stores. Its text menu interface is well-suited to computing environments that rely heavily on remote text-oriented computer terminals , which were still common at the time of its creation in 1991 , and the simplicity of its protocol facilitated a wide variety of client implementations. More recent Gopher revisions and graphical clients added support for multimedia. Gopher's hierarchical structure provided

5959-456: The approval or support of a standards organization , which initiates the standardization process. The members of the standards organization agree to adhere to the work result on a voluntary basis. Often the members are in control of large market shares relevant to the protocol and in many cases, standards are enforced by law or the government because they are thought to serve an important public interest, so getting approval can be very important for

6060-570: The available Gopher to HTTP gateways or proxy server that converts Gopher menus into HTML ; known proxies are the Floodgap Public Gopher proxy and Gopher Proxy. Similarly, certain server packages such as GN and PyGopherd have built-in Gopher to HTTP interfaces. Squid Proxy software gateways any gopher:// URL to HTTP content, enabling any browser or web agent to access gopher content easily. For Mozilla Firefox and SeaMonkey , Overbite extensions extend Gopher browsing and support

6161-448: The basis of protocol design. Systems typically do not use a single protocol to handle a transmission. Instead they use a set of cooperating protocols, sometimes called a protocol suite . Some of the best-known protocol suites are TCP/IP , IPX/SPX , X.25 , AX.25 and AppleTalk . The protocols can be arranged based on functionality in groups, for instance, there is a group of transport protocols . The functionalities are mapped onto

SECTION 60

#1733085791034

6262-455: The client should expect. Item type 3 is an error code for exception handling . Gopher client authors improvised item types h (HTML), i (informational message), and s ( sound file ) after the publication of RFC 1436. Browsers like Netscape Navigator and early versions of Microsoft Internet Explorer would prepend the item type code to the selector as described in RFC   4266 , so that

6363-442: The content being carried: text-based and binary. A text-based protocol or plain text protocol represents its content in human-readable format , often in plain text encoded in a machine-readable encoding such as ASCII or UTF-8 , or in structured text-based formats such as Intel hex format , XML or JSON . The immediate human readability stands in contrast to native binary protocols which have inherent benefits for use in

6464-414: The current versions of the browsers (Firefox Quantum v ≥57 and equivalent versions of SeaMonkey): OverbiteWX includes support for accessing Gopher servers not on port 70 using a whitelist and for CSO/ph queries . OverbiteFF always uses port 70. For Chromium and Google Chrome , Burrow is available. It redirects gopher:// URLs to a proxy. In the past an Overbite proxy-based extension for these browsers

6565-405: The domain and port are that of the originating Gopher server (so that clients that do not support URL links will query the server and receive an HTML redirection page). Gopher+ is a forward compatible enhancement to the Gopher protocol. Gopher+ works by sending metadata between the client and the server. The enhancement was never widely adopted by Gopher servers. The client sends a tab followed by

6666-402: The ease of setup of Gopher servers to create an instant CWIS with links to other sites' online directories and resources, were the factors contributing to Gopher's rapid adoption. The name was coined by Anklesaria as a play on several meanings of the word "gopher". The University of Minnesota mascot is the gopher , a gofer is an assistant who "goes for" things, and a gopher burrows through

6767-628: The expiration of the original ARPANET contract with the U.S. federal government, the Internet Society, acting on behalf of the IETF, contracted with the Networking Division of the University of Southern California (USC) Information Sciences Institute (ISI) to assume the editorship and publishing responsibilities under the direction of the IAB. Sandy Ginoza joined USC/ISI in 1999 to work on RFC editing, and Alice Hagens in 2005. Bob Braden took over

6868-673: The field of computer networking, it has been historically criticized by many researchers as abstracting the protocol stack in this way may cause a higher layer to duplicate the functionality of a lower layer, a prime example being error recovery on both a per-link basis and an end-to-end basis. Commonly recurring problems in the design and implementation of communication protocols can be addressed by software design patterns . Popular formal methods of describing communication syntax are Abstract Syntax Notation One (an ISO standard) and augmented Backus–Naur form (an IETF standard). Finite-state machine models are used to formally describe

6969-486: The global community of computer network researchers in general. The authors of the first RFCs typewrote their work and circulated hard copies among the ARPA researchers. Unlike the modern RFCs, many of the early RFCs were actual Requests for Comments and were titled as such to avoid sounding too declarative and to encourage discussion. The RFC leaves questions open and is written in a less formal style. This less formal style

7070-529: The ground to reach a desired location. The World Wide Web was in its infancy in 1991, and Gopher services quickly became established. By the late 1990s, Gopher had ceased expanding. Several factors contributed to Gopher's stagnation: Gopher remains in active use by its enthusiasts, and there have been attempts to revive Gopher on modern platforms and mobile devices. One attempt is The Overbite Project, which hosts various browser extensions and modern clients. The conceptualization of knowledge in "Gopher space" or

7171-426: The horizontal message flows (and protocols) are between systems. The message flows are governed by rules, and data formats specified by protocols. The blue lines mark the boundaries of the (horizontal) protocol layers. The software supporting protocols has a layered organization and its relationship with protocol layering is shown in figure 5. To send a message on system A, the top-layer software module interacts with

7272-643: The internet as a reference model for general communication with much stricter rules of protocol interaction and rigorous layering. Typically, application software is built upon a robust data transport layer. Underlying this transport layer is a datagram delivery and routing mechanism that is typically connectionless in the Internet. Packet relaying across networks happens over another layer that involves only network link technologies, which are often specific to certain physical layer technologies, such as Ethernet . Layering provides opportunities to exchange technologies when needed, for example, protocols are often stacked in

7373-476: The layers make up a layering scheme or model. Computations deal with algorithms and data; Communication involves protocols and messages; So the analog of a data flow diagram is some kind of message flow diagram. To visualize protocol layering and protocol suites, a diagram of the message flows in and between two systems, A and B, is shown in figure 3. The systems, A and B, both make use of the same protocol suite. The vertical flows (and protocols) are in-system and

7474-427: The layers, each layer solving a distinct class of problems relating to, for instance: application-, transport-, internet- and network interface-functions. To transmit a message, a protocol has to be selected from each layer. The selection of the next protocol is accomplished by extending the message with a protocol selector for each layer. There are two types of communication protocols, based on their representation of

7575-433: The menu item points to. This helps the client decide what to do with it. Gopher's item types are a more basic precursor to the media type system used by the Web and email attachments . The item type is followed by the user display string (a description or label that represents the item in the menu); the selector (a path or other string for the resource on the server); the hostname (the domain name or IP address of

7676-402: The module directly below it and hands over the message to be encapsulated. The lower module fills in the header data in accordance with the protocol it implements and interacts with the bottom module which sends the message over the communications channel to the bottom module of system B. On the receiving system B the reverse happens, so ultimately the message gets delivered in its original form to

7777-415: The other parts of the protocol only in a small number of well-defined ways. Layering allows the parts of a protocol to be designed and tested without a combinatorial explosion of cases, keeping each design relatively simple. The communication protocols in use on the Internet are designed to function in diverse and complex settings. Internet protocols are designed for simplicity and modularity and fit into

7878-457: The possible interactions of the protocol. and communicating finite-state machines For communication to occur, protocols have to be selected. The rules can be expressed by algorithms and data structures. Hardware and operating system independence is enhanced by expressing the algorithms in a portable programming language. Source independence of the specification provides wider interoperability. Protocol standards are commonly created by obtaining

7979-658: The program were included the RFC Editor Model (Version 3) as defined in RFC  9280 , published in June 2022. Generally, the new model is intended to clarify responsibilities and processes for defining and implementing policies related to the RFC series and the RFC Editor function. Changes in the new model included establishing the position of the RFC Consulting Editor, the RFC Series Working Group (RSWG), and

8080-401: The protocol, creating incompatible versions on their networks. In some cases, this was deliberately done to discourage users from using equipment from other manufacturers. There are more than 50 variants of the original bi-sync protocol. One can assume, that a standard would have prevented at least some of this from happening. In some cases, protocols gain market dominance without going through

8181-526: The protocol. The need for protocol standards can be shown by looking at what happened to the Binary Synchronous Communications (BSC) protocol invented by IBM . BSC is an early link-level protocol used to connect two separate nodes. It was originally not intended to be used in a multinode network, but doing so revealed several deficiencies of the protocol. In the absence of standardization, manufacturers and organizations felt free to enhance

8282-427: The recommendation to use source filtering to make DoS attacks more difficult ( RFC  2827 : " Network Ingress Filtering: Defeating Denial of Service Attacks which employ IP Source Address Spoofing ") is BCP 38 . A historic RFC is one that the technology defined by the RFC is no longer recommended for use, which differs from "Obsoletes" header in a replacement RFC. For example, RFC  821 ( SMTP ) itself

8383-429: The role of RFC project lead, while Joyce K. Reynolds continued to be part of the team until October 13, 2006. In July 2007, streams of RFCs were defined, so that the editing duties could be divided. IETF documents came from IETF working groups or submissions sponsored by an IETF area director from the Internet Engineering Steering Group . The IAB can publish its own documents. A research stream of documents comes from

8484-409: The server), and the network port . All lines in a gopher menu are terminated by "CR + LF". Example of a selector line in a menu source: The following selector line generates a link to the "/home" directory at the subdomain gopher.floodgap.com, on port 70. The item type of 1 indicates that the linked resource is a Gopher menu itself. The string "Floodgap Home" is what the client will show to

8585-510: The top module of system B. Program translation is divided into subproblems. As a result, the translation software is layered as well, allowing the software layers to be designed independently. The same approach can be seen in the TCP/IP layering. The modules below the application layer are generally considered part of the operating system. Passing data between these modules is much less expensive than passing data between an application program and

8686-506: The transmission. In general, much of the following should be addressed: Systems engineering principles have been applied to create a set of common network protocol design principles. The design of complex protocols often involves decomposition into simpler, cooperating protocols. Such a set of cooperating protocols is sometimes called a protocol family or a protocol suite, within a conceptual framework. Communicating systems operate concurrently. An important aspect of concurrent programming

8787-406: The transport layer. The boundary between the application layer and the transport layer is called the operating system boundary. Strictly adhering to a layered model, a practice known as strict layering, is not always the best approach to networking. Strict layering can have a negative impact on the performance of an implementation. Although the use of protocol layering is today ubiquitous across

8888-438: The type of the gopher item could be determined by the url itself. Most gopher browsers still available, use these prefixes in their urls. Here is an example gopher session where the user requires a gopher menu ( /Reference on the first line): The gopher menu sent back from the server, is a sequence of lines each of which describes an item that can be retrieved. Most clients will display these as hypertext links, and so allow

8989-432: The user can access. The Gopher protocol was first described in RFC   1436 . Internet Assigned Numbers Authority (IANA) has assigned Transmission Control Protocol (TCP) port 70 to the Gopher protocol. The protocol is simple to negotiate, making it possible to browse without using a client. First, the client establishes a TCP connection with the server on port 70, the standard gopher port. The client then sends

9090-420: The user to navigate through gopherspace by following the links. This menu includes a text resource (itemtype 0 on the third line), multiple links to submenus (itemtype 1 , on the second line as well as lines 4–6) and a non-standard information message (from line 7 on), broken down to multiple lines by providing dummy values for selector, host and port. Historically, to create a link to a Web server, "GET /"

9191-447: The user when visiting the example menu. In a Gopher menu's source code, a one-character code indicates what kind of content the client should expect. This code may either be a digit or a letter of the alphabet; letters are case-sensitive . The technical specification for Gopher, RFC   1436 , defines 14 item types. The later gopher+ specification defined an additional 3 types. A one-character code indicates what kind of content

9292-561: The wire data . The border between standards track and BCP is often unclear. If a document only affects the Internet Standards Process, like BCP 9, or IETF administration, it is clearly a BCP. If it only defines rules and regulations for Internet Assigned Numbers Authority (IANA) registries it is less clear; most of these documents are BCPs, but some are on the standards track. The BCP series also covers technical recommendations for how to practice Internet standards; for instance,

9393-446: Was an Internet Standard—STD 1—and in May 2008 it was replaced with RFC  5000 , so RFC  3700 changed to Historic , RFC  5000 became an Internet Standard, and as of May 2008 STD 1 is RFC  5000 . as of December 2013 RFC  5000 is replaced by RFC  7100 , updating RFC  2026 to no longer use STD 1. (Best Current Practices work in

9494-405: Was available but is no longer maintained and does not work with the current (>23) releases. For Konqueror , Kio gopher is available. As the bandwidth-sparing simple interface of Gopher can be a good match for mobile phones and personal digital assistants (PDAs), the early 2010s saw a renewed interest in native Gopher clients for popular smartphones . Gopher popularity was at its height at

9595-415: Was first implemented in 1970. The NCP interface allowed application software to connect across the ARPANET by implementing higher-level communication protocols, an early example of the protocol layering concept. The CYCLADES network, designed by Louis Pouzin in the early 1970s was the first to implement the end-to-end principle , and make the hosts responsible for the reliable delivery of data on

9696-416: Was invented by Steve Crocker in 1969 to help record unofficial notes on the development of ARPANET . RFCs have since become official documents of Internet specifications , communications protocols , procedures, and events. According to Crocker, the documents "shape the Internet's inner workings and have played a significant role in its success," but are not widely known outside the community. Outside of

9797-481: Was moved to a contractor, Association Management Solutions, with Glenn Kowack serving as interim series editor. In late 2011, Heather Flanagan was hired as the permanent RFC Series Editor (RSE). Also at that time, an RFC Series Oversight Committee (RSOC) was created. In 2020, the IAB convened the RFC Editor Future Development program to discuss potential changes to the RFC Editor model. The results of

9898-452: Was often just that: a simple Request for Comments, not intended to specify a protocol, administrative procedure, or anything else for which the RFC series is used today. The general rule is that original authors (or their employers, if their employment conditions so stipulate) retain copyright unless they make an explicit transfer of their rights. An independent body, the IETF Trust, holds

9999-580: Was presented to the CCITT in 1975 but was not adopted by the CCITT nor by the ARPANET. Separate international research, particularly the work of Rémi Després , contributed to the development of the X.25 standard, based on virtual circuits , which was adopted by the CCITT in 1976. Computer manufacturers developed proprietary protocols such as IBM's Systems Network Architecture (SNA), Digital Equipment Corporation's DECnet and Xerox Network Systems . TCP software

10100-474: Was redesigned as a modular protocol stack, referred to as TCP/IP. This was installed on SATNET in 1982 and on the ARPANET in January 1983. The development of a complete Internet protocol suite by 1989, as outlined in RFC   1122 and RFC   1123 , laid the foundation for the growth of TCP/IP as a comprehensive protocol suite as the core component of the emerging Internet . International work on

10201-400: Was used as a pseudo-selector to emulate an HTTP GET request . John Goerzen created an addition to the Gopher protocol, commonly referred to as " URL links", that allows links to any protocol that supports URLs. For example, to create a link to http://gopher.quux.org/ , the item type is h , the display string is the title of the link, the item selector is "URL:http://gopher.quux.org/", and

#33966