Init begginers tutorial - gopher-tutorials - The gopher tutorials project. | |
git clone git://bitreich.org/gopher-tutorials/ git://enlrupgkhuxnvlhsf6lc3fziv5… | |
Log | |
Files | |
Refs | |
Tags | |
--- | |
commit 58cf4b88c986080868a330292971f1cc21bebffb | |
parent ec3ae31b44a84392069b3eded4c70a7c303baa00 | |
Author: Solene Rapenne <[email protected]> | |
Date: Tue, 30 Jan 2018 08:29:33 +0100 | |
Init begginers tutorial | |
Diffstat: | |
A beginners.txt | 93 +++++++++++++++++++++++++++++… | |
1 file changed, 93 insertions(+), 0 deletions(-) | |
--- | |
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 … | |
+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. |