Init begginers tutorial - gopher-tutorials - The gopher tutorials project. HTML git clone git://bitreich.org/gopher-tutorials/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/gopher-tutorials/ DIR Log DIR Files DIR Refs DIR Tags --- DIR commit 58cf4b88c986080868a330292971f1cc21bebffb DIR parent ec3ae31b44a84392069b3eded4c70a7c303baa00 HTML Author: Solene Rapenne <solene@perso.pw> Date: Tue, 30 Jan 2018 08:29:33 +0100 Init begginers tutorial Diffstat: A beginners.txt | 93 +++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+), 0 deletions(-) --- DIR diff --git a/beginners.txt b/beginners.txt @@ -0,0 +1,93 @@ +Hello dear reader, + +if you have heard of gopher and you want to explore its space but that +you are lost about how to achieve this, this text is for you. We will +assume that you have no technical skill so everyone can read this. + +Gopher is the name of a protocol to share content like text, images or +any kind of file. A network protocol is a set of rules which allow to +create a common service for different people, everyone needing to +respect thoses rules to be able to communicate each other. Some +developpers will write "Clients" software for the end-user and others +developpers will write "Servers" software which will allow to publish +content. The Gopher protocol is so easy that anyone with basis of +computer science can write its own client or server, and being that +easy. Using Gopher implies to understand the protocol itself, but we +promise it's really easy. + +Gopher is an enjoyable way to browse informations. Every gopherhole +[that is the name we gave to someone gopher content] looks like +another one. There is no way to customize a gopherhole apart from the +text. While this can look a bit harshe, this makes Gopher +universal. If you know how to browse one gopherhole, you will know how +to browse all others because the way to do is consistent. + +So, let's speak about how Gopher works. First, Gopher requires 3 +informations if you want to get content. You will need a remote +address to connect to [it's called an hostname, like "floodgap.com"], +the data type and a path to the data. The url looks like this : + + gopher://hostname/type/path + +The most important type is the type 1, which is the Gopher menu +type. A Gopher menu is made of differents lines, each line having a +type field to know what kind of data it lead to. It will allow you to +browse from menu to menu or from a menu to a content (image, text, +music...). + +Each line of a menu contains 4 fields separated by a Tabulate +character. The fields are, in order : + +1. text to display (with the first character being the type) +2. path to the content on the remote server +3. hostname of the remote server which contains the content +4. TCP Port[1] of the remote server (default is 70) + +The tricky part is that the type of the line is not a separate field, +it's the first character of the line we is contained inside the first +field. Gopher clients usually hide it when displaying the text. + +Here is the list of the most used data types allowed on Gopher, the +complete list is defined in a document named RFC 1436 which defines +the Gopher protocol : + +- type i is a line of text in the menu, it's not a link +- type 0 is a link to a text document +- type 1 is a link to another gopher menu +- type 3 means an error +- type 7 (search) asks a text input and lead to another menu +- type 9 is a link to a binary file (data archives, music...) +- type g is a link to a GIF file (animated picture) +- type I is a link to an image file +- type h is a link which lead to use another protocol (irc, http...) + +Only the types menu and search can lead to another content. Asking +another type will lead to downloading a file. + +When requesting a Gopher menu, the text transferred through the +network could be read as-this, without a Gopher client. When a server +responds a menu with a few entries, the raw content transmitted to the +client looks like this : + +iText here, others fields are set with the null value null null null +1Another gopher menu /help/ floodgap.com 70 +1The menu leading to this help /tutorial/ bitreich.org 70 +IA cut cat picture /cute-cat.jpg floodgap.com 70 + +The previous menu will display 4 lines, the first will be a text and +the others last 3 lines will be links to another content, as you may +have noticed, the server is not necesserarly the same for every +line. Gopher allows to go to another server from another in a +transparent manner. A Gopher client could render the previous menu +like this, allowing to select the lines using arrows on the keyboard : + + | Text here, others fields are set with the null value +MENU | Another gopher menu +MENU | The menu leading to this help +IMAGE | A cut cat picture + + +[1] : a TCP Port could be explained as a door on a server where a + network service waits behind. You need to knock to the right + door when you reach the server. Gopher waits by default + behind the port 70.