Provided by Colasoft Co., Ltd.

RRP ( NSI Registry Registrar Protocol )

Home > Protocols > RRP Update: 2006-09-05 14:39:21    I have words to say about this protocol
On this page
SUMMARY
Protocol : NSI Registry Registrar Protocol
Protocol suite : TCP/IP
Layer : Application Layer
Ports : 648 (TCP) server
DESCRIPTION
RRP (NSI Registry Registrar Protocol) is a TCP-based, 7-bit US-ASCII text protocol that permits multiple registrars to provide second level Internet domain name registration services in the top level domains (TLDs) administered by a TLD registry.

RRP was developed by the Network Solutions, Inc. Registry under the auspices of the Shared Registration System program. The protocol was initially deployed in April 1999 as part of a test bed implementation of the Shared Registration System with five registrars. Additional registrars began using the protocol in July 1999. The operational experiences of both the registry and the registrars identified several "lessons learned" which have been documented here as "Known Issues".

The registry stores information about registered domain names and associated name servers. A domain name's data includes its name, name servers, registrar, registration expiration date, and status. A name server's data includes its server name, IP addresses, and registrar. A registrar may perform the following registration service procedures using RRP:
  • Determine if a domain name has been registered.

  • Register a domain name.

  • Renew the registration of a domain name.

  • Cancel the registration of a domain name.

  • Update the name servers of a domain name.

  • Transfer a domain name from another registrar.

  • Examine the status of domain names that the registrar has registered.

  • Modify the status of domain names that the registrar has registered.

  • Determine if a name server has been registered.

  • Register a name server.

  • Update the IP addresses of a name server.

  • Delete a name server.

  • Examine the status of name servers that the registrar has registered.


All RRP commands include features to provide idempotency. That is, the effect of each command is the same if the command is executed once or if the command is executed multiple times. This property is extremely useful in situations when a command is retried due to an error condition that results in a missed command response and a command retry is attempted. Command retries will be caught by the System and rejected with an appropriate error response code. Command parameters that do not provide idempotency will be explained fully as part of the appropriate command description.


A typical RRP session will go through a number of states during its lifetime. The following figure illustrates the possible states of an RRP server. Initially, the server waits for a client connection and authentication (PRE). All client connections must be authenticated.

RRP Server Finite State Machine

                                      |

|
v
+-----------------+ Timeout
| Waiting for |-------------------+
Authentication Succeeded | Client | |
+---------| Authentication | Authentication |
| | (PRE) |-----+ Failed |
| +-----------------+ | |
| | |
V V |
+-----------+ Succeeded +--------------------+ |
|Waiting for|<-----------------| Waiting for | |
| Command |----------+ |Authentication Retry| |
| (WFC) | Timeout | | (WFR) | |
+-----------+ | +--------------------+ |
| ^ | | | |
| | | Timeout | | Failed |
Request V |Response | | | |
+-----------+ | V V V
| Executing | | +--------------------+
| Command | +--------->| Disconnected |
| (EXE) |-------------------->| (DIS) |
+-----------+ QUIT +--------------------+


If the authentication fails, the server gives the client another chance to identify itself (WFR). If the authentication fails again, the server disconnects (DIS). Otherwise, the server waits for a request from the client (WFC). Upon receiving a request, the server executes it and responds to the client with the result (EXE). The server then waits again for another request from the client (WFC). If the client sends a QUIT command, the server ends the session and disconnects (DIS). To keep its state in sync with that of the server, the client should wait for a response from the server before sending another request on the same connection. The following table summarizes these states:
TableDescription
PREWaiting for client connection and authentication
WFRWaiting for authentication retry
WFCWaiting for a command from an authenticated client
EXEExecuting a command
DISDisconnected


The WFR and WFC states may time out. An implementation should define inactivity timeout periods for these states based on System-specific factors, including (but not limited to) resource availability and security risk. In the absence of other factors, a default timeout period of 10 minutes should be used. The server may disconnect if the server is in one of these states and no message is received from the client during the timeout period.

Commands

CommandReferences
addThis command allows a registrar to register a domain name or a name server in the System.
checkThis command allows a registrar to determine if a domain name or name server has been registered in the System.
deleteThis command allows a registrar to delete (cancel the registration) of a domain name or delete a name server.
describeThis command allows a registrar to obtain general information about an RRP implementation.
modThis command allows a registrar to update a registered domain name or a name server.
quitThis command allows a registrar to close an RRP connection. A response must be sent before closing the connection.
renewThis command allows a registrar to renew a domain name in the System.
sessionThis command allows a registrar to establish an RRP session. A registrar can also use this command to change their password.
statusThis command allows a registrar to determine the current status of a domain name or name server.
transferThis command allows a registrar to request transfer of domain name sponsorship from a second registrar and to approve or reject transfer requests initiated by other registrars.



Response Codes
RRP commands may return a variety of response codes to signify normal completion or error conditions. This section documents all of the defined RRP response codes.

CodeNameDescription
200Command completed successfullyThis is the normal response for successful completion of most RRP commands.
210Domain name availableThis is the normal response for successful completion of an RRP CHECK command for a domain name that is not currently registered.
211Domain name not availableThis is the normal response for successful completion of an RRP CHECK command for a domain name that is currently registered.
212Name server availableThis is the normal response for successful completion of an RRP CHECK command for a name server that is not currently registered.
213Name server not availableThis is the normal response for successful completion of an RRP CHECK command for a name server that is currently registered.
220Command completed successfullyServer closing connection This is the normal response for successful completion of an RRP QUIT command. It may also be returned by other RRP commands if a transient situation is noted that requires closing the connection after successfully completing the RRP command.
420Command failed due to server error. Server closing connectionServer closing connection A transient server error has caused RRP command failure and session termination. A new session must be established before continued processing can be attempted.
421Command failed due to server error. Client should try againClient should try again A transient server error has caused RRP command failure. A subsequent retry may produce successful results.
500Invalid command name.A client-specified RRP command name was not recognized as a valid RRP command name.
501Invalid command optionA client-specified RRP command parameter was not recognized as a valid RRP command parameter.
502Invalid entity valueThe "value" of an entity name-value pair is invalid. Command blocks that require an "EntityName" parameter also require a value that specifies the entity name, and the provided value is invalid.
503Invalid attribute nameA client-specified RRP command parameter was not recognized as a valid RRP command parameter.
504Missing required attributeA parameter required to execute the RRP command was not provided by the client. The command should be retried with all required parameters specified.
505Invalid attribute value syntaxA supplied parameter value is syntactically incorrect. For example, a year value digit such as "5" may be required but the client provided a string of characters such as "five".
506Invalid option valueA client-specified value for an RRP command parameter is out-of-bounds or otherwise not within acceptable System limits.
507Invalid command formatThe specified command does not resemble a well-formed RRP command.The command should be retried using the proper command structure and syntax.
508Missing required entity.An entity required for command completion was not provided by the client.
509Missing command optionA command parameter that isn't really optional (such as the registrar ID in a SESSION command) was not provided by the client.
510Invalid encodingThe value of a domain name or name server entity contains invalid ASCII compatible encoding used to represent an internationalized domain or host name.
520Server closing connectionA timeout event has been detected, and the client's session is being ended.
521Too many sessions openA System-defined limit on the number of open connections has been exceeded, and it is impossible to establish a new session at the moment.
530Authentication failedThe client-supplied registrar identifier or password was not recognized by the System.
531Authorization failedRegistrars may not view or alter data associated with either the registry or another registrar.
532Domain names linked with name serverThe name server is hosting active domains. This error occurs when a registrar is trying to delete a server that is the name server for active domains.
533Domain name has active name serversThe domain name has active name servers. The registrar is trying to delete a domain name that is a parent domain of an active name server, i.e., a server that is hosting active domains.
534Domain name has not been flagged for transferThe registrar is trying to approve or reject a domain name transfer for a domain name that is not pending transfer.
535Restricted IP addressIANA identifies certain IP address ranges that are not valid for normal use.
536Domain already flagged for transferThe registrar tried to perform a transfer command for a domain name that is awaiting approval of an earlier transfer request.
540Attribute value is not uniqueA supplied attribute value is not unique.
541Invalid attribute value.A supplied parameter value is invalid.
542Invalid old value for an attributeA current attribute value to be modified is invalid.
543Final or implicit attribute cannot be updatedThe registrar is attempting to modify an attribute that is only modifiable by the registry.
544Entity on holdThe attempted operation was rejected because the entity is on HOLD status.
545Entity reference not foundA required entity reference was not found.
546Credit limit exceeded.The registrar's credit limit has been exceeded.
547Invalid command sequence.RRP commands are issued using a well-formed syntax that requires entry of command structures in particular sequences.
548Domain is not up for renewalA RENEW command was attempted during a period in which the domain can not be renewed.
549Command failedA System error prevented successful completion of the requested RRP command.
550Parent domain not registered.The parent domain of a name server being registered is not registered.
551Parent domain status does not allow for operationThe status of the parent domain does not allow the requested operation.
552Domain status does not allow for operationThe status of the domain does not allow the requested operation.
553Operation not allowedThe status of the domain does not allow the requested operation.
554Domain already registeredA registrar tried to register a domain name that has already been registered by the same registrar.
555Domain already renewedA registrar tried to renew a domain using the same parameters as specified for an earlier, successful renewal.
556Maximum registration period exceededA registrar tried to renew a domain registration, and the resulting new registration period exceeds the System-defined maximum registration period.


Domain Status Codes
The status of a domain can be viewed using the RRP STATUS command and modified using the RRP MOD command. Both the registry and the sponsoring registrar may view and change the status of a domain. The criteria for status changes are highly dependent on registry and registrar business models and are thus beyond the scope of this specification.

The domain's status should have a direct bearing on whether or not the domain appears in the appropriate TLD zone file and whether or not the domain can be modified. A domain can have more than one assigned status, e.g., REGISTRAR-HOLD and REGISTRAR-LOCK. If a domain is in ACTIVE status, then the domain name can only be in this status. When a registrar sets a domain name to REGISTRAR-LOCK, the registry must automatically remove the ACTIVE status. When the registrar removes the REGISTRAR-LOCK and other domain statuses, the registry must automatically set the domain name status to ACTIVE.

  • ACTIVE

  • This is the default status of a domain at registration time. The registry sets the domain to this status. The domain is modifiable by the registrar. The domain can be renewed. The domain shall be included in the zone file when in this status if the domain has at least one associated name server.

  • REGISTRY-LOCK

  • The registry sets the domain to this status. The domain cannot be modified or deleted by the registrar. The registry must remove the REGISTRY-LOCK status for the registrar to modify the domain. The domain can be renewed. The domain shall be included in the zone file when in this status if the domain has at least one associated name server.

  • REGISTRY-HOLD

  • The registry sets the domain to this status. The domain cannot be modified or deleted by the registrar. The registry must remove the REGISTRY-HOLD status for the registrar to modify the domain. The domain can be renewed. The domain shall not be included in the zone file when in this status.

  • REGISTRAR-HOLD

  • The registrar of the domain sets the domain to this status. The domain can not be modified or deleted when in this status. The registrar must remove REGISTRAR-HOLD status to modify the domain. The domain can be renewed. The domain shall not be included in the zone file when in this status.

  • REGISTRAR-LOCK

  • The registrar of the domain sets the domain to this status. The domain cannot be modified or deleted when in this status. The registrar must remove REGISTRAR-LOCK status to modify the domain. The domain can be renewed. The domain shall be included in the zone file when in this status.

  • REGISTRY-DELETE-NOTIFY

  • A domain is set on this status if it has expired and has child name servers that are hosting other domains. Only the registry may set this status. The domain shall be included in the zone file when in this status if the domain has at least one associated name server.


Top of Page

EXAMPLES
The following syntax specification uses the augmented Backus-Naur Form (BNF) as described in [ABNF].

ABNF specification for Registry Registrar Protocol (RRP) v1.1.0. Note that character string literals are case insensitive.

Example 1 - Lexical tokens

space = %x20 ; " "
dot = %x2E ; "."
dash = %x2D ; "-"
underscore = %x5F ; "_"
colon = %x3A ; ":"
cr = %x0D ; ASCII carriage return
lf = %x0A ; ASCII linefeed
crlf = cr lf
alpha = %x41-5A / %x61-7A ; A-Z / a-z
digit = %x30-39 ; 0-9
dns-char = alpha / digit / dash
id-char = alpha / digit / underscore / dash
id-prefix = alpha / digit
id-word = id-prefix *id-char
printable-char = %x20-7E ; ASCII " " - "~"
Example 2 - Start of basic grammar

year = 4digit
month = 2digit
day = 2digit
ymd = year dash month dash day
hour = 2digit
minute = 2digit
second = 2digit
split-second = 1digit
hms = hour colon minute colon second dot split-second
time-stamp = ymd space hms
ip-address = 1*3digit dot 1*3digit dot 1*3digit dot 1*3digit
password = 4*16printable-char
option-name = 1*128id-word
option-tag = dash option-name
option-value = 1*128id-word
attribute-name = 1*128id-word
attribute-value = 1*128printable-char
attribute-line = attribute-name colon attribute-value crlf
response = 3digit space 1*printable-char crlf
version-number = "RRP" space 1*digit dot 1*digit dot 1*digit
label = id-prefix [*61dns-char id-prefix]
sldn = label dot label
servername = *(label dot) sldn
period = %x31-39 / (%x31-39 %x30-39) ; "1" - "9" or "10" - "99"
period-option = dash "Period" colon period crlf
yesno = "Yes" / "No"
domainstatus = "Active" / "Registry-Lock" / "Registry-Hold" /
"Registrar-Lock" / "Registrar-Hold" /
"Registry-Delete-Notify"
Example 3 - RRP commands and responses

rrp = add / check / delete / describe / mod / quit / renew / session / status / transfer
add = add-request add-response
check = check-request check-response
delete = del-request del-response
describe = describe-request describe-response
mod = mod-request mod-response
quit = quit-request quit-response
renew = renew-request renew-response
session = session-request session-response
status = status-request status-response
transfer = transfer-request transfer-response
Example 4 - ADD command

add-request = add-domain-request / add-nameserver-request
add-response = add-domain-response / add-nameserver-response
add-domain-request = "add" crlf
"EntityName" colon "Domain" crlf
"DomainName" colon sldn crlf
[period-option]
0*13("NameServer" colon servername crlf)
dot crlf
add-nameserver-request = "add" crlf
"EntityName" colon "NameServer" crlf
"NameServer" colon servername crlf
1*("IPAddress" colon ip-address crlf)
dot crlf
add-domain-response = response
"RegistrationExpirationDate" colon time-stamp crlf
"status" colon domainstatus crlf
dot crlf
add-nameserver-response = response
dot crlf
Example 5 - CHECK command

check-request = check-domain-request / check-nameserver-request
check-response = check-domain-response / check-nameserver-response
check-domain-request = "check" crlf
"EntityName" colon "Domain" crlf
"DomainName" colon sldn crlf
dot crlf
check-nameserver-request = "check" crlf
"EntityName" colon "NameServer" crlf
"NameServer" colon servername crlf
dot crlf
check-domain-response = response

dot crlf
check-nameserver-response = available-check-nameserver-response /
notavailable-check-nameserver-response
available-check-nameserver-response = response
dot crlf
notavailable-check-nameserver-response = response
1*("IPAddress" colon ip-address crlf)
dot crlf

Top of Page


PROTOCOL RELATIONS
Parent layer
Child layer
Top of Page

GLOSSARY
ASCII
ASCII (American Standard Code for Information Interchange) is the most common format for text files in computers and on the Internet. In an ASCII file, each alphabetic, numeric, or special character is represented with a 7-bit binary number (a string of seven 0s or 1s). 128 possible characters are defined.

Unix and DOS-based operating systems use ASCII for text files. Windows NT and 2000 uses a newer code, Unicode. IBM's S/390 systems use a proprietary 8-bit code called EBCDIC. Conversion programs allow different operating systems to change a file from one code to another.

ASCII was developed by the American National Standards Institute (ANSI).

Domain name
The term domain name has multiple meanings, all related to the [Domain Name System] (main article).
*a name that is entered into a computer (e.g. as part of a website or other URL, or an email address) and then looked up in the global [Domain Name System] which informs the computer of the IP address(es) with that name.
*the product that registrars provide to their customers.
*a name looked up in the DNS for other purposes.

RRP
This protocol was developed by the Network Solutions Registry for use within the .com/.net/.org SRS. As defined in RFC 2832, NSI RRP is a TCP-based, 7-bit US-ASCII text protocol that permits multiple registrars to provide second level Internet domain name registration services in the top level domains (TLDs) administered by a TLD registry.

Register
(n) A, special, high-speed storage area within the CPU. All data must be represented in a register before it can be processed. For example, if two numbers are to be multiplied, both numbers must be in registers, and the result is also placed in a register.

(v) To notify a manufacturer that you have purchased its product. Registering a product is often a prerequisite to receiving customer support, and it is one of the ways that software producers control software piracy.

Top of Page

REFERENCES
RFCs:
[RFC 2832] NSI Registry Registrar Protocol (RRP) Version 1.1.0.
                Updated by: RFC 3632.
                
[RFC 3632] VeriSign Registry Registrar Protocol (RRP) Version 2.0.0.
                Updates: RFC 2832.
                


Top of Page

OTHER PROTOCOLS OF TCP/IP SUITE
AARP   RRP   RTP Video   RTP Audio   RTP   COPS   Gopher   HSRP   ICP   MPLS   IEEE 802.2   CIP   FTP - Data   FTP - Ctrl   IMAPS   IP Fragment   LDAPS   PUP   MSSQL   RSH   SQL   POP3s   RTELNET   RSVP   STP   VLAN   MSN   H.323   MSRDP   HTTPS   WINS   LPD   GTP   ICMPv6   POP   TELNET   H.225   VRRP   PIM   RARP   SAP   OSPF   RLOGIN   SCTP   SIP   RTCP   PPPoE   Mobile IP   IMAP3   WhoIs   SLP   NCP   PPTP   MGCP   LDAP   L2TP   Kerberos   IPv6   GRE   Ethernet SNAP   AFP   CIFS   IEEE 802.3   Finger   NBDGM   NetBEUI   NBSSN   ESP   EIGRP   EGP   DHCP   CGMP   CDP   BOOTP   AH   NBNS   EthernetII   ICQ   PPP   ARP   RIP   IPX   IGRP   IGMP   SSH   RPC   NetBIOS   TFTP   SNMP   SNA   SMB   RADIUS   NTP   NNTP   UDP   TCP   BGP   DNS   SOCKS   IMAP   RTSP   NFS   ICMP   IP   FTP   Telnet   POP3   SMTP   HTTP  
Search RFCs:

Advanced Search
Search Glossary:
Exact search
Fuzzy search


All Protocols
Submit a Request

Recommend an Article

 Layer 7 Application Layer
  AFP
  BOOTP
  CIFS
  CIP
  COPS
  DHCP
  DNS
  Finger
  FTP
  FTP - Ctrl
  FTP - Data
  Gopher
  HSRP
  HTTP
  HTTPS
  ICP
  ICQ
  IMAP
  IMAP3
  IMAPS
  Kerberos
  LPD
  MGCP
  MSN
  MSRDP
  MSSQL
  NCP
  NFS
  NNTP
  NTP
  POP
  POP3
  POP3s
  RADIUS
  RLOGIN
  RRP
  RSH
  RTCP
  RTELNET
  RTP
  RTP Audio
  RTP Video
  RTSP
  SAP
  SIP
  SLP
  SMB
  SMTP
  SNA
  SNMP
  SOCKS
  SSH
  Telnet
  TELNET
  TFTP
  WhoIs
  WINS
 Layer 6 Presentation Layer
  NBNS
  NBSSN
  NCP
  NetBIOS
 Layer 5 Session Layer
  LDAP
  LDAPS
  NCP
  NetBEUI
  RPC
 Layer 4 Transport Layer
  H.225
  H.323
  NBDGM
  NetBEUI
  PUP
  SCTP
  TCP
  UDP
 Layer 3 Network Layer
  AARP
  AH
  BGP
  EGP
  EIGRP
  ESP
  GRE
  GTP
  ICMP
  ICMPv6
  IGMP
  IGRP
  IP
  IP Fragment
  IPv6
  IPX
  Mobile IP
  MPLS
  OSPF
  PIM
  PPPoE
  RIP
  RSVP
  STP
  VRRP
 Layer 2 Data Link Layer
  ARP
  CDP
  CGMP
  Ethernet SNAP
  EthernetII
  IEEE 802.2
  IEEE 802.3
  L2TP
  PPP
  PPTP
  RARP
  SQL
  VLAN
 Layer 1 Physical Layer
© 2006 - 2007 Colasoft Co., Ltd. All rights reserved.