Some people are against the practice of some less-enlightened Webmasters of designing Web pages that are tailored specifically to one or another browser's own version of HTML, or which work only with one particular browser. The worst offenders are certainly Netscape Communications Corp.'s Navigator and Microsoft's Internet Explorer. In response, then, those more-enlightened HTML hackers decided to create the 'Best Viewed with Any Browser' campaign, which more or less says (in one of many ways) that browser-specificity in HTML is a Bad Thing, and we should all design to the spec instead of being bug-compatible with whatever beta version is currently shipping from the major software houses. This is basically the right idea, but really, it could be refined a bit, in my opinion.
Therefore, I have decided to institute the Best Viewed with telnet to port 80 initiative. This is a name which refers to the common system administration practice of connecting to server ports with telnet to verify that they are listening for connections and functioning properly. Port 80 is the standard port for HyperText Transport Protocol, the protocol used for transferring Web pages over the Internet. (Contrary to popular belief, the terms 'Web' and 'Internet' are *not* synonymous or even generally interchangeable.) For more information about port numbers, please check RFC 1700, Internet Assigned Numbers, J. Reynolds & J. Postel, October 1994.
It is fairly simple to view the HTML source to a web page by means of telnet to port 80. For example, suppose you have the following URL (Uniform Resource Locator also known as a Web address):http://www.csua.berkeley.edu/officers.html
The various parts of the URL are as follows:
www.csua.berkeley.edu, which is canonically located on port 80, as noted above. The command or sequence of commands for connecting to ports other than 23 (the Telnet server port) using your Telnet client vary from system to system.
For example, if you are connecting from a VMS system running UCX, give this command at your DCL prompt:
$ TELNET www.csua.berkeley.edu /PORT=80to connect to the host www.csua.berkeley.edu on port 80. Unix users, or users of systems like Unix, should consult the on-line manual page
telnet(1) for details; if you are not familiar with the Unix online manual, type
% man manfor details.
Once you have connected to the HTTP server on the server host, you will not be prompted to enter any information; however, the Web server is awaiting your request. You have to issue a HTTP request in order to retrieve the page, which in our example is named "/officers.html" on the server.
To retrieve Web documents using HTTP, the client (you) must issue a GET request.
The syntax of a GET request is as follows:
GET document-name HTTP-version
Note, however, that all HTTP requests must end in a CRLF sequence (carriage return and line feed); how you do this depends somewhat on the keyboard, terminal or terminal emulator, and Telnet client you are using; there are enough combinations of these that the reader is advised to try different combinations of RETURN, Control-J, Enter, and/or Control-J until something works; note that it is nontrivial to do this from NCSA Telnet 2.7b4 for the Macintosh if "Berkeley 4.3 CR mode" is set in the Sessions preference box. (This particular option relies on a bug in the TCP/IP stack of early versions of 4.3 BSD Unix, which expected an ASCII NUL (0) to be sent after carriage return characters.)
What works to send requests on my machine, which is probably but not necessarily unlike your machine, is a sequence of Control-M then Control-J. So when you have typed the GET request, which in the example shown above should look like:
GET /officers.html HTTP/1.0type a CRLF, and then you should be rewarded by a HTTP response, which may or may not include an arbitrary amount of HTML.
You should also make sure to enter GET and HTTP in all uppercase; many web servers require this.
The first thing to check is whether you have actually received the document you wanted. You can usually tell by looking at the first line of the HTTP response, which should include a line like the following:
HTTP/1.0 Nnn Response textwhere
You know that you received the correct document by two simple heuristics:
If you have not been able to access the document, you should make sure the URL is spelled correctly; then and only then contact the webmaster if and only if you are certain that the document is supposed to be on that server and you have made reasonable attempts to search for it elsewhere on the server as well as elsewhere on the network.
Assuming that you have successfully retrieved something from the server, one of the last header lines will be of the format:
Content-type: mime-typewhere mime-type is some data-type defined by MIME, the Multipurpose Internet Mail Extensions. Most likely, if you have requested a HTML (HyperText Markup Language) document, you will get a Content-type tag of
text/html, and after a blank line, will follow the HTML you requested. If you were unlucky, you will have a Content-type of
image/jpeg, and the data returned by the HTTP request will be some sort of compressed raster image data. Implementing parsers for CompuServe(R) GIF data is a violation of the LZW patent held by Unisys, and is not recommended; implementing parsers for JPEG compressed images in the human brain is beyond the scope of this document.
For a guide to interpreting HTML, the reader is advised to check out any of the many good on-line documentations of HTML which are available from the World Wide Web Consortium's official HTML page; using the SGML DTD to parse HTML if you are not yourself a SGML parser is not advised.
Another important point is that the Web browsers of today are exceedingly inefficient in terms of both RAM and disk footprint, and tend to use grossly bloated object-oriented coding styles. Many computers cannot run the latest Web browsers, such as 68020-based Macintoshes; some cannot run Web browsers at all, such as those based on the PIC microcontroller, the Z80 or the Motorola 68HC09. Using a bare TCP/IP stack and a Telnet client is much more efficient, especially as Telnet clients come with most implementations of TCP/IP (and, indeed, most modern operating systems); therefore no additional investment of disk space is necessary.
Probably the most important reason for the Best Viewed with telnet to port 80 campaign is that it is time to realize what it means to disregard standards documents when implementing popular protocols: it is an undercutting of the standard itself, such that if enough people attempt to use the implementation you have written which does not conform to the standard, then they will start to design against your bugs and/or shortcomings, and to employ features that are not specified in the standard (thus making the protocol you have implemented only partially compatible with the standard, which is the definition of the protocol.)
Feel free to use the Best Viewed by telnet to port 80 button on your
web page, if you wish; just please don't modify it, because then it wouldn't
conform to the standard.
Some concerns about the initiative are addressed here.
Some people are really impressed with the Best Viewed with Telnet to Port 80 initiative. I even got some hate mail about it. Nevertheless, I have since received an apology from the sender; apparently it was a case of someone using someone else's account for mischief. So the letter is no longer online. I'm always interested in people's comments. You can send them to me at brg at dgate dot org.