RFC 2345
Domain Names and Company Name Retrieval
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 Notice ๐
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 foundmeans the "company name" doesn't match anything./// Variation not supportedmeans 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
12. Full Copyright Statement โ๏ธ
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
- ietf: rfc2345 1998-05
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms