summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc1714.txt
blob: fcceb256be975b38109b02ebb6b81395f2520d47 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
Network Working Group                                      S. Williamson
Request for Comments: 1714                                    M. Kosters
Category: Informational                           Network Solutions Inc.
                                                                InterNIC
                                                           November 1994


                    Referral Whois Protocol (RWhois)

Status of this Memo

   This memo provides information for the Internet community.  This memo
   does not specify an Internet standard of any kind.  Distribution of
   this memo is unlimited.

Abstract

   This memo describes version 1.0 of the client/server interaction of
   RWhois.  RWhois provides a distributed system for the display of
   hierarchical information.  This system is hierarchical by design,
   allowing for the reduction of a query, and the referral of the user
   closer to the maintainer of the information.

Table of Contents

     1.   Introduction................................... 3
     2.   RWhois Client Model............................ 5
       2.1  Directives:  Client to Server Interaction ... 6
       2.2  Required Directives ......................... 6
          2.2.1 <query>.................................. 6
          2.2.2 RWhois................................... 7
       2.3  Optional Directives ......................... 7
          2.3.1 load..................................... 7
          2.3.2 limit.................................... 7
          2.3.3 schema................................... 8
          2.3.4 xfer..................................... 8
          2.3.5 quit..................................... 9
          2.3.6 status................................... 9
          2.3.7 cache.................................... 9
          2.3.8 holdconnect..............................10
          2.3.9 forward..................................10
          2.3.10 soa.....................................11
          2.3.11 notify..................................11
          2.3.12 register................................13
          2.3.13 object..................................14
          2.3.14 define..................................15
          2.3.15 private.................................15
          2.3.16 X-......................................16



Williamson & Kosters                                            [Page 1]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


          2.3.17 directive...............................17
          2.3.18 display.................................17
          2.3.19 language................................18
       2.4  RWhois Client Model .........................18
     3.   RWhois Server Model............................20
       3.1  Output Display and Restriction Keywords .....20
       3.2  Responses:  Server to Client Interaction ....21
       3.3  Required Responses ..........................22
          3.3.1 RWhois...................................22
          3.3.2 referral.................................22
          3.3.3 ok.......................................24
          3.3.4 error....................................24
       3.4  Optional Responses ..........................25
          3.4.1 see-also.................................25
          3.4.2 load.....................................26
          3.4.3 soa......................................26
          3.4.4 status...................................28
          3.4.5 xfer.....................................29
          3.4.6 schema...................................30
          3.4.7 define...................................32
          3.4.8 object...................................32
          3.4.9 directive................................33
          3.4.10 info....................................34
          3.4.11 display.................................34
          3.4.12 X-......................................35
          3.4.13 language................................35
       3.5  Query Reduction .............................36
       3.6  Determining Authority .......................36
       3.7  Secondary Server Interaction ................37
       3.8  Registration Process ........................38
       3.9  Out-of-Service ..............................38
     4.   Interaction:  Client Directives and Acceptable
          Server Responses...............................39
       4.1 General ......................................39
       4.2 On Connection ................................39
       4.3 <QUERY> ......................................39
       4.4 -RWhois ......................................40
       4.5 -load ........................................40
       4.6 -limit<SP>< value > ..........................40
       4.7 -schema<SP>[object] ..........................40
       4.8 -xfer<SP>[object] ............................40
       4.9 -quit ........................................40
       4.10 -cache<SP><on/off> ..........................40
       4.11 -status .....................................40
       4.12 -forward ....................................40
       4.13 -soa ........................................40
       4.14 -notify .....................................41
       4.15 -register ...................................41



Williamson & Kosters                                            [Page 2]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


       4.16 -holdconnect ................................41
       4.17 -object .....................................41
       4.18 -define .....................................41
       4.19 -X- .........................................41
       4.20 -display ....................................41
       4.21 -language ...................................41
     5.   Error Codes....................................42
       5.1  Error Code List .............................42
     6.   Attribute Format...............................43
       6.1  Format Specification Macros .................44
     7.   Quick Query (RWhois using UDP).................45
     8.   References.....................................46
     9.   Security Considerations....................... 46
     10.  Authors' Addresses.............................46

1.  Introduction

   Early in ARPANET development, the SRI-NIC established a centralized
   whois database that provided host and network information about the
   systems connected to the network and the E-mail addresses of the
   users on those systems.  The ARPANET experiment has evolved into a
   global network with countless people and hundreds of thousands of end
   systems.  Given the sheer size and effort needed to maintain a
   centralized database, an alternate, decentralized approach to store
   and display this information is desired.

   The Internet portions of the DDN NIC have been transitioned to what
   is now known as InterNIC Registration Services (RS).  The charter for
   InterNIC RS has been reduced to maintain information only for IP
   networks, top-level domains, Autonomous System Numbers, and the
   points of contact for each of these particular entities.  In
   addition, the InterNIC, in its role as an Internet Registry (IR), has
   delegated IP block assignment authority to Regional Registries such
   as the RIPE NCC for Europe and the APNIC for the Asian Pacific
   region, while retaining authority for North America and all non-
   delegated regions.  This has led to a fragmentation of whois service
   to the Internet user.

   Several different solutions have been proposed and developed by the
   various regional IR's.  Two solutions have been worked on
   extensively:  the Shared Whois Project (SWIP) and X.500.

   The SWIP project has a common exchange format that can be parsed by
   the various IR's for input and output.  Thus, one can synchronize
   their databases with information obtained from the other IR's.  This
   project is showing promise and is now operational.  However, this
   approach still requires a centralized database for store and display.




Williamson & Kosters                                            [Page 3]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


   The InterNIC has also been involved in the use of X.500 for display
   of registration information.  Among other things, this included
   defining schemas and Directory information tree structures for the
   purpose of distributing information amongst the various IR X.500
   Directory Service Agents (DSA).  Unfortunately, X.500's complexity,
   resource utilization, and lack of Internet support has made a search
   for an alternative solution necessary.

   The information that the various IR's maintain is inherently
   hierarchical in nature.  (Examples: hammer.nic.ddn.mil is under the
   nic.ddn.mil domain which is under the ddn.mil domain which is under
   the .mil domain. 198.41.0.21 is part of network 198.41.0.0/24 which
   is part of the block 198.41.0.0/16 which is part of the block
   198.0.0.0/8)  The InterNIC may not have the information, but will at
   least be able to reduce the query and point or refer the users closer
   to their goal.  This has led to the development of a referral whois,
   and the corresponding RWhois protocol.

   The underlying premise for this project has been to retain the basic
   functionality of the whois server and client, making all of the
   extensions optional.  The server must respond to the original whois
   client, currently included with many operating systems.  The RWhois
   client must also interact with RFC 954 [RFC-954] whois servers.

   RWhois has been designed as an extensible protocol to ensure that
   many uses can be accommodated.  Public extensions to the protocol
   should be documented as RFCs.  Private extensions can be used with
   agreement left up to the client and server.

   If extensions are not implemented at the server in question, an
   appropriate error message must be sent.  The use of extended error
   message is outlined in Section 5 - Error Codes.

   Throughout this document the following notations will be used to
   describe the RWhois server/client interaction:

     <SP>      space
     [arg]     optional argument
     <arg>     required argument
     (<arg>)   conditional required argument
     ([arg])   conditional optional argument
     {format}  format of item
     \         continued on next line

   The words should and must are significant in this document.  If
   should is used, the implementor has the option to follow the advice
   of this document.  If must is used then it is a required part of the
   protocol.  Implementations without this functionality may not



Williamson & Kosters                                            [Page 4]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


   interact correctly with other RWhois servers.

   The format descriptions throughout this document use macro
   definitions described in Section 6.1.  Refer to that section for
   clarification.

   The RWhois protocol specified in this document can be extended to
   accommodate such applications as NetHelp and ZoneGen (DNS zone
   generator).

2.  RWhois Client Model

   The RWhois design requires compatibility with the current Whois and
   Whois++ servers.  Therefore, the RWhois client must wait or have
   knowledge of server type to determine if the server contacted is an
   RWhois server.  The user should have control over the time the client
   waits, since this will vary based on network congestion and capacity.
   If after the wait the server does not respond with the %RWhois
   response, the client must not send any RWhois extended directives.

   In this case, the client should only send the query.  We realize that
   the server identification feature may mean that the identity of an
   RWhois server may be missed.  However, it will allow the RWhois
   system to utilize the current Whois and Whois++ infrastructure.
   Referrals from RWhois can be directed toward a Whois or Whois++
   server.  These non-RWhois servers must be placed as a leaf on the
   hierarchical tree.  These servers represent a mesh structure from the
   RWhois perspective.  This restriction should not discourage the use
   of these servers in building the RWhois structure.

   The RWhois server must remain connected until a query is received.
   If the client wishes to make multiple queries it must send the
   -holdconnect directive.  In this mode, once the client has sent the
   last query and received either an answer or the error code indicating
   that no records were found, it must issue the -quit directive.  If
   the client only wishes to issue directives, then upon completion the
   -quit directive must be sent.  If it is not sent, the server will
   wait until it receives non-directive input from the client.

   Considering the requirement for compatibility with the original
   whois, the RWhois client in default mode must operate exactly like
   the current Whois client.  However, in the enhanced mode, the RWhois
   client can do much more based on information received from the RWhois
   server.







Williamson & Kosters                                            [Page 5]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


2.1  Directives:  Client to Server Interaction

   The RWhois client sends directives to the RWhois server. These
   directives are prefaced with the `-' character always at the start of
   a new line.  However, for compatibility with older Whois clients, the
   query is not prefaced with the `-' character. Only after the client
   is certain that the server is an RWhois server should these
   directives be sent.  Compatibility with RFC 954 [RFC-954] whois
   servers is required.  All directives must be terminated by <LF><CR>.

2.2  Required Directives

   The following are required RWhois client directives.

2.2.1 <query>

   The query is generally the final directive sent to the server.  It is
   the only directive that does not start with a `-'.  The query is the
   question that the client wants the server to answer.  The qualifiers
   that may proceed the query are addressed in Section 3.1 - Output
   Display and Restriction Keywords.

   Format for use:

   [display format]<SP>[query restriction]<SP><query>

   [Display format]{%s}     This optional pre-query directive allows
                            the requester to select the format of
                            the returned data.  Details of the
                            allowable values can be found in Section
                            3.1.

   [Query restriction]{%s}  This optional pre-query directive allows
                            the requester to limit the area in which
                            the servers search for a specific
                            object.

   Example of use:

   dump domain netsol.com











Williamson & Kosters                                            [Page 6]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


2.2.2 RWhois

   The -RWhois directive identifies the client as an RWhois client
   allowing the server to operate using the RWhois protocol exclusively.

   Format for use:

   -RWhois<SP>V-<spec version #><SP>[imp identifier]

   <Spec version #>{%2d.%2d}     This required argument identifies
                                 the specification version that the
                                 client is built to conform with.
                                 Clients that are built in
                                 accordance with this document are
                                 V-1.0.  This argument will be used
                                 by the server to determine if
                                 features introduced in subsequent
                                 releases of the protocol document
                                 may be used.

   [Imp identifier]{%s}  This optional argument identifies client
                         implementation information.  It is
                         recommended that the implementor maintain a
                         version number separate from the
                         specification version.

   Example of use:

   -RWhois V-1.0 [InterNIC B.0.9.7]

2.3  Optional Directives

   The following are OPTIONAL RWhois server directives.

2.3.1 load

   The -load directive allows the client to make a quick decision about
   presenting the query to the current server.  If the client determines
   that another server can better serve the query, then control may be
   transferred to the server with the lower load and better connection.
   This directive has no arguments.

2.3.2 limit

   The -limit directive will allow the client to request the server
   allocate enough space to collect more responses than would currently
   be collected by the server.




Williamson & Kosters                                            [Page 7]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


   Format for use:

   -limit<SP><value>

   <Value>{%d}  This required argument is the new limit requested by
                the client.  If the limit exceeds the limit set by
                the server administrator, the client must receive an
                error message.  It is recommended that if the client
                receives an error for exceeding the servers upper
                limit, it should cut the request in half and resend
                the request until an acceptable level has been
                negotiated.

   Example of use:

   -limit 2000

2.3.3 schema

   One of the shortcomings of X.500 was the requirement to know the
   schema of an object before making a query.  RWhois allows the client
   to request the schema for an object without knowledge of the object
   by using the -schema directive.

   Format for use:

   -schema<SP>[object]

   [object]{%s}   This optional argument identifies the objects for
                  which the schema is being requested.  If this
                  argument is not sent, the schemas for all objects
                  contained in the server will be sent.

   Example of use:

   -schema domain

2.3.4 xfer

   The -xfer directive is used to transfer all data from a server.  This
   method of transfer has no limit on the number of records that can be
   transferred to the client application.  This directive is primarily
   used to transfer data contained in an authority area for caching at a
   secondary server.

   Format for use:

   -xfer<SP>[object]<SP>[authority area]<SP>[SOA]



Williamson & Kosters                                            [Page 8]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


   [Object]{All|%s}       This required argument identifies the
                          object to transfer.  If the keyword all
                          is sent, all objects contained in the
                          server will be transferred.  Otherwise,
                          only the object specified will be sent.

   [Authority area]{%s}   This optional argument contains the
                          authority area of the object to send
                          further limiting the data transfer.

   [SOA]{%d}              This optional argument notifies the server
                          to send everything that has been updated
                          since this SOA number.

   Example of use:

   -xfer domain netsol.com
   -xfer domain netsol.com 19940818141259

2.3.5 quit

   The -quit directive will inform the server that the client is
   finished.  The server and client should close the connection.  This
   directive has no arguments.

2.3.6 status

   The -status directive is used to poll the server for its status.
   There are seven required responses to this directive.  Additional
   attributes may be sent in the response.  The client should ignore all
   unknown attributes.  This directive has no arguments.

2.3.7 cache

   The RWhois server can hold data that it has no authority over.  If
   the server sends this data to a requester, it is considered a non-
   authoritative response.  The holding of this data is called caching.
   The physical data for these objects is not contained on the system
   hosting the server.  The -cache directive allows the client to
   instruct the server whether or not to send cached data.  The RWhois
   client should start with the cache turned off.  The server must start
   with the cache turned on in order to function like the RFC 954 [RFC-
   954] whois server.  Because of the server's default, the client
   should send the -cache off directive during initial session setup if
   cached data should not be sent.  Details on expiration of cache data
   can be found in section 3.4.3, %soa response.





Williamson & Kosters                                            [Page 9]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


   Format for use:

   -cache<SP><mode>

   <mode>{on|off}
   on:  Turns caching on.
   off: Turns caching off.

   Example of use:
   -cache on

2.3.8 holdconnect

   The RWhois server must close the connection after the response to a
   query has been received.  The query is the final exchange between the
   client and server. However, this characteristic can be modified with
   the -holdconnect directive.  If this directive is issued to the
   RWhois sever, it will remain connected until the -quit directive is
   received.  Once the -quit directive is received, both the server and
   the client must close their connection.

   Format for use:

   -holdconnect<SP><mode>

   <mode>{on|off}
   On:  Turns holdconnect on.
   Off: Turns holdconnect off.

   Example of use:

   -holdconnect on

2.3.9 forward

   During normal sever operation the server will send %referral or
   see-also responses to the client, expecting the client to redirect
   the query to the server identified in the response.  If the client is
   located behind a firewall or is poorly connected, having a server
   make the query may improve query performance or allow a query to be
   satisfied.  The -forward directive will instruct the server to
   operate as a forwarding server.  Whether or not this directive should
   be allowed should be a configuration parameter of the server.








Williamson & Kosters                                           [Page 10]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


   Format for use:

   -forward<SP><mode>

   <mode>{on|off}
   On:  Turns forwarding on.
   Off: Turns forwarding off.

   Example of use:

   -forward on

2.3.10 soa

   The identification of authority area is an important part of the
   RWhois design.  The -soa directive is used to question the server's
   authority for a specific area.  A positive response will include the
   administrative parameters for the authority area as detailed in
   section 3.4.3.  If the server does not contain an SOA for the
   authority area requested, it must send an error message to the
   client.

   Format for use:

   -soa<SP>[authority area]

   [Authority area]{%s}   This optional argument identifies the
                          authority area being requested.  If this
                          argument is not sent, information about
                          all authority areas contained in the
                          server must be sent.

   Example of use:

   -soa netsol.com

2.3.11 notify

   The -notify directive is used to notify a server of a bad or
   recursive referral or a change in a primary server's data.

   Format for use:

   -notify<SP><action><SP><information>

   <action>{badref|recurref|update|inssec|delsec}





Williamson & Kosters                                           [Page 11]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


   badref    When a client receives a %referral response that does
             not work, it must report the bad referral to the server
             that issued the referral.  The referral is bad only if
             the referred server does not contain the SOA record for
             the authority area in question. It is not considered a
             bad referral if the server does not have an answer to
             the query, but responds positively to the -soa area
             directive.  This merely means that there is not an
             answer to the query.  When a -badref is sent to the
             referring server; it should log the bad referral so the
             administrator of that server can remove the reference
             if it is no longer correct.  This action should only be
             taken after receiving a negative response to the query
             and the SOA request.

   recurref  When a client receives a referral that results in a
             recursive action, the referring server must be
             informed.  The -recurref directive must be sent
             identifying the recursive loop.  This directive should
             only be sent to the server one level back, even if
             multiple server were involved in the referral.

   update    An RWhois primary server must be aware of its
             secondary servers.  If the data in the primary server
             changes, the primary server may choose to notify the
             secondary servers.  This allows the secondary servers
             to quickly reflect changes in the primary server's data.

   inssec    This action will inform the authority server that the
             server indicated in the argument will be a secondary
             for its authority area.  The server receiving this
             directive must determine if the secondary is
             acceptable.  If it is, the server should be added to
             the update list so that it will be informed if data in
             the authority area changes.

   delsec    This action will inform the server that the server
             indicated in the subsequent arguments will no longer be
             a secondary.  The server receiving this action must
             determine if the server is a secondary and if so,
             remove it from the update list.

   <information>{action=badref|recurref <<server>:<query>>
                action=inssec|delsec|update
                <<server>:<object>:<authority>>}






Williamson & Kosters                                           [Page 12]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


   <server>{%Mserver}  This required argument identifies the server
                       that contained the recursive or bad referral,
                       or has data that changed.

   <query>{%s}         This required argument identifies the query
                       that was sent to the server that gave a
                       recursive or bad referral.

   <object>{%s}        This required argument identifies the object
                       that changed.

   <authority>{%s}     This required argument identifies the
                       authority area where the object that changed
                       currently resides.

   Example of use:

   -notify recurref netman1.netsol.com:4343:scottw@netsol.com
   -notify badref nic.ddn.mil:43:abc.af.mil
   -notify update netman1.netsol.com:4343:domain:netsol.com
   -notify inssec dmeister.internic.net:4343:domain:netsol.com
   -notify delsec dmeister.internic.net:4343:domain:netsol.com

2.3.12 register

   This directive allows the client to add, modify, or delete
   information that exists or should exist in the server's database.
   During the exchange, all attributes of an object must be sent.  The
   client must wait to send the registration data until the %ok response
   is received from the server.

   Format for use:

   -register<SP><mode><SP>(on:<action><SP><e-mail contact>
          <SP><authority info>)

   <mode>{on|off}
   on:                 This required argument starts the
                       registration process.

   off:                This required argument ends the registration
                       process.

   The following arguments are only required if the mode argument is
   sent with the value on:

   (<action>){add|mod|del}




Williamson & Kosters                                           [Page 13]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


   add:                This conditionally required argument
                       indicates that the object being sent should
                       be added to the server's database.

   mod:                This conditionally required argument
                       indicates that the object being sent should
                       be modified and should already exist in the
                       server's database.

   del:                This conditionally required argument
                       indicates that the object being sent should
                       be deleted from the server's database.

   (<e-mail contact>){%Memail}   This conditionally required
                                 argument identifies the sender of
                                 the registration information.

   (<authority info>){%s}        This required argument contains
                                 information used to authenticate
                                 the person sending the registration
                                 information.  The method used must
                                 be identified using the -private
                                 directive.  Work must be done to
                                 identify usable authentication
                                 methods for unsupervised
                                 delegation.  This is beyond the
                                 scope of this document.  However,
                                 the authors have made an effort to
                                 allow flexibility in the
                                 implementation of an authentication
                                 system.

   Example of use:

   -register on add scottw@netsol.com
   Object-type:referral
   Referral:netman1.netsol.com:4343
   Domain-Name:netsol.com
   IP-Network:192.153.247.0
   IP-Network:198.41.0.0
   -register off

2.3.13 object

   RWhois data is a collection of objects with defined attributes.  The
   attributes for an object can be acquired by issuing the -schema
   directive.  Each object must at a minimum define the attribute
   object-type.  This attribute identifies the name of the object that



Williamson & Kosters                                           [Page 14]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


   will be displayed in response to the -object directive.  This
   directive can be used by a client to verify that a server contains
   the desired object.  Another possible use may be to gather all of the
   objects contained on a server and display them to the user in the
   form of a menu for selection.

   Format for use:

   -object<SP>[object]

   [object]{%s}   This optional argument identifies the object
                  requested.  If no argument is sent, all objects
                  contained in the server will be returned.

   Example of use:

   -object domain

2.3.14 define

   Format strings describing the format of an object's attribute may
   include format macros.  More information about definitions of format
   macros can be found in Section 6.  The -define directive allows the
   client to request the definition of a format macro.

   Format for use:

   -define<SP>[macro name]

   [macro name]{%s}    This optional argument identifies the name of
                       the macro to display.  If no arguments are
                       sent, the server must return the definition
                       of all macros contained in the server.

   Example of use:

   -define server

2.3.15 private

   The -private directive allows the client to identify the
   authentication method to be used.  More research needs to be done
   with respect to client authentication.  This directive will allow
   more experimentation.







Williamson & Kosters                                           [Page 15]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


   Format for use:

   -private<SP><action><SP><method><SP>[data]

   <action>{auth|encr} This required argument identifies the action
                       the directive is taking.  Currently the value
                       for this argument can be auth for
                       authentication or encr for encryption.

   <method>{%s}        This required argument contains the name of
                       the method to be used.  The value must be
                       recognized by the server or an error will be
                       sent.  It is beyond the scope of this
                       document to identify the possible method to
                       be used.

   [data]{%s}          This optional argument must be supplied if
                       required by the method identified in the
                       previous argument.

   Example of use:

   -private auth pass1 xxjdk998uu

   The above example is a simple password exchange.  It is beyond the
   scope of this document to determine the authentication technique that
   would best suit this protocol.  Development is underway to determine
   the authentication needs and to experiment with potential solutions.

2.3.16 X-

   This directive is the preface to extended directives, mutually agreed
   to between the client and server.  The client and server must have
   knowledge of the extended directives to use.  Extension can
   accommodate other uses such as NetHelp, white pages, and many others.
   If the extensions are public, they should be documented in an RFC and
   available through the -directive directive.














Williamson & Kosters                                           [Page 16]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


   Format for use:

   -X-<directive name><SP>[directive arguments]

   <directive name>{%s}     This required argument identifies the
                            name of the directive being issued.

   [directive arguments]{?} This optional argument is dependent upon
                            the required or optional arguments of
                            the extended directive.  There may be
                            multiple directive arguments.

   Example of use:

   -X-date

2.3.17 directive

   Directives allowed by a server may vary.  The client can issue the
   -directive directive to determine if the server allows a specific
   directive or to obtain a list of all acceptable directives for that
   server.

   Format for use:

   -directive<SP>[directive]

   [directive][%s]   This optional argument identifies the directive
                     being requested.  If no arguments are sent, all
                     of the directives accepted by the server must
                     be sent.

   Example of use:

   -directive X-date

2.3.18 display

   The -display directive is used to set the display mode of the server
   or to identify display modes the client is capable of.  If this
   directive is sent without arguments, the server will return all
   available display methods.









Williamson & Kosters                                           [Page 17]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


   Format for use:

   -display<SP>[action]<SP>[method]

   [action]{activate|capable}
                       The `activate' setting enables a certain
                       display mode, while a `capable' setting sends
                       the display mode the client is capable of.

   [method]{%s}        This optional argument indicates the display
                       method desired by the client.

   Example of use:

   -display swip
   -display mime

2.3.19 language

   The -language directive is used to set the language mode of the
   server or to identify language modes the client is capable of.  If
   this directive is sent without arguments, the server will return all
   available languages.

   Format for use:

   -language<SP>[language]

   [language]{%s}      This optional argument indicates the language
                       desired by the client.

   Example of use:

   -language german

2.4  RWhois Client Model

   Server <-------> Client

   START:
   <------ Connection (record time to connect)
           If no server type...Wait up to specified
            time for------> "%RWhois" response
            (recommend wait of at least 5 seconds)

   if  "%RWhois" is not received from server, assume that it is
    not an RWhois server
       goto QUERY:



Williamson & Kosters                                           [Page 18]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


   else if "%RWhois" is received from server
       <------- send "-RWhois -VX.X"
       --------> receive "%ok"
       DIRECTIVE: if directive for server
                  <------- send directive
                  -------> receive server response
                  if "%ok" received
                    goto DIRECTIVE:
                  if "%error" received
                    process error then goto DIRECTIVE:
                else if no more commands for server
                   goto QUERY:
   QUERY:
       <-------- send query
       --------> Receive and display response
       PROCESS: if "%referral" received
                   if first referral
                      restart server list
                   else
                      add to server list
               if "%see-also" received
                   insert server into server list
               if in holdconnection mode
                   goto DIRECTIVE:
               if no directive (%)
                   goto END:
               goto PROCESS:
   END:
   server will disconnect
   if more servers on Queue and multi or referral mode active
       goto START:

   Every time the RWhois client receives a %referral or %see-also
   response from the RWhois server it must compare the host:port:query
   with those already executed.  If the client discovers that it is
   being directed to repeat the same query to a server that it has
   already visited, it must not repeat that query.  As an example, the
   prototype RWhois client maintains a server trail and compares each
   new directive with the entire list.  If a recursive act is about to
   occur, the client will notify the user and exit.  The original Whois
   client opens a TCP connection, sends the query, and displays the
   response.  The RWhois client must be more robust in order to handle
   multiple server queries, servers that do not exist, and recursive
   referrals.  The client must also remain connected while sending
   directives and receiving responses.  All of these features have been
   incorporated into the experimental RWhois client.





Williamson & Kosters                                           [Page 19]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


3.  RWhois Server Model

   This section describes the functionality of the RWhois server.

3.1  Output Display and Restriction Keywords

   The RWhois server will behave similarly to the original whois server
   in terms of display formats and restrictions.  The following are
   required in the RWhois server.

   Display Format Keywords

   EXPand (*)          Expand

   ~                   no sub displays

   SUBdisplay (%)      sub displays

   SUMmary ($)         Give a short summary for the query on one to
                       many hits (defaults on multiple hits).

   Full (=)            Give the full record output on one to many
                       hits (defaults on one hit only).

   The following was added to whois post RFC 954 [RFC-954] and is part
   of the RWhois requirements:

   dump (#)            Display the record in a parsable format.

   In addition to the above, the RWhois server must accept additional
   pre-query directives such as Boolean queries and attribute=value
   query combinations.  The capability to perform partial matches are
   requested by post fixing a `*' or `.' at the end of the search item
   for unknown characters.  This capability is required for an RWhois
   server.

      Example: last-name=williamson and first-name=scott

      Data Restriction Format Keywords












Williamson & Kosters                                           [Page 20]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


      The following restriction keywords are found in the RFC 954
      [RFC-954] whois server:

   !(handle) Query on Handle only
   mailbox   Query on all records for person
   person    Query on User records only
   host      Query on Host records only
   domain    Query on Domain records only
   network   Query on Network Records only
   asn       Query on Autonomous System Numbers only

   The RWhois server must allow restriction of search to any object
   contained on that server.  With the exception of the `!' restriction
   format keyword, the above listed restriction keywords represent
   defined objects.  In the prototype software, each of these objects
   are defined in configuration files, not hard-coded into the server.
   New objects, and therefore restriction keywords, should be easily
   designed with no code change necessary to the server.

3.2  Responses:  Server to Client Interaction

   Responses are sets of data that servers send in response to a client
   directive.  Responses from an RWhois server must be prefaced with the
   `%' character at the start of a line.  Responses are divided into two
   groups:  those that are required to provide minimal RWhois
   interaction and those that are used to achieve the desired
   characteristics of a fully functional distributed system.  A server
   must respond with an error message indicating that a directive is not
   available on the server and therefore does not have the required
   responses.





















Williamson & Kosters                                           [Page 21]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


3.3  Required Responses

   The following sections describe the required RWhois server responses.

3.3.1 RWhois

   The %RWhois response is used to identify a server as an RWhois
   server.  Clients that treat RWhois servers differently will need this
   response to enable the RWhois capabilities.

   Format for use:

   RWhois<SP>V-<Spec version #><SP><server name><SP>[imp name and
   version #]

   <Spec version #>[V-%2.2f]     This required response indicates
                                 the version number of the RWhois
                                 protocol specification that the
                                 software is capable of handling.
                                 The version described in this
                                 document is V-1.0.

   <server name>[%s]             This required response is the host
                                 name of the computer hosting the
                                 RWhois server.

   [imp name and version #][%s]  This optional argument contains
                                 information about the server
                                 implementation.  It is recommended
                                 that the version number of the
                                 software be indicated.  This
                                 version may differ from the
                                 specification version number.

   Example of use:

   %RWhois V-1.0 rs.internic.net (Network Solutions V-1.6)

3.3.2 referral

   The %referral response instructs the client to query another server
   (which could be a whois, RWhois, or whois++ server).  Referrals are
   cumulative.  The first referral received during a session must
   replace the default server list.  Any subsequent referrals received
   must be appended to the end of the server list.






Williamson & Kosters                                           [Page 22]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


   In the non-Uniform Resource Location (URL) response format below, the
   authority area equals the reduced query.  There are three types of
   referral.  The type can be determined by the client evaluating the
   authority area which is part of the %referral response.

   If the authority area received from a referral response is equal to
   the original query, then it is a link type referral.  If the
   authority area is not equal to the query, then it is a reduction type
   referral.  If no authority area is sent, then it is a punt type
   referral. (Punt means the server is not a root and cannot answer the
   query and therefore is referring the client to a level up the tree or
   to a server that can better answer the query.) [NOTE:  the punt type
   referral may be used to direct a client into the whois++ mesh type.]

   The client may receive multiple referrals from a single query.  If
   the SOA for each of these referrals is the same, then the first
   referral is the primary server and all subsequent servers are
   secondary.  Each of the servers will report the SOA for the authority
   area in question.

   Format for use:

   %referral<SP><server>[:type]<SP>[authority area]
   %referral<SP>url:<url>

   <server>{%Mserver}    This required argument identifies the
                         server that the client should re-connect
                         with.

   [type]{%Mstype}       This optional argument identifies the
                         server type.  This could save wait time for
                         the client trying to identify a server
                         which is non-RWhois.

   <authority area>{%s}  This optional argument identifies the
                         authority area that caused the referral for
                         the query in question.  Using this value as
                         the argument for the -soa directive to
                         the referral server should result in a
                         positive response.  If this is not the
                         case, the referral is considered bad.

   <url>{%Murl}          This required argument defines the Uniform
                         Resource Location (URL) string that points
                         to the resource containing the information
                         desired.





Williamson & Kosters                                           [Page 23]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


   Example of use:

   %referral nic.ddn.mil:43 .mil
   %referral url:http://www.netsol.com/

3.3.3 ok

   The %ok response must be sent by the RWhois server at the completion
   of every task or to positively acknowledge a directive.

   Format for use:

   %ok

3.3.4 error

   The %error response is used to indicate an error condition to the
   client.  Refer to Section 5 for details on the error reporting
   scheme.  It is important to note that only the error number will be
   used to determine the client's action.  The text message will only be
   used to make the error readable by humans connected using telnet or
   an old whois client.  The only exception to this rule is the error
   message used to indicate problems with registration transactions.
   The format for these message can be found in Section 5.

   Format for use:

   %error<SP><error number><SP>[error text]

   <error number>{%d}  This required argument is the error number
                       identified in Section 5.  The client can use
                       this number to categorize errors.

   [error text]{%s}    This optional argument is the text that
                       describes the error message.  This message
                       must be consistent for each error.  Variables
                       should not be added to this message.  This
                       message is only to make the error message
                       human readable.  Message sent following an
                       error code associated with the registration
                       process will contain the line number of the
                       attribute that is incorrect.









Williamson & Kosters                                           [Page 24]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


   Example of use:

   %error<SP>400<SP>Invalid Server Directive

3.4  Optional Responses

   The following are optional RWhois server responses.

3.4.1 see-also

   The %see-also response instructs the client to contact another server
   for additional information about the current query.  See-also servers
   should be inserted into the server list just after the current
   server.  If multiple see-alsos are received from a single query, each
   subsequent see-also should be inserted after any other see-alsos
   previously received.  See-alsos should be additional information
   related to the current query.

   One example use for the see-also response is to display autonomous
   system information relating to an IP network number or router
   interface information relating to an IP host number.

   Format for use:

   %see-also<SP><server>[:type]:<query>
   %see-also<SP>url:<url>

   <server>{%Mserver}  This required argument identifies the server
                       the client should reconnect with.

   [type]{%Mstype]     This optional argument identifies the server
                       type.  This could save wait time for the
                       client trying to identify a server which is
                       non-RWhois.

   <query>{%s}         This required argument sets the query that
                       must be sent to the referred server.  The
                       query may be different from the original
                       query sent to the referring server.

   <url>{%Murl}        This required argument defines the Uniform
                       Resource Location (URL) string that points to
                       the resource containing the information
                       desired.







Williamson & Kosters                                           [Page 25]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


   Example of use:

   %see-also prmd.merit.edu:43:handle=xxx
   %see-also url:http://www.netsol.com/

3.4.2 load

   The %load response returns the current and average load of the
   computer hosting the RWhois server.  We realize that the measurement
   may be different depending on the implication of the system's load
   mechanism.  This directive/response was implemented to allow
   experiments with sorting preferred servers to deliver better results
   to the user.

   Format for use:

   %load <SP><current><SP><average>

   <current>{%2.2f}  This required argument delivers the current
                     load on the system hosting the RWhois server.

   <average>{%2.2f}  This required argument delivers the average
                     load on the system hosting the RWhois server.

   Example of use:

   %load 5.68 1.32

3.4.3 soa

   The %soa response delivers information about the authority area in
   question.  If the server does not contain the authority for the area
   in question, it must respond with the appropriate error message.  The
   SOA data must never be cached.  SOA records must originate on the
   server giving the answer.  The increment and refresh attributes are
   used to provide for incremental updates of the secondary server.
   Deleted data will remain in the secondary server's cache until the
   refresh time has been reached.  This will reduce the amount of data
   transferred and not require the primary server to retain deleted
   data.  The following are the minimum attributes required for the soa
   object:

      object-type
      authority
      ttl
      serial
      refresh
      increment



Williamson & Kosters                                           [Page 26]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


      retry
      tech-contact
      admin-contact
      hostmaster
      primary

   Format for use:

   %soa<SP>authority:<SP><authority area>
   %soa<SP>ttl:<SP><ttl>
   %soa<SP>serial:<SP><serial>
   %soa<SP>refresh:<SP><refresh>
   %soa<SP>increment:<SP><incremental>
   %soa<SP>retry:<SP><retry>
   %soa<SP>tech-contact:<SP><tech-contact>
   %soa<SP>admin-contact:<SP><admin-contact>
   %soa<SP>hostmaster:<SP><hostmaster>
   %soa<SP>primary:<SP><primary>

   <authority area>{%s}  The authority name of the SOA. (Example:
                         internic.net or 198.41.0.0/24)

   <ttl>{%d}           The time to live for data within this
                       authority area that another server may cache.
                       The server caching the data should consider
                       the data expired after storage for the number
                       of seconds identified by this attribute.

   <serial>{%Mserial}  Serial number of the data contained in the
                       authority area.  The serial number must be
                       incremented every time data in the authority
                       area has changed.  It must be numeric.

   <refresh>{%d}       The time to completely remove cached data and
                       transfer all data from the primary server.

   <increment>{%d}     The time to wait before checking for
                       incremental updates from a primary server.

   <retry>{%d}         The time to wait before retrying connection
                       to a server that appears to be out-of-service.

   <tech-contact>{%Memail}  E-mail address of the person or role
                            account responsible for the operation of
                            the server.






Williamson & Kosters                                           [Page 27]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


   <admin-contact>{%Memail} E-mail address of the person or role
                            account responsible for the data
                            contained on the server.

   <hostmaster>{%Memail}    E-mail address to which changes of the
                            server's data should be sent.  A data
                            edit tool can automatically send changes
                            to update the data on the server via e-mail.

   <primary>{%Mperm}        Primary server for authority area.

   Example of use:

   %soa authority: netsol.com
   %soa ttl: 7200
   %soa serial: 19940606203030
   %soa refresh: 7200
   %soa increment: 60
   %soa retry: 1200
   %soa tech-contact: markk@netsol.com
   %soa admin-contact: stanb@netsol.com
   %soa hostmaster: hostmaster@netsol.com
   %soa primary: netman1.netsol.com:4343
   %ok

3.4.4 status

   The %status response returns the status of several important flags or
   values.  The response must contain the following elements.

   Limit:         Current limit set on the server.  This value may
                  be changed using the -limit directive.  This is
                  not the maximum limit of the server.  This value
                  is not disclosed to prevent clients from
                  automatically setting the highest limit possible,
                  causing degradation in performance of the server.

   Load:          This is the current load of the host system.

   Cache:         Current status of the cache flag. (on or off)

   Holdconnect:   Current status of the holdconnect flag. (on or
                  off)

   Forward:       Current status of the forward flag. (on or off)

   Authority records:  Number of authority records in server's
                       database.



Williamson & Kosters                                           [Page 28]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


   Cached records:     Number of records in the server's cache
                       database.

   Display:            Indicates the types of display modes the
                       server is using.

   Format for use:

   %status<SP>limit:<SP><current limit>
   %status<SP>load:<SP><current load>
   %status<SP>cache:<SP><cache>
   %status<SP>holdconnect:<SP><holdconnect>
   %status<SP>forward:<SP><forward>
   %status<SP>Authority:<SP><SOA number>
   %status<SP>Cached:<SP><cached number>
   %status<SP>Display<SP><mode>:<SP><type>

   See above for the description of these values.

   <current limit>{%d}
   <current load>{%2.2f}
   <cache>{on|off}
   <holdconnect>{on|off}
   <forward>{on|off}
   <SOA number>{%d}
   <cached number>{%d}
   <mode>{single|multi}
   <type>{%s}

   Example of use:
   %status limit: 1500
   %status load: 1.23
   %status cache: off
   %status holdconnect: on
   %status forward: off
   %status Authority:25
   %status Cached:200
   %status display multi: summary

3.4.5 xfer

   The %xfer response will send all instances of an object.  This is in
   response to the -xfer directive.  The transfer may be limited by the
   arguments to the directive.  If there are no arguments, the server
   must send all of the objects in the database.  Cached data must not
   be transferred using this method unless caching is turned on.





Williamson & Kosters                                           [Page 29]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


   Each object instance is sent with a blank %xfer response between
   instances.

   Format for use:

   %xfer<SP>[<object>:<attribute>:<value>]

   These arguments are not required if the current response is an object
   instance separator.

   <object>{%s}     This required argument represents the name of
                    the object being transferred.

   <attribute>{%s}  This required argument identifies the attribute
                    being sent.

   <value>{%s}      This required argument contains the value of the
                    attribute.  If blank, the attribute value is
                    blank.

   Example of use:

   %xfer user:last-name:Kosters
   %xfer user:first-name:Mark
   %xfer user:organization-phone:703-555-1212
   %xfer
   %xfer user:last-name:Williamson
   %xfer user:first-name:Scott
   %xfer user:organization-phone:703-555-1212
   %xfer

3.4.6 schema

   The %schema response is used to describe the attributes of an object.
   This is in response to the -schema directive.

   Each attribute is sent with a blank %schema as a separator.

   Format for use:

   %schema<SP><object>:attribute:<attribute name>
   %schema<SP><object>:format:<format string>
   %schema<SP><object>:description:<descriptive string>
   %schema<SP><object>:indexed:<indexed>
   %schema<SP><object>:required:<required>
   %schema<SP><object>:multi-line:<multi-line>
   %schema<SP><object>:type:<type>
   %schema<SP><object>:primary:<primary>



Williamson & Kosters                                           [Page 30]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


   %schema

   These arguments are not required if the current response is an
   attribute separator.

   <attribute name>{%s}     This required argument identifies the
                            name of the attribute being described.

   <format string>{%s}      This required argument describes the
                            allowed format for the attribute.

   <descriptive string>{%s} This required argument describes the
                            attribute's use.

   <indexed>{on|off}        This required argument identifies
                            attributes that are indexed.

   <required>{on|off}       This required argument identifies
                            attributes that are required.

   <multi-line>{on|off}     This required argument indicates whether
                            the attribute can span multiple lines.

   <type>{text|MIME|see-also|PostScript}
                            This required argument identifies the
                            type of the attribute.

   <unique-key>{on|off}     This required argument indicates whether
                            the attribute is a unique key.

   Example of use:

   %schema user:attribute:Object-Type
   %schema user:description:Name of the object
   %schema
   %schema user:attribute:Email
   %schema user:format:[%Memail]
   %schema user:description:RFC-822 compliant Email address
   %schema
   %schema user:attribute:Organization-Phone
   %schema user:format:[%3d[0-999]-%3d[0-999]-%4d[0-9999]]
   %schema user:description:Work phone number
   %schema








Williamson & Kosters                                           [Page 31]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


3.4.7 define

   The %define response describes format macros to the client.  All
   format macros used in the schema format definition string must be
   available to the client through the -define directive.  Format macros
   may be nested.  It is the client's responsibility to request all
   format strings that are unrecognized from a server.  If the format
   strings change on a server, the serial number of the schemas that use
   the format must change.

   Format for use:

   %define<SP><macro name>:<[format string]>

   [NOTE:  The brackets around the format string are required to ensure
   that spaces contained in the format string are interpreted correctly
   by the client.]

   Example of use:

   %format server:[%s:%16Bd]
   %format email:[%s@%s]

3.4.8 object

   All visible objects on an RWhois server must be identified in
   response to a -object directive.  The %object response either
   confirms the existence of an object or returns a complete list of all
   objects available to the currently connected user.

   A blank %object line serves as an object separator.

   Format for use:

   %object
   %object<SP><object name>:description:<object description>
   %object<SP><object name>:restrict:<restriction words>

   <object name>{%s}        This required argument is the name of
                            the object.

   <object description>{%s} This required argument is a description
                            of the object identified.

   <restriction words>{%s}  This required argument is a list of
                            words used to restrict a search to this
                            object.




Williamson & Kosters                                           [Page 32]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


   Example of use:

   %object user:description:user records for entity POC
   %object user:restrict:user
   %object user:restrict:person
   %object user:restrict:mailbox

3.4.9 directive

   The %directive response is used to display directives allowed on the
   connected server.  The directive name, description and syntax
   attributes must be sent for each directive.  If information about a
   single directive is requested then only information about that
   directive must be returned.

   A %directive response with no arguments must be sent between
   directives.

   Format for use:

   %directive<SP>directive:<directive>
   %directive<SP>description:<description>
   %directive<SP>syntax:<format>
   %directive

   The arguments below are required except when separating directives.

   <directive>{%s}     This required argument indicates the name of
                       the directive.

   <description>{%s}   This required argument describes the
                       directive.

   <format>{%s}        This required argument defines the format of
                       the directive.

   Example of use:

   %directive directive:schema
   %directive description:displays schema attributes
   %directive syntax:schema<SP>[%s]
   %directive
   %directive directive:xfer
   %directive description:transfer all object[authority area]
   %directive syntax:xfer<SP>[%s]<SP>[%s]






Williamson & Kosters                                           [Page 33]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


3.4.10 info

   The %info response is used to give the user of the client a message.
   This response is not initiated by any directive.  The information
   between the %info on and the %info off should be presented to the
   user of the client.  An ideal use of this response is to present a
   Message of The Day (MOTD) to the user.

   Format for use:

   %info<SP><mode>

   <mode>{on|off}

     on:  Turns the passthru mode on.
     off: Turns the passthru mode off.

   Example of use:

   %info on
   As of 3/24/1994 at 9:00 EST this server will no longer be in
   service. If you have this server in your configuration file we
   recommend that you change it to rs.internic.net:4343. You will
   automatically be redirected there following this message.
   %info off

3.4.11 display

   The %display response is used to inform the client that the data
   following this response is using the indicated method.  The method
   selected will continue to be active until a %display response is sent
   without any arguments.  The server must send an error message to
   clients that have been identified as non-RWhois clients.  This
   response allows the use of display methods such as MIME [RFC 1521] or
   other special character sets such as those used in the Japanese
   language.

   Format for use:

   %display<SP>extended:<extended>

   %display<SP>name:<name>
   %display<SP>length:<length>
   %display<SP>description:<description>
   %display<SP>command-line-option:<mode>

   <extended>     This optional argument identifies if the display
                  method is extended, i.e., RWhois specific.



Williamson & Kosters                                           [Page 34]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


   Example of use:

   %display extended:mime
   MIME-Version:1.0
   Content-type: image/gif
   Content-Transfer-Encoding: base64
   ...data...
   %display

3.4.12 X-

   The %X- response represents extended responses.  The client must have
   prior knowledge of this response.

   Format for use:

   %X-<response><SP>[arguments]

   <response>{%s} This required argument contains the response name.

   Example of use:

   %X-extstatus numusers:500
   %X-extstatus avalslots:200

   [NOTE:  The above examples are not implemented in the current
   RWhois prototype software.  They are only examples of the %X-
   response to a -X- directive.  X6X error codes are used when
   problems are encountered in relation to the -X- directives
   contained on the server.  Details can be found in Section 5.]

3.4.13 language

   The %language response is used to inform the client that the data
   following this response will be sent in the indicated language.  The
   language selected will continue to be active until a %language
   response is sent without any arguments, at which time the server will
   revert back to English, the default.  The server must send an error
   message to clients that have been identified as non-RWhois clients.












Williamson & Kosters                                           [Page 35]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


   Format for use:

   %language:<SP><language>

   Example of use:

   %language: german
   RWhois Deutsche Version: 1.0
   %language

3.5  Query Reduction

   The critical component of the RWhois server is the ability to reduce
   the query to find a server that is closer to the data.  The search
   algorithm of the server is the following:

   1) accept a query
   2) find any local matches - display them
   3) find any referrals - display them
   4) if no local or referral hits, reduce the query and goto step 3

   Here is an example of the query ietf.cnri.reston.va.us:

    1) query whois for ietf.cnri.reston.va.us
    2) search rs.internic.net for information (no hits).
    3) search referrals for ietf.cnri.reston.va.us (no hits).
    4) search referrals for cnri.reston.va.us (no hits).
    5) search referrals for reston.va.us (no hits).
    6) search referrals for va.us (no hits).
    7) search referrals for us (referral found) - referral to
       isi.edu.

   [currently on rs.internic.net:4343 for proof of concept].

3.6  Determining Authority

   Authority areas are a major part of the RWhois protocol. If an
   authoritative response is required, turning the cache off is the
   first step.  The client can also determine if the server connected
   has authority over the name/number space of interest by sending the
   -soa <authority area> directive.  If the server has authority for the
   area requested, it must return important information about the
   authority area.  The exchange below is a client determining if the
   server is an authority for abc.net or no.net.

   S wait for connection
   C connect to rs.internic.net port 4343
   S %RWhois V-1.0 rs.internic.net (Network Solutions, Inc. V-1.0)



Williamson & Kosters                                           [Page 36]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


   C -RWhois V-1.0 (Network Solutions, Inc. V-1.0)
   S %ok
   C -cache off
   S %ok
   C -soa abc.net
   S %error<SP>333<SP>Not SOA for requested authority area
   S %ok
   C -soa no.net
   S %soa authority: no.net
   S %soa ttl: 7500
   S %soa serial: 45
   S %soa refresh: 3600
   S %soa retry: 3600
   S %soa tech-contact: markk@no.net
   S %soa admin-contact: stanb@no.net
   S %soa hostmaster: hostmaster@no.net
   S %ok

3.7  Secondary Server Interaction

   A server that operates as a secondary will report an authoritative
   SOA for the authority area of the data it contains.  Below is the
   interaction between the primary and secondary server.  In reality the
   secondary operation would be performed using a client specifically
   designed for this purpose.

   S wait for connection
   C connect to slam.internic.net port 4343
   S %RWhois V-1.0 slam.internic.net (Network Solutions Inc. V-1.0)
   C -RWhois V-1.0 (Network Solutions Inc. V-1.0)
   S %ok
   C -soa internic.net
   S %soa authority: internic.net
   S %soa ttl: 7500
   S %soa serial: 45
   S %soa refresh: 3600
   S %soa retry: 3600
   S %soa tech-contact: markk@internic.net
   S %soa admin-contact: stanb@internic.net
   S %soa hostmaster: hostmaster@rs.internic.net
   S %ok
   C -xfer domain internic.net
   S ... all data for domain object in the internic.net authority
   area transferred
   S%ok
   C -notify inssec netman1.netsol.com:4343:domain:internic.net
   S %ok
   C -quit



Williamson & Kosters                                           [Page 37]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


   S close connection
   C close connection

3.8  Registration Process

   The following is the interaction that occurs when a server accepts a
   registration from a client.

   S wait for connection
   C connect to slam.internic.net port 4343
   S %RWhois V-1.0 slam.internic.net (Network Solutions Inc. V-1.0)
   C -RWhois V-1.0 (Network Solutions Inc. V-1.0)
   S %ok
   C -soa internic.net
   S %soa authority: internic.net
   S %soa ttl: 7500
   S %soa serial: 45
   S %soa refresh: 3600
   S %soa retry: 3600
   S %soa tech-contact: markk@internic.net
   S %soa admin-contact: stanb@internic.net
   S %soa hostmaster: hostmaster@rs.internic.net
   S %ok
   C -private auth password 98uuuts
   S %ok
   C -register on add scottw@netsol.com 98uuuts
   S %ok
   C ... send all attributes for object to register
   S %error 120 Registration not processed... will process hours:24
   C %quit

3.9  Out-of-Service

   Servers that are being taken out of service should automatically
   refer the client back into the tree.  Of course, this is not possible
   if the system which hosts the server is out of service.  In this
   case, the client's robustness must be relied upon to return to the
   referrer and notify that server that the referral was bad.  If the
   system will still be available on the Internet, the following
   exchange is recommended:

   S wait for connection
   C connect to slam.internic.net port 3636
   S %RWhois V-1.0 slam.internic.net (Network Solutions Inc. V-1.0)
   C -RWhois V-1.0 (Network Solutions Inc. V-1.0)
   S %info on
   S This server will no longer be in service. You should
   S change your configuration file to reflect the new root



Williamson & Kosters                                           [Page 38]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


   S server at rs.internic.net:4343. You will automatically be
   S referred to the new root.
   S %error 200 Service not available referral to follow
   S %referral rs.internic.net:4343
   S close connection
   C close connection

4.  Interaction:  Client Directives and Acceptable Server Responses

   This section describes the responses to the various client
   directives.

4.1 General

   The responses below are general responses that can occur as a result
   of any directive.  Therefore, they will not be repeated under each
   directive.

      %ok
      %error<SP>400<SP>Invalid Server Directive
      %error<SP>100<SP>Get Peer Name query failed
      %error<SP>500<SP>Memory Allocation Problem
      %error<SP>401<SP>Not authorized for directive
      %error<SP>402<SP>Unidentified error... continue
      %error<SP>502<SP>Unrecoverable error... goodbye
      %error<SP>503<SP>Idle time exceeded... goodbye

4.2 On Connection

   These responses will only occur following successful connection to
   the server's host and start-up of the application:

      %RWhois
      %error<SP>501<SP>Service not available
      %referral
      %error<SP>503<SP>Idle time exceeded... goodbye

4.3 <QUERY>

   These responses may occur following a query:

      <answer>
      %referral
      %see-also
      %error<SP>334<SP>Pre-query directive not implemented
      %error<SP>230<SP>No Records Found
      %error<SP>130<SP>Not authority for answer... TTL good
      %error<SP>231<SP>Not authority for answer... TTL expired



Williamson & Kosters                                           [Page 39]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


4.4 -RWhois

      %error<SP>300<SP>Not compatible with that version number

4.5 -load

      %load
      %error<SP>335<SP>System's load not available

4.6 -limit<SP>< value >

      %limit
      %error<SP>330<SP>Exceeded Max Records Limit
      %error<SP>331<SP>Invalid Max Records Size

4.7 -schema<SP>[object]

      %schema
      %error<SP>337<SP>Object's schema not found

4.8 -xfer<SP>[object]

      %xfer
      %error<SP>332<SP>Nothing to transfer
      %error<SP>337<SP>Object's schema not found

4.9 -quit

      %ok

4.10 -cache<SP><on/off>

      %error<SP>232<SP>Cache disabled

4.11 -status

      %status

4.12 -forward

      %error<SP>431<SP>Not authorized to forward
      %error<SP>433<SP>Bad reference on forward

4.13 -soa

      %soa
      %error<SP>333<SP>Not SOA for requested authority area




Williamson & Kosters                                           [Page 40]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


4.14 -notify

      %error<SP>434<SP>Referral does not exist on this server
      %error<SP>530<SP>Not authorized as secondary

4.15 -register

      %error<SP>120<SP>Registration not processed... will process
   hours:<hours>
      %error<SP>320<SP>Invalid attribute line:<line number>
      %error<SP>321<SP>Invalid format line:<line number>
      %error<SP>322<SP>Required attribute missing name:<attribute
   name>
      %error<SP>323<SP>Required related object missing name:<object
   name>
      %error<SP>324<SP>Primary key not unique
      %error<SP>420<SP>Registration not authorized
      %error<SP>421<SP>Not authorized to change object:<object
   name><SP>key:<key>

4.16 -holdconnect

4.17 -object

      %object
      %error<SP>336<SP>Object not defined

4.18 -define

      %define
      %error<SP>435<SP>Macro not defined

4.19 -X-

      %X-
      %error<SP>460<SP>Extended directive not recognized
      %error<SP>461<SP>Extended directive not authorized

4.20 -display

      %display
      %display<SP>436<SP>Display mode not allowed

4.21 -language

      %language<SP>437<SP>Language not supported





Williamson & Kosters                                           [Page 41]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


5.  Error Codes

   The error code immediately follows the %error response from the
   RWhois server.  The definitions of the error codes are below.  The
   error codes are descriptive so that the client can group the error
   messages in order to determine group action that must be taken before
   taking error specific action.  Error codes should remain consistent
   without variable extensions except for messages associated with the
   registration process.  If a client receives a `6' in the second
   position of the error code and the client does not support the
   extended code received, the client must act on the first position
   code. (Example: If a client received %error 561 and the client did
   not support the extended error codes for the server currently
   connected, the client would exit based on the `5' in the first
   position of the error code.)

   X00

      1 -    information only, no action required
      2 -    information, action required
      3 -    Specific command error, retry that command or try
             another directive
      4 -    Serious for current directive, may correct with another
             directive
      5 -    Fatal, must disconnect

   0X0

      0(1) -      System wide, no specific directive
      2 -         Registration error
      3(4,5) -    Specific directive
      6 -         Extended message (version specific)

   00X

      Sequential order

5.1  Error Code List

   Below is an ordered list of RWhois error codes.  These codes may be
   extended with implementation specific codes.  These extended codes
   will have a `6' in the second position of the code.

   100 Get Peer Name query failed
   120 Registration not processed... will process hours:<hours>
   130 Not authority for answer... TTL good
   200 Service not available... Referral to follow
   230 No Records Found



Williamson & Kosters                                           [Page 42]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


   231 Not authority for answer... TTL expired
   232 Cache disabled

   300 Not compatible with that version number
   320 Invalid attribute line:<line number>
   321 Invalid format line:<line number>
   322 Required attribute missing name:<attribute name>
   323 Required related object missing name:<object name>
   324 Primary key not unique
   330 Exceeded Max Records Limit
   331 Invalid Max Records Size
   332 Nothing to transfer
   333 Not SOA for requested authority area
   334 Pre-query directive not implemented
   335 System's load not available
   336 Object not defined
   337 Object's schema not found

   400 Invalid Server Directive
   401 Not authorized for directive
   402 Unidentified error... continue
   420 Registration not authorized
   421 Not authorized to change object:<object name><SP>key:<key>
   431 Not authorized to forward
   432 Not authorized to transfer
   433 Bad reference on forward
   434 Referral does not exist on this server
   435 Macro not defined
   436 Display mode not allowed
   437 Language not supported
   460 Extended directive not recognized
   461 Extended directive not authorized

   500 Memory Allocation Problem
   501 Service not available
   502 Unrecoverable error... goodbye
   503 Idle time exceeded... goodbye
   530 Not authorized as secondary

6.  Attribute Format

   The format for all attributes for objects in the RWhois server must
   be specified using a format specifier.  This definition will allow
   the client software to interpret the received data correctly.  The
   RWhois format specifier closely follows the `C' language scanf syntax
   with macro extensions.

   Format specifiers must follow this pattern:



Williamson & Kosters                                           [Page 43]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


   %[alignment][length restriction]<type>[range restriction]

   [alignment]    '-' = left justified
                  '.' = right justified

   [length restriction]     <value> = number of bytes allowed
                            <value>B = number of bits allowed

   <type>    This is the only required part of the format specifier.
             Below are the allowed format type values.  The length
             of these values are not specified.  These restrictions
             will be on the left of the [length restriction].

   %c Character
   %s String
   %d Integer
   %x Hex Integer
   %o Octal Integer
   %f Float
   %e Scientific
   %M defined macro

   [range restriction] The range restriction will limit the allowed
                       values.  This may specify a number,
                       character, or string range.

   Examples: %-3s["ON","OFF"] =  Defines a string with 3 characters
                                 left aligned and limited to the
                                 strings ON or OFF.
             %16Bd[0-50]      =  16 bit integer between 0 and 50

             %4.2f[0-2500.50]  = Defines a floating point number
                                 limited to 4 digits before and 2
                                 after the decimal with a value
                                 between 0 and 2500.50.

6.1  Format Specification Macros

   Format specifications may be presented as macros.  Format
   specification macros may be defined using the following format.

   %M<macro name>=<format string or earlier macro>

   The following macros are pre-defined in this RWhois specification:

   Month/Day/Year formats:
   %MM=[%-2d[0-12]]
   %MD=[%-2d[0-31]]



Williamson & Kosters                                           [Page 44]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


   %MY2=[%-2d[0-99]]
   %MY4=[%-4d[0-9999]]
   %MMs=[%-3s\
   ["JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP",\
   "OCT","NOV","DEC"]]

   Date formats:
   %Mdate1=[%MM/%MD/%MY2]
   %Mdate2=[%MM/%MD/%MY4]
   %Mdate3=[%MD-%MMs-%MY2]
   %Mdate4=[%MD-%MMs-%MY4]
   %Mdate5=[%MY4%MM%MD]

   Hour/Minute/Second formats:
   %MTH=[%-2d[0-24]]
   %MTM=[%-2d[0-59]]
   %MTS=[%-2d[0-59]]

   Time formats:
   %Mtime1=[%MTH:%MTM:%MTS]
   %Mtime2=[%MTH%MTM%MTS]

   Miscellaneous formats:
   %Mserver=[%s:%16Bd]
   %Mipnumber=[%8Bd.%8Bd.%8Bd.%8Bd]
   %Memail=[%s@%s]

   %Mserial=[%Mdate5%Mtime2]
   %Mstype=[RWHOIS/WHOIS/WHOIS++/OTHER]
   %Murl=[%s://%s]

   Macro definitions may be obtained by sending the -define directive to
   the server.  For client efficiency, definitions can be remembered.
   If the definition of a macro changes, the serial number of all
   schemas using that macro must change, allowing the client to
   reacquire the schema and format specifier macros.

7.  Quick Query (RWhois using UDP)

   The overhead incurred by establishing a TCP connection and
   interacting with an RWhois server may be unnecessary if the client
   only wishes to ask one question.  A separate document will describe
   the UDP facility for RWhois.  Adjustments to the query must be made
   to make this a practical option.  The only function allowed while
   utilizing UDP is a single query.






Williamson & Kosters                                           [Page 45]
^L
RFC 1714            Referral Whois Protocol (RWhois)       November 1994


8.  References

   [RFC-954]      Harrenstien, K., Stahl, M., and E Feinler, "NICNAME/
                  WHOIS", RFC 954, SRI, October 1985.

   [RFC-1521]     Borenstein, N., and N. Freed, "MIME (Multipurpose
                  Internet Mail Extensions) Part One: Mechanisms for
                  Specifying and Describing the Format of Internet
                  Message Bodies", RFC 1521, Bellcore, Innosoft,
                  September 1993.

9.  Security Considerations

   Security issues are not discussed in this memo.

10.  Authors' Addresses

   Scott Williamson
   505 Huntmar Park Dr.
   Herndon, VA 22070

   Phone: (703) 742-4820
   EMail: scottw@internic.net


   Mark Kosters
   505 Huntmar Park Dr.
   Herndon, VA 22070

   Phone: (703) 742-4795
   EMail: markk@internic.net




















Williamson & Kosters                                           [Page 46]
^L