RFC 2345

Domain Names and Company Name Retrieval

๐Ÿ“… published May 1998, from ietf

Domain Names and Company Name Retrieval ๐ŸŽ€

Okay bestie, let's start with the title block tea โ˜• This is RFC 2345, from the Network Working Group, written by J. Klensin (MCI), T. Wolf (Dun & Bradstreet), and G. Oglesby (MCI). It's dated May 1998 and its category is Experimental ๐Ÿงช. The title block doesn't list any Obsoletes or Updates. Now let's get into it ๐Ÿ’…

Status of This Memo ๐Ÿ’–

This memo defines an Experimental Protocol for the Internet community. It does not specify an Internet standard of any kind. Discussion and suggestions for improvement are requested. Distribution of this memo is unlimited.


Copyright (C) The Internet Society (1998). All Rights Reserved.

Abstract โœจ

Finding web info for a particular company based on its name has become a seriously tricky problem as the Internet and the web keep growing ๐Ÿ“ˆ Using a naming convention and the domain name system (DNS) for that has made things messy for DNS without actually solving the problem. There have been a bunch of proposals to use fancier, high-capability directory service and search protocols to cut down on relying on DNS naming conventions, but none of them have been significantly deployed ๐Ÿ˜ญ

This document proposes a company name to URL mapping service built on whois, the oldest and least complex of the Internet's directory protocols ๐Ÿฆ‹. The goal is to test whether an extremely simple, widely-deployed protocol can succeed where more complex and powerful options have failed or been excessively delayed ๐Ÿš€

1. Introduction and Context โœจ

So recently there have been loads of conversations across the Internet community about "the top level domain problem" ๐Ÿ‘€ The phrase is characteristically vague, because different groups use it for different, and maybe nearly unrelated, issues. Those issues include:

  • 1.1. A "domain administration policy" issue.
  • 1.2. A "name ownership" issue, of which the trademark issue may constitute a special case.
  • 1.3. An information location issue, specifically the problem of locating the appropriate domain, or information tied to a domain, for an entity given the name by which that entity is usually known.

Honestly, the first two are kind of inevitable side effects of the Internet getting bigger ๐ŸŒˆ There have been on-and-off issues with top level domain administration, plus attempts to use the domain registry as a way to control service providers or services, ever since a large number of such domains started being allocated. Those problems led to the policy guidelines in [RFC1591].

The third one is mostly a result of the explosive growth of the World Wide Web ๐Ÿ•ธ๏ธ Especially because URL formats [URL] are exposed to end users, and no other mechanisms were available. Without a proper, well-deployed directory service, people assumed you could find a company's web pages by using a naming convention built on the company's name or product name. So for the XYZ Company, people assumed a web page would live at:

http://www.xyz.com/
or
http://www.xyz-company.com/

But as the network grows and more web sites live in domains other than ".COM", that convention gets really hard to keep up with ๐Ÿ˜ตโ€๐Ÿ’ซ There will be too many organizations or companies with legitimate claims, maybe in different lines of business or jurisdictions, to the same short descriptive names. Because of that, the community has felt for years that the fix for this information location problem isn't changes to the domain name system, but some kind of directory service ๐Ÿงš

Here's the catch though: those directory services never really showed up ๐Ÿ™ƒ There's been ongoing drama about which protocols and access mechanisms to pick. The IETF has published specs for several directory and search protocols, including [WHOIS++], [RWHOIS], [LDAP], [X500], [GOPHER]. One theory for why nothing happened is that these mechanisms have been hard to select and deploy because they're way more complex than they need to be ๐Ÿคฏ This document proposes an extremely simple alternative ๐Ÿ“

2. Using WHOIS ๐Ÿง 

The WHOIS protocol is the oldest directory access protocol still in use on the Internet ๐Ÿ‘‘ It dates back in published form to March 1982, and it was first implemented somewhat earlier. The protocol itself is simple and minimalist: the client opens a telnet connection to the WHOIS port (43) and sends a line over it. The server looks up that line in a way it defines itself, returns one or more lines of info to the client, and then closes the connection.

The authors suggest that modifications or add-ins be created for Web browsers that would access a new, commercially-provided Whois server ๐Ÿ’ป The browser sends a putative company name and gets back one or more lines. Each line contains a URL, followed by one or more blanks, and then a matching company name. That order was picked to minimize parsing problems: since URLs can't contain blanks, the first blank character marks the end of the URL, and the next non-blank marks the start of the company name ๐ŸŽฏ As is usual with Whois, the criteria the server uses to match the incoming string are up to the server.

The difference between this and the protocol as documented in [WHOIS] is that exactly one company name is returned per line (see section 3 for details of syntax) โœจ

The client would then be expected to:

  • (i) If a single line (company name and URL) is returned, either ask for confirmation or simply fetch the associated URL as if the user had typed it in.
  • (ii) If multiple lines (names) are returned, present the user with a choice, presumably showing company names rather than (or supplemented by) URLs, then fetch using the URL selected.

Obviously, the most convenient way to use the services in this document would be through a client that's part of, or closely connected with, a Web browser ๐ŸŒธ But a user without that kind of facility could still use a traditional WHOIS client, then paste or otherwise transfer the relevant info into the target location of a browser ๐Ÿ“‹

3. Formats, versions, and international character sets ๐ŸŽ€

Early work with the approach above suggests that some specific conventions about syntax and variations would be useful ๐Ÿงฉ

3.1 Line sent from client to server. ๐Ÿ’Œ

These lines may take either of two forms:

  • (i) A simple 7-bit ASCII string, containing a "company name"
  • (ii) A string in the format (using the ABNF notation of RFC 2234 [ABNF]):
Variation "/" 1*Octet

    Variation :== "0" | ( Non-zero-digit 1*Digit)
    Non-zero-digit :== 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
    Digit :== 0 | Non-zero-digit

Where Octet is any eight-bit sequence, representing a prefixed variation number.

The first form will be construed as equivalent to the second form with the leading string "0/". Variation numbers are specified in section 3.3.

In all cases, what "company name" might mean, and in particular what variations of form or spelling, abbreviations, and so on might be accepted, is strictly up to the server's interpretation ๐Ÿคทโ€โ™€๏ธ If the server's rules lead to the conclusion that a string matches some company in its data, whether that decision is correct or incorrect is not covered by this specification.

For variation 0 and, by default, for all others, any alphabetic text in lines is to be construed in a case-insensitive fashion ๐Ÿ”ก

3.2 Lines sent from server to client. ๐Ÿ“จ

The server is expected to return one or more lines to the client, depending on its interpretation of the input string. Generally, each line consists, as described above, of a URL, a space, and a "company name". This document deliberately does not specify the content or semantics of the "company name" string. It might just be a name, or a name plus descriptive info like location and type of business, or other info at the server's option ๐Ÿข The expectation, as mentioned above, is that the client displays this info to help users pick the right URL.

These lines, consistent with normal Internet practice, will be terminated by a CR LF sequence (rather than one or the other of those control characters) โ†ฉ๏ธ

When and if different variation numbers are introduced, their specifications may include variations on what the server is expected to return ๐Ÿ”€

Instead of "URL and company name" responses, the server may also return "error messages". These take the form of lines containing:

"///" SP String

where the String is 7-bit ASCII with no control characters other than SP, unless the variation associated with the variation number specifies otherwise. For this experiment, all "error messages" except the following two are discouraged ๐Ÿ™…โ€โ™€๏ธ

/// Not found
/// Variation not supported
  • /// Not found means the "company name" doesn't match anything.
  • /// Variation not supported means the variation number the client sent isn't recognized by the server.

3.3. Registered variations ๐Ÿท๏ธ

The following two variations are established as part of this specification:

  • 0/ Query and response are in 7-bit ASCII, no controls other than SP, "Company name" separated from URL by one or more SP characters.
  • 1/ Query and response are in UTF-8, no controls other than SP, "Company name" separated from URL by one or more SP characters, no specification of language on either input or output.

The IANA will maintain a registry of additional variations, which is hoped to be very short ๐Ÿ“ Requests for additional variations should be sent via email to: iana@iana.org.

4. Alternatives not chosen ๐Ÿ’…

Few comments on the initial drafts of this document addressed the basic model or protocol design for the service discussed ๐Ÿ‘€ Instead, they focused on asking about the decisions the authors didn't make, and about beliefs regarding the protocol specification that the authors never intended. The authors hope those have since been corrected. Questions of the following three types predominated in the first category.

โœจ Part 1 of 3 โœจ

4.1 Why didn't you use <insert-favorite-directory-protocol-here>? โœจ

Okay bestie, this question came up SO much ๐Ÿ˜ญ. Lots of people asked how much more we could do with a higher-powered directory protocol instead of the super simple WHOIS. People brought up LDAP, X.500 DAP, CCSO, RWHOIS, and WHOIS++, and we had a few reasons for skipping them ๐Ÿ’…. The biggest one is that we were obsessed with seeing how far an extremely simplistic approach could go, and WHOIS was the simplest thing we could find ๐Ÿฆ‹. If it turns out to be too basic in practice, things can always grow into one or more of the fancier protocols. But if we started with one of those, we'd never get that info. Here's the rest of the tea:

  • None of the existing directory proposals has really emerged as the "right" solution with a large installed base. WHOIS and WHOIS clients are already everywhere ๐ŸŒˆ, so using them means we don't have to pick a "winner" too early or get dragged into the debate ๐Ÿ™ˆ.
  • For casual users, the mechanisms needed to kick off the extensive attribute-based directory searches of the stronger protocols are just too complicated ๐Ÿ˜ต. They might actually scare people off from using it well.
  • Ever since the dawn of the ARPANET, the Internet experience has been that setting up a directory service is easy, but maintaining one and keeping the records up-to-date is extremely difficult ๐Ÿ’€. Running an effective directory service and keeping everything current may will require a revenue-producing product ๐Ÿ’ฐ. Using a very simple protocol for the basic service means the basic service can rationally be given away, while more advanced services are run on a charge or subscription basis ๐ŸŽ€.

4.2 And why not use a Web search engine?

Web search engines are immensely effective and powerful, but they solve a different problem than this protocol ๐Ÿ”โœจ. The protocol model here does involve a directory lookup, using a presumed company name as the key.

The quality of the result depends on the quality of the underlying directory and the editorial and research work that goes into building it. Neither of those is a matter for the protocol itself, so we trust marketplace pressures to separate good servers from poor ones ๐Ÿ‘‘. Web search engines are often more effective at finding info about companies than the company-designated web pages themselves, which is honestly iconic ๐Ÿซถ.

4.3 Why not return a more highly structured information format rather than a simple pair of URL and "company name"?

Again, the goal was to keep things extremely simple ๐Ÿ“. In particular, we wanted to allow minimal interpretation between the user's input and the query, and between the response and a display or action. Some of the questions on this were due to misunderstandings about what the "company name" field implies, so we clarified its semantics above ๐Ÿ’œ. We also wanted to dodge the level of standardization that comes with a tagging scheme. Highly-structured fields might cause interoperability problems or be way too restrictive about what can be returned ๐Ÿ™…โ€โ™€๏ธ.

5. Thoughts on Directory Providers

There's no technical reason why there should be only one provider of company name to URL mapping services using this protocol, and there's no reason for registries of those providers either ๐Ÿงš. Presumably, the servers that provide the best-quality mappings will eventually win in the marketplace ๐Ÿ†. However, just like most traditional uses of WHOIS, it's desirable for client implementations (or Web browsers supporting this protocol) to let users choose their servers through configuration options or the equivalent โš™๏ธ๐Ÿ’–.

6. Demo Application

To show off the proposed functionality of this document, a prototype of both the server and client have been made for demonstration purposes ๐ŸŽฌโœจ.

6.1 Server

The TLD-WHOIS demonstration server is available at companies.mci.net. The server holds a database of approximately 209,000 company entries provided by Dun and Bradstreet ๐Ÿ“š.

The server will generally respond to a query within 15 seconds โฐ. If the server has the response cached from a previous query, the return time will be significantly shorter โšก.

If 10 or more entries are found in the database for the query, only the top 10 will be returned in the response ๐Ÿ”Ÿ.

For the purposes of this demonstration, there's no provision for submitting additions or changes to the database ๐Ÿ™…. The authors and the sponsoring companies are not responsible for the accuracy of the data provided by this prototype. Our apologies if your company isn't listed ๐Ÿฅบ.

6.2 Client

6.2.1 Download Location:

A demonstration client for the Windows 95/NT platforms is available for public download through anonymous ftp at ftp.mci.net/pub/ietf/company/demo.exe, or via the web at ftp://ftp.mci.net/pub/ietf/company/demo.exe ๐Ÿ’พ. The file size is approximately 1.9 MB.

6.2.2 Setup Instructions:

a) Download the client installation software from the site mentioned above to a local 32 bit Windows computer. The installation software has been compressed using the self-extracting archive application from InstallShield. The default name for the download is demo.exe ๐Ÿ“ฅ.

b) Double click on the file through File Explorer, or run the program through the START menu ๐Ÿ–ฑ๏ธ.

c) Select "Setup" to let InstallShield uncompress the files needed to install the demonstration client to a temporary directory. InstallShield will then automatically launch the main application Setup program ๐Ÿช„.

d) The main setup program installs the demo application files and makes the necessary additions to the Windows Registry. No user action is required ๐Ÿ™Œ.

e) When installation finishes, you'll be prompted to run the application or exit setup ๐Ÿ.

6.2.3 Paranoia:

What did you just do to my computer? ๐Ÿ˜ฑ๐Ÿ™ˆ

Files Copied:

companyname.exe    Main program executable
whois.ocx          WhoIs module from Mabry Software
led.ocx            LED module from Mabry Software
msvbvm50.dll       Microsoft Visual Basic 5.0 runtime file
stdole2.tlb        Microsoft Visual Basic 5.0 runtime file
oleaut32.dll       Microsoft Visual Basic 5.0 runtime file
olepro32.dll       Microsoft Visual Basic 5.0 runtime file
comcat.dll         Microsoft Visual Basic 5.0 runtime file
asyncfilt.dll      Microsoft Visual Basic 5.0 runtime file
crtl3d32.dll       Installshield control used for installation only

Registry Changes:

Created key under HKEY_CLASSES_ROOT called Who ๐Ÿ—๏ธ.

This entry is used to enable Microsoft Internet Explorer's pluggable protocol handler. The key contains several sub-entries that list the path and command to the companyname executable. The pluggable protocol handler provides the necessary hooks to launch the companyname application whenever the WHO:// URL is submitted in the address line of Internet Explorer ๐Ÿฆ‹โœจ.

6.2.4 Using the Program

6.2.4.1 Standalone Operation:

From the Start Menu, select Programs \ Companyname \ companyname. Alternatively, it can be launched from Start with Run c:\windows\companyname.exe ๐Ÿš€.

Enter the name of the company you're trying to locate and press OK ๐Ÿ”Ž.

A status box will be displayed while the client is communicating with the server, until a response comes back. The possible returns are:

a) Message box saying, "Your request was not found." This means the company information submitted wasn't found in the database ๐Ÿ˜ฟ.

b) A list box containing 2 - 10 company names sorted high to low by score. Highlight one of the names and press the launch button. The program will launch the default web browser for your computer and navigate to the site ๐ŸŒธ.

c) The default web browser launches and navigates to a site. This means only one match was found in the database, and that match is opened directly without user intervention ๐ŸŽฏ.

6.2.4.2 Within Internet Explorer

From the Address Line within the web browser, enter WHO:// followed by the name of the company you want to search for, then press the enter key ๐ŸŒ.

Note: Since the company name is entered within the URL space of the browser, it can not contain spaces.

If you want to send a search string that contains spaces, enter WHO:// with no company information. The application will display the dialogue window described in standalone mode, so you can enter the search criteria ๐ŸชŸ๐Ÿ’….

A status box will be displayed while the client is communicating with the server, until a response comes back. The possible returns are:

a) Message box saying, "Your request was not found." This means the company information submitted wasn't found in the database ๐Ÿ˜ฟ.

b) A list box containing 2 - 10 company names sorted high to low by score. Highlight one of the names and press the launch button. The program will launch the default web browser for your computer and navigate to the site ๐ŸŒธ.

c) The default web browser launches and navigates to a site. This means only one match was found in the database, and that match is opened directly without user intervention ๐ŸŽฏ.

6.2.5 Client Customization

The name of the Whois server is hardcoded within the application as companies.mci.net. No initialization file or registry keys are needed for the default configuration ๐Ÿซง. Realizing that some testers may have proxy servers on their corporate systems, and that others may want to test the client against a different Whois server, the client supports a mechanism for changing the default server. To turn on server customization, follow these steps:

a) Create a new directory in the root of the C: Drive called companyname ๐Ÿ“.

b) Using Notepad or any text editor, create a new file called whois.ini ๐Ÿ“.

c) Add a new line to the file beginning with SERVER= <server name>. Don't include the double quotes around the tag. <server name> would be the IP Address or DNS name of the new Whois or proxy server ๐ŸŒ.

d) End the line with a carriage return โ†ฉ๏ธ.

e) Save the file as a plain text file back to c:\companyname\whois.ini ๐Ÿ’พ.

6.2.6 Client Limitations:

The demonstration software and database are provided "as is". No warranties are stated or implied, so use at your own risk โš ๏ธ๐Ÿ’€.

The demonstration client is supported only on 32 bit Intel Windows platforms. It has been tested on Windows 95, Windows NT 4.0, and Windows 98 beta RC0 ๐Ÿ–ฅ๏ธ.

Use of the WHO:// URL moniker from within the web browser is supported only under Microsoft Internet Explorer ๐ŸŒธ.

TCP Port 43 must be cleared through firewalls for the client to communicate with the server. If you need to use a proxy server to get through a firewall, refer to the section on client customization ๐Ÿงฑ๐Ÿ”“.

When using the Address Line entry method within Microsoft Internet Explorer, spaces are not permitted within the search string ๐Ÿ™…โ€โ™€๏ธ๐Ÿ’–.

7. References ๐Ÿ“š

Okay bestie, here's the reading list ๐Ÿค“. Every single reference is in here with all its details, so you can go find them yourself.

  • [ABNF] Crocker, D., and P. Overell, Eds., "Augmented BNF for Syntax Specifications: ABNF", RFC 2234, November 1997.
  • [RFC1591] Postel, J., "Domain Name System Structure and Delegation", RFC 1591, March 1994.
  • [GOPHER] Anklesaria, F., McCahill, M., Lindner, P., Johnson, D., John, D., Torrey, D., and B. Alberti, "The Internet Gopher Protocol (a distributed document search and retrieval protocol)", RFC 1436, March 1993.
  • [LDAP] Yeong, W., Howes, T., and S. Kille, "Lightweight Directory Access Protocol", RFC 1777, March 1995.
  • [RWHOIS] Williamson, S., and M. Kosters, "Referral Whois Protocol (RWhois)", RFC 1714, December 1994.
  • [URL] Berners-Lee, T., Masinter, L., and M. McCahill, "Uniform Resource Locators (URL)", RFC 1738, December 1994.
  • [WHOIS] Feinler, E., Harrenstien, K., and M. Stahl, "NICNAME/WHOIS", RFC 954, October 1985.
  • [WHOIS++] Deutsch, P., Schoultz, R., Faltstrom, P., and C. Weider, "Architecture of the WHOIS++ service", RFC 1835, August 1995.
  • [X500] Wright, R., Getchell, A., Howes, T., Sataluri, S., Yee, P., and W. Yeong, "Recommendations for an X.500 Production Directory Service", RFC 1803, June 1995.
  • [Z39.50] Lynch, C., "Using the Z39.50 Information Retrieval Protocol in the Internet Environment", RFC 1729, December 1994.

8. Security Considerations ๐Ÿ”

Okay, this part is seriously important ๐Ÿ˜ค. Using WHOIS this way doesn't add any big new security risks on top of the regular WHOIS stuff, and WHOIS is one of the most widely-deployed apps on the whole Internet ๐ŸŒ.

Servers should treat whatever string they get as an information retrieval key, and never as something to execute in some way ๐Ÿ™…โ€โ™€๏ธ.

Now here's the scary plot twist ๐Ÿ˜ฑ. The real danger is if the server doing the translation gets spoofed. Then it could hand back a wrong URL for a particular company, and that's a whole mess ๐Ÿ’€. Same deal as finding a fake page through naming conventions: the best protection is paying careful attention to certificates, signatures, and any other authenticity-indicating info ๐Ÿ”โœจ.


9. IANA Considerations ๐Ÿงพ

So, as mentioned in section 3.3 above ๐ŸŽ€, this experiment asks IANA to keep a registry of query variation forms ๐Ÿ“‹. The registry should start out with the two values listed in that section ๐Ÿ’œ.


10. Acknowledgements ๐Ÿซถ

This memo was born out of lots and lots of conversations over the last few years ๐Ÿ’ฌ. Those chats were about the status and uses of the domain name system, finding information using naming conventions around domain names, exposing URLs to end users, and the convergence of directory and search protocols ๐ŸŒˆ. There are way too many people involved to list them all, but the authors want to thank everyone for their contributions and comments ๐Ÿ’–.

Special shoutout to Martin Hamilton, Keith Moore, Tom Thornbury and Ed Trembicki-Guy ๐Ÿ‘‘, who made important suggestions that helped revise this memo ๐Ÿ”ฅ.


11. Authors' Addresses ๐Ÿ“ฎ

Here are the authors, with their contact info ๐Ÿ’Œ.

John C. Klensin
MCI Internet Architecture
800 Boylston St, 7th floor
Boston, MA 02199
USA

Phone: +1 617 960 1011
EMail: klensin@mci.net
Ted Wolf, Jr.
Electronic Commerce
Dun & Bradstreet Information Services
3 Sylvan Way
Parsippany, NJ 07054
USA

Phone: +1 201 605 6308
EMail: ted@usa.net
Gary W. Oglesby
MCI Internet Architecture
842 N. Ahoy Dr.
Gilbert, AZ 85234
USA

Phone: +1 415 538 1100
EMail: gary@mci.net

Here's the legal stuff, kept complete so nothing gets lost ๐Ÿงพ๐Ÿ’….

Copyright (C) The Internet Society (1998). All Rights Reserved.

This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English.

The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns.

This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. ๐Ÿฆ‹๐ŸŒธ

๐Ÿ“ฆ where this page comes from