文章目录
1. 引言
本文档描述了RFC 3730[1]中描述的可扩展供应协议(Extensible Provisioning Protocol, EPP) 1.0版本的扩展映射。此映射是RFC 3731[2]中描述的域名映射的扩展,使用可扩展标记语言(XML) 1.0[3]和XML模式表示法([4]、[5])指定。
EPP核心协议规范[1]提供了EPP命令和响应结构的完整描述。全面了解基本协议规范对于理解本文档中描述的映射是必要的。
2002年在过去的几个月,互联网名称与数字地址分配机构(ICANN)开发了一个实现方案,该方案在域名从其权威注册局的存储库删除之前,为域名的恢复(recovery)
(或赎回(redemption)
)提供一个“grace period(宽限期)”
。该映射扩展了EPP域<update>
命令,以启动已进入赎回宽限期(RGP,Redemption Grace Period)
的域名的赎回过程,并扩展了EPP域<info>
响应,以识别已进入ICANN策略定义的各种宽限期的域的状态。
2003年3月,ICANN发布了一份工作组报告,描述了与EPP操作相关的其他域名注册宽限期。此映射描述扩展状态值,以记录报告中描述的宽限期,包括:
- “
add grace period (AGP)
”:域名刚被注册后的一段时间。如果域名在此期间被注册商删除,注册局将退还注册商的注册费用。 - “
auto-renew grace period
”:域名注册期期满后的一段时间。这段时间内,域名将会注册局自动被续期。但如果域名在此期间被注册商删除,注册局将不收取注册商的续期费用。 - “
renew grace period
”:域名被注册后,注册商续期了域名的一段时间。如果这段期间内,域名被注册商删除,注册局会退还注册商的续期费用。 - “
transfer grace period
”:域名成功转移到另一个注册商后的一段时间。如果域名在此期间被新的赞助注册商删除,注册局将退还注册商的转让费用。
每个宽限期都存在一段特定的时间,通常以天
为单位。每个宽限期的持续时间是一个注册操作政策的问题,在本文件中没有提到。
1.1 文档的约定
在示例中,“C:”表示协议客户端发送的行,“S:”表示协议服务器返回的行。示例中的缩进和空白仅用于说明元素关系,并不是此规范所需的特性。
XML是区分大小写的。除非另有说明,本文档中提供的XML规范和示例必须用字符来解释,以开发符合规范的实现。
2. 赎回宽限期状态图
赎回宽限期(RGP,Redemption Grace Period)
涉及到域名在赎回过程中的几个域状态转换:
- 域最初处于EPP“ok”状态,或者其他允许处理EPP < delete>命令的状态。
- 接收到一个< delete>命令并处理该域名。
- 一旦< delete>命令被成功处理,RGP就开始。EPP状态变为“pendingDelete”,RGP状态初始化为“redemptionPeriod”。域保持这种状态,直到请求< restore>操作或赎回期结束。
- 可以使用扩展的EPP < update>命令请求一个< restore>操作。如果在收到< restore> 请求之前,赎回期已经过去,请转到步骤8。
- 如果< restore>成功,注册局将在一段时间内等待接受注册商的
还原报告(restore report)
。EPP状态保持为“pendingDelete”,RGP状态更改为“pendingRestore”。虽然此扩展定义了通过EPP交付恢复报告的方法,但也可以使用带外机制(如web站点)来交付恢复报告。 - 如果没有收到恢复报告,域名将返回到赎回期状态(状态3)。
- 如果收到恢复报告,则EPP状态将返回“ok”(或处理< delete>命令之前的任何状态),RGP状态将完全删除。
- 在收到< restore>请求之前,赎回期已经过去。
- EPP状态保持为“pendingDelete”,RGP状态更改为“pendingDelete”。域名在注册局规定的一段时间内保持这种状态。
- 待删除期一过,域名将被清除。
- 该域名可以重新注册。
|
v
+----------------------+ (2) +----------------------+
|EPP: ok (1)| <delete> |EPP: pendingDelete (3)|
|RGP: N/A |--------->|RGP: redemptionPeriod |
+----------------------+ +----------------------+
^ (4) | ^ |
| <restore> | | No (8) |
| +-----------+ | <restore> |
| | | |
| v | v
| +----------------------+ | +----------------------+
| |EPP: pendingDelete (5)| | |EPP: pendingDelete (9)|
| |RGP: pendingRestore |---------+ |RGP: pendingDelete |
| +----------------------+ Report +----------------------+
| | not (6) |
| (7) | Received Purge (10) |
| Report Received | |
+--------------------+ v
+----------------------+
| Purged (11)|
| |
+----------------------+
3. 对象属性
该扩展为EPP域名映射[2]添加了额外的元素。这里只描述新的元素描述。
3.1 状态值
此扩展
定义了新的状态值
,以表示作为宽限期
处理的结果,域名可能处于的不同状态。这些都是:
-
addPeriod
域名刚被
注册
后的一段时间。如果域名在此期间被注册商删除,注册局将退还注册商的注册费用。。 -
autoRenewPeriod
域名注册期期满后的一段时间。这段时间内,域名将会注册局自动被
续期
。但如果域名在此期间被注册商删除,注册局将退还注册商的续期费用。 -
renewPeriod
域名被注册后,注册商
续期
了域名的一段时间。如果这段期间内,域名被注册商删除,注册局会退还注册商的续期费用。 -
transferPeriod
域名成功
转移
到另一个注册商后的一段时间。如果域名在此期间被新的赞助注册商删除,注册局将退还注册商的转让费用。 -
redemptionPeriod
域名被
删除
后的一段时间。域名在此期间能且仅能被原注册商赎回使用。 -
pendingRestore
此状态值用于描述处于赎回期状态后尝试恢复的域(注册商已经发送< restore>命令,但是还没有发送赎回报告)。这个状态会持续一段时间。
-
pendingDelete
此状态值用于描述救赎期结束后进入待删除状态的域。处于这种状态的域还必须处于EPP域映射[2]中描述的pendingDelete状态。这个状态会持续一段时间。
3.1 注册数据和辅助信息
该扩展允许客户端根据RGP流程的要求在恢复报告中提供注册数据(例如whois[9]数据)和支持信息的副本。该扩展不需要特定的格式;可以使用自由文本和XML标记。
提供注册数据的服务器的操作员可能会发现,在他们对客户端查询的响应中提供宽限期状态值是很有用的。这些信息对于想要了解可以在任何给定时间对域名执行的操作的人来说是非常有用的。
3.2 日期和时间
日期和时间属性值必须使用公历以通用协调时间(UTC)表示。使用RFC 3339[7]中定义的大写“T”和“Z”字符的扩展日期-时间表单必须用于表示日期-时间值,因为XML模式不支持截断的日期-时间表单或小写的“T”和“Z”字符。
3.3 客户端声明
RGP流程要求客户端针对还原报告中包含的数据执行两条语句。该扩展不需要特定的格式;可以使用自由文本和XML标记。英语是语句中使用的默认语言,但是可以使用其他语言。
4. EPP命令映射
EPP语法和语义的详细描述可以在EPP核心协议规范[1]中找到。这里描述的命令映射专门用于通过EPP实现赎回宽限期进程。
4.1 EPP查询(Query)命令
4.1.1 < check >
此扩展不向EPP < check>命令或< check>响应中描述的EPP域映射[2]添加任何元素。
4.1.2 < info >
此扩展不向EPP域映射[2]中描述的EPP < info>命令添加任何元素。为< info>响应定义了其他元素。
当< info>命令被成功处理时,EPP < resData>元素必须包含[2]中描述的子元素。此外,EPP < extension>元素必须包含一个子元素< rgp:infData>,该元素标识注册局grace period名称空间(namespace)和注册局grace period模式(schema)的位置。< rgp:infData>元素包含一个< rgp:rgpStatus>
元素,该元素包含一个属性“s”,其值描述域的当前宽限期状态。可能的状态值在3.1节中描述。
“addPeriod” 状态< info>响应的例子:
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
S: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
S: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
S: epp-1.0.xsd">
S: <response>
S: <result code="1000">
S: <msg>Command completed successfully</msg>
S: </result>
S: <resData>
S: <domain:infData
S: xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
S: xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0
S: domain-1.0.xsd">
S: <domain:name>example.com</domain:name>
S: <domain:roid>EXAMPLE1-REP</domain:roid>
S: <domain:status s="ok"/>
S: <domain:registrant>jd1234</domain:registrant>
S: <domain:contact type="admin">sh8013</domain:contact>
S: <domain:contact type="tech">sh8013</domain:contact>
S: <domain:ns>
S: <domain:hostObj>ns1.example.com</domain:hostObj>
S: <domain:hostObj>ns1.example.net</domain:hostObj>
S: </domain:ns>
S: <domain:host>ns1.example.com</domain:host>
S: <domain:host>ns2.example.com</domain:host>
S: <domain:clID>ClientX</domain:clID>
S: <domain:crID>ClientX</domain:crID>
S: <domain:crDate>2003-11-26T22:00:00.0Z</domain:crDate>
S: <domain:exDate>2005-11-26T22:00:00.0Z</domain:exDate>
S: <domain:authInfo>
S: <domain:pw>2fooBAR</domain:pw>
S: </domain:authInfo>
S: </domain:infData>
S: </resData>
S: <extension>
S: <rgp:infData xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0"
S: xsi:schemaLocation="urn:ietf:params:xml:ns:rgp-1.0
S: rgp-1.0.xsd">
S: <rgp:rgpStatus s="addPeriod"/>
S: </rgp:infData>
S: </extension>
S: <trID>
S: <clTRID>ABC-12345</clTRID>
S: <svTRID>54322-XYZ</svTRID>
S: </trID>
S: </response>
S:</epp>
"redemptionPeriod"状态< info>响应的例子:
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
S: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
S: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
S: epp-1.0.xsd">
S: <response>
S: <result code="1000">
S: <msg>Command completed successfully</msg>
S: </result>
S: <resData>
S: <domain:infData
S: xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
S: xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0
S: domain-1.0.xsd">
S: <domain:name>example.com</domain:name>
S: <domain:roid>EXAMPLE1-REP</domain:roid>
S: <domain:status s="pendingDelete"/>
S: <domain:registrant>jd1234</domain:registrant>
S: <domain:contact type="admin">sh8013</domain:contact>
S: <domain:contact type="tech">sh8013</domain:contact>
S: <domain:ns>
S: <domain:hostObj>ns1.example.com</domain:hostObj>
S: <domain:hostObj>ns1.example.net</domain:hostObj>
S: </domain:ns>
S: <domain:host>ns1.example.com</domain:host>
S: <domain:host>ns2.example.com</domain:host>
S: <domain:clID>ClientX</domain:clID>
S: <domain:crID>ClientY</domain:crID>
S: <domain:crDate>1999-04-03T22:00:00.0Z</domain:crDate>
S: <domain:upID>ClientX</domain:upID>
S: <domain:upDate>1999-12-03T09:00:00.0Z</domain:upDate>
S: <domain:exDate>2005-04-03T22:00:00.0Z</domain:exDate>
S: <domain:trDate>2000-04-08T09:00:00.0Z</domain:trDate>
S: <domain:authInfo>
S: <domain:pw>2fooBAR</domain:pw>
S: </domain:authInfo>
S: </domain:infData>
S: </resData>
S: <extension>
S: <rgp:infData xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0"
S: xsi:schemaLocation="urn:ietf:params:xml:ns:rgp-1.0
S: rgp-1.0.xsd">
S: <rgp:rgpStatus s="redemptionPeriod"/>
S: </rgp:infData>
S: </extension>
S: <trID>
S: <clTRID>ABC-12345</clTRID>
S: <svTRID>54322-XYZ</svTRID>
S: </trID>
S: </response>
S:</epp>
< info>对“pendingRestore”状态的响应扩展的示例:(注意,此处响应和与第一个示例只有扩展元素上不同)
S:<extension>
S: <rgp:infData xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0"
S: xsi:schemaLocation="urn:ietf:params:xml:ns:rgp-1.0
S: rgp-1.0.xsd">
S: <rgp:rgpStatus s="pendingRestore"/>
S: </rgp:infData>
S:</extension>
< info>对“pendingDelete”状态的响应扩展的示例:(注意,此处响应和与第一个示例只有扩展元素上不同)
S:<extension>
S: <rgp:infData xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0"
S: xsi:schemaLocation="urn:ietf:params:xml:ns:rgp-1.0
S: rgp-1.0.xsd">
S: <rgp:rgpStatus s="pendingDelete"/>
S: </rgp:infData>
S:</extension>
4.1.3 < transfer >
此扩展不向EPP < transfer>命令或EPP域映射[2]中描述的< transfer>响应添加任何元素。
4.2 EPP转换(Transform)命令
4.2.1 < create >
此扩展不向EPP < create>命令或< create> response中添加任何元素,这些元素在EPP域映射[2]中描述。
4.2.2 < delete >
此扩展不向EPP < delete>命令或< delete>响应添加任何元素,这些响应在EPP域映射[2]中描述。
4.2.3 < renew >
此扩展不向EPP < renew>命令添加任何元素或<更新>响应中描述的EPP域映射[2]。
4.2.4 < transfer >
此扩展不向EPP < transfer>命令或EPP域映射[2]中描述的< transfer>响应添加任何元素。
4.2.5 < update >
这个扩展定义了额外的元素来扩展EPP < update>命令和响应,EPP域映射[2]中描述了用于赎回宽限期处理的响应。
EPP < update>命令提供一个转换操作,允许客户端更改域对象的状态。注册局宽限期扩展修改基本更新处理,以支持对已经处理了< delete>命令,但名称尚未被清除的域名进行赎回。
EPP域映射的第3.2.5节描述了必须在< update>命令中指定的元素。需要提供至少一个< domain:add>, < domain:rem>,或< domain:chg>元素由该扩展更新,以便如果在< update>命令中指定该扩展,则至少有一个空的< domain:add>, < domain:rem>,或< domain:chg>元素必须存在。这个需求被更新为不允许修改域对象作为赎回宽限期恢复处理的一部分。
除了EPP域映射[2]中描述的EPP命令元素之外,< update>命令必须包含< extension>元素。< extension>元素必须包含一个子元素< rgp:update>元素,该元素标识注册局grace period名称空间和注册局grace period模式的位置。
< rgp:update>元素包含单个< rgp:restore>元素,该元素包含一个可选的< rgp:report>元素,该元素可用于交付一个赎回宽限期还原报告。
< rgp:restore>元素包含一个必需的“op”属性,该属性描述了被请求的赎回宽限期操作。定义了两个值:“request”用于标识不包含还原报告的还原请求,“report”用于标识包含还原报告的还原请求。如需更正,报告可提交多次。如果“op”属性的值是“request”,则< rgp:report>元素必须不存在。如果“op”属性的值是“report”,则必须有一个< rgp:report>元素。
< rgp:report>元素包含以下子元素 :
- 一个< rgp:preData>元素,该元素包含在域名被删除之前存在的域名注册数据的副本。此元素可以同时包含文本和XML标记。
- 一个< rgp:postData>元素,该元素包含提交恢复报告时域名注册数据的副本。此元素可以同时包含文本和XML标记。
- 一个< rgp:delTime>元素,包含域名删除请求发送到服务器的日期和时间。
- 一个< rgp:resTime>元素,包含原始< rgp:restore>命令发送到服务器的日期和时间。
- 一个< rgp:resReason>元素,其中包含恢复域名的原因的简要说明。
- 一个< rgp:statement>元素,其中包含一个文本语句,客户端尚未恢复该域名,以便为自己或任何第三方使用或出售该域名。与此语句相关的支持信息可以在< rgp:下面描述的其他>元素中提供。如果没有使用English(值“en”)来表示语句,那么可以使用一个可选的“lang”属性来标识语言。
- 第二个< rgp:语句>元素,其中包含一个文本语句,表示还原报告中的信息是客户端所知的最佳事实。如果没有使用English(值“en”)来表示语句,那么可以使用一个可选的“lang”属性来标识语言。
- 一个可选的< rgp:other>元素,包含支持客户端提供的语句所需的任何信息。此元素可以同时包含文本和XML标记。
更详细的信息描述的信息需要提供的恢复报告可从ICANN。
没有恢复报告的 < update> 命令的示例:
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
C: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
C: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
C: epp-1.0.xsd">
C: <command>
C: <update>
C: <domain:update
C: xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
C: xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0
C: domain-1.0.xsd">
C: <domain:name>example.com</domain:name>
C: <domain:chg/>
C: </domain:update>
C: </update>
C: <extension>
C: <rgp:update xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0"
C: xsi:schemaLocation="urn:ietf:params:xml:ns:rgp-1.0
C: rgp-1.0.xsd">
C: <rgp:restore op="request"/>
C: </rgp:update>
C: </extension>
C: <clTRID>ABC-12345</clTRID>
C: </command>
C:</epp>
带有恢复报告的< update>命令的示例:
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
C: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
C: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
C: epp-1.0.xsd">
C: <command>
C: <update>
C: <domain:update
C: xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
C: xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0
C: domain-1.0.xsd">
C: <domain:name>example.com</domain:name>
C: <domain:chg/>
C: </domain:update>
C: </update>
C: <extension>
C: <rgp:update xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0"
C: xsi:schemaLocation="urn:ietf:params:xml:ns:rgp-1.0
C: rgp-1.0.xsd">
C: <rgp:restore op="report">
C: <rgp:report>
C: <rgp:preData>Pre-delete registration data goes here.
C: Both XML and free text are allowed.</rgp:preData>
C: <rgp:postData>Post-restore registration data goes here.
C: Both XML and free text are allowed.</rgp:postData>
C: <rgp:delTime>2003-07-10T22:00:00.0Z</rgp:delTime>
C: <rgp:resTime>2003-07-20T22:00:00.0Z</rgp:resTime>
C: <rgp:resReason>Registrant error.</rgp:resReason>
C: <rgp:statement>This registrar has not restored the
C: Registered Name in order to assume the rights to use
C: or sell the Registered Name for itself or for any
C: third party.</rgp:statement>
C: <rgp:statement>The information in this report is
C: true to best of this registrar's knowledge, and this
C: registrar acknowledges that intentionally supplying
C: false information in this report shall constitute an
C: incurable material breach of the
C: Registry-Registrar Agreement.</rgp:statement>
C: <rgp:other>Supporting information goes
C: here.</rgp:other>
C: </rgp:report>
C: </rgp:restore>
C: </rgp:update>
C: </extension>
C: <clTRID>ABC-12345</clTRID>
C: </command>
C:</epp>
当没有恢复报告的扩展< update>命令被成功处理时,EPP响应与EPP域映射[2]中描述的一样,只是添加了一个扩展元素来描述处理< update>命令的grace period状态。extension元素包含一个单独的子元素(< upData>),它本身包含一个单独的子元素(< rgpStatus>),如果< restore>请求被接受,这个子元素包含一个单独的属性“s”,其值必须是“pendingRestore”。
“restore request” < update>响应的示例:
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"
S: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
S: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0
S: epp-1.0.xsd">
S: <response>
S: <result code="1000">
S: <msg lang="en">Command completed successfully</msg>
S: </result>
S: <extension>
S: <rgp:upData xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0"
S: xsi:schemaLocation="urn:ietf:params:xml:ns:rgp-1.0
S: rgp-1.0.xsd">
S: <rgp:rgpStatus s="pendingRestore"/>
S: </rgp:upData>
S: </extension>
S: <trID>
S: <clTRID>ABC-12345</clTRID>
S: <svTRID>54321-XYZ</svTRID>
S: </trID>
S: </response>
S:</epp>