文章目录

  • 1. 引言
    • 1.1 域名对象和主机对象的关系
  • 2. 对象属性
    • 2.1 域名和主机名
    • 2.2 联系人和客户标识符
    • 2.3 状态值
    • 2.4 日期和时间
    • 2.5 有效期
    • 2.6 授权信息
    • 2.7 其他DNS资源记录属性
  • 3. EPP命令映射
    • 3.1 EPP查询(Query)命令
      • 3.1.1 < check >
      • 3.1.2 < info >
      • 3.1.3 < transfer >
    • 3.2 EPP转换(Transform)命令
      • 3.2.1 < create >
      • 3.2.2 < delete >
      • 3.2.3 < renew >
      • 3.2.4 < transfer >
      • 3.2.5 < update >
    • 3.3 离线审查请求行动
  • 参考文献

1. 引言

本文档介绍了EPP中Internet域名映射,该映射使用的是XML 1.0和XML Schema [W3C.REC-xmlschema-1-20041028] 和 [W3C.REC-xmlschema-2-20041028]。

1.1 域名对象和主机对象的关系

主机对象的EPP映射在[RFC5732]中描述。本文档假设域名对象(domain name objects)从属(subordinate)主机名对象(host name objects)具有上级关系。例如,域名“example.com”是主机名“ns1.example.com”的上级。不能保持这种关系的EPP操作(如对象转移)必须被显式禁止。

主机名对象可以在非父级域名对象的存储库(repository)中创建。例如,可以在".example" 存储库中创建主机名"ns1.example.com" ,从而将".example" 中的域名授权(delegated)给该主机。这种主机在本规范中称为“external” host,因为主机的名称不属于用于授权的存储库的名称空间。

host 是 external 还是 internal,和该 host 以授权host身份存在的repository相关。internal host 是否是从属(subordinate)的,和repository中的域(damain)相关。例如,主机ns1.example1.com是域example1.com的从属主机,但它不是域example2.com的从属主机。ns1.example1.com可以用作example2.com的名称服务器。在这种情况下,ns1.example1.com必须被视为一个internal主机,服从于控制同一存储库中下属主机上的操作的规则。

用于域授权(domain delegation)名称服务器主机(name server hosts)可以作为现有主机对象(host objects)引用(references),或者是描述主机机器(host machine)域属性(damain attributes)服务器操作员(server operator)必须始终如一地使用一个名称服务器规范表单。在EPP greeting 中声明支持主机对象的服务器操作员必须不允许使用域属性描述名称服务器主机机器(name server host machine)。声明不支持主机对象的服务器操作员必须允许域属性描述名称服务器主机。当使用域属性描述名称服务器主机机器时,应该只有在需要生成DNS glue记录时才需要IP地址。

名称服务器是在<domain:ns>元素中指定的。此元素必须包含一个或多个<domain:hostObj>元素或一个或多个<domain:hostAttr>元素。一个<domain:hostObj>元素包含一个已知名称服务器主机对象的完全限定名。一个<domain:hostAttr>元素包含以下子元素:

  • 一个<domain:hostName>元素,其中包含主机的完全限定名。
  • 0个或多个可选<domain:hostAddr>元素,其中包含要与主机关联的IP地址。每个元素可以包含一个“ip”属性来标识ip地址格式。属性值“v4”表示IPv4地址格式。属性值“v6”用于说明IPv6地址格式。如果没有指定“ip”属性,则默认属性值为“v4”。IP地址语法要求在EPP主机映射[RFC5732]的2.5节中描述。

域example.com的示例主机对象名称服务器元素:

   <domain:ns><domain:hostObj>ns1.example.net</domain:hostObj><domain:hostObj>ns2.example.net</domain:hostObj></domain:ns>

域example.com的主机属性名称服务器元素示例:

   <domain:ns><domain:hostAttr><domain:hostName>ns1.example.net</domain:hostName><domain:hostAddrip="v4">192.0.2.2</domain:hostAddr><domain:hostAddrip="v6">1080:0:0:0:8:800:200C:417A</domain:hostAddr></domain:hostAttr><domain:hostAttr><domain:hostName>ns2.example.net</domain:hostName></domain:hostAttr></domain:ns>

2. 对象属性

一个EPP域对象具有的属性和对应值可由sponsoring客户端服务器(sever)查看和修改。本节详细描述每种属性的类型。这里描述的属性值的形式语法可以在本文档的“形式语法”部分和适当的规范引用中找到。

2.1 域名和主机名

本文档中描述的域名和主机名语法必须符合[RFC0952]和[RFC1123]。在撰写本文时,RFC3490 [RFC3490]描述了使用特定ASCII名称标签表示非ASCII名称标签的标准。随着开发国际化域名标准的工作的进展,这些一致性需求可能会发生变化。服务器可以将允许的域名限制为特定的顶级域、二级域或服务器具有权威性的其他域。当这些名称存储在DNS zone中时,后面的点是隐式的,并且在交换主机名和域名时不能提供。

2.2 联系人和客户标识符

所有EPP联系人都由一个服务器唯一标识符标识。联系标识符是具有指定最小长度、指定最大长度和指定格式的字符串。联系人标识符使用[RFC5730]中描述的“clIDType”客户机标识符语法。

2.3 状态值

域名对象必须具有最少一个关联的状态值。状态值只能由发起(sponsor)域对象的客户机和对象所在的服务器设置。客户机可以使用EPP < update>命令更改域对象的状态。每个状态值可能都伴随着一串人类可读的文本,这些文本描述了应用于对象的状态的基本原理。

客户端绝不能更改服务器设置的状态值。服务器可以根据本地服务器策略更改或覆盖客户端设置的状态值。对象的状态可能由于客户机发起的转换命令或服务器操作符执行的操作而更改。

可以由客户机添加或删除的状态值以“client”作为前缀。可以由服务器添加或删除的相应状态值的前缀为“server”。不以“client”或“server”开头的状态值是服务器管理的(server-managed)

状态值描述:

  • clientDeleteProhibited, serverDeleteProhibited

    阻止删除对象请求

  • clientHold, serverHold

    禁止为对象发布DNS授权信息。

  • clientRenewProhibited, serverRenewProhibited

    阻止续期对象请求

  • clientTransferProhibited, serverTransferProhibited

    拒绝转移对象的请求

  • clientUpdateProhibited, serverUpdateProhibited

    拒绝更新对象(除删除此状态外)的请求

  • inactive

    授权信息未与对象关联。这是首次创建域对象时的默认状态,DNS委托没有关联的主机对象。当删除所有主机对象关联时,服务器也可以设置此状态。

  • ok

    这是没有挂起操作或禁止的对象的正常状态值。此值由服务器在添加或删除其他状态值时设置和删除。

  • pendingCreate, pendingDelete, pendingRenew, pendingTransfer,pendingUpdate

    已执行对象转换命令,但服务器尚未完成该操作。服务器操作员可以出于各种原因延迟操作的完成,比如允许人工检查或第三方操作。使用响应代码1001记录一个正在处理的转换命令,但是其请求的操作是挂起的。

当请求的操作完成时,必须删除pendingCreate、pendingDelete、pendingRenew、pendingTransfer或pendingUpdate状态值。必须使用服务消息通知所有涉及到事务的客户机,该操作已经完成,并且对象的状态已经更改。

“ok”状态不能与任何其他状态相结合。

“pendingDelete”状态不能与“clientdeleteforbidden”或“serverdeleteforbidden”状态相结合。

“pendingRenew”状态不能与“clientrenew”或“serverrenew forbidden”状态相结合。

“pendingTransfer”状态不能与“clienttransferforbidden”或“servertransferforbidden”状态相结合。

“pendingUpdate”状态不能与“clientupdateforbidden”或“serverupdateforbidden”状态相结合。

pendingCreate、pendingDelete、pendingRenew、pendingTransfer和pendingUpdate状态值不能相互组合。

可以使用其他未明确禁止的状态组合。

2.4 日期和时间

日期和时间属性值必须使用公历以通用协调时间(UTC)表示。使用[W3C中定义的大写字母“T”和“Z”字符的扩展日期-时间表单。必须使用REC-xmlschema-2-20041028]来表示日期-时间值,因为XML Schema不支持截断的日期-时间表单或小写的“T”和“Z”字符。

2.5 有效期

域名对象可以具有指定的有效期。如果服务器策略支持域对象有效期,则在创建域对象时定义有效期,可以通过EPP < renew>或< transfer>命令扩展有效期。作为服务器策略的问题,此规范没有定义在域对象的有效期届满时要采取的操作

有效期以年或月为单位,使用“unit”属性指定适当的单位。“unit”属性的有效值为“y”表示年份,“m”表示月份。最小允许值为1(1),最大允许值为99位小数(99)。服务器可能支持较低的最大值。

2.6 授权信息

授权信息与域名对象相关联,以方便转换操作。在创建域对象时分配授权信息,并且将来可能会对其进行更新。该规范描述了基于密码的授权信息,不过也可以使用其他机制。

2.7 其他DNS资源记录属性

虽然DNS允许许多资源记录类型与域相关联,但此映射仅显式指定描述用于域委托和解析的资源记录的元素。可以通过扩展此映射开发提供其他与域相关的资源记录类型的工具。

此映射中描述的供应方法按数据类型分隔离散数据元素。这种数据定义方法允许XML Schema处理器执行基本的语法验证任务,减少了协议处理器所需要的模糊性和解析和语法检查工作量。将数据聚合为不透明字符串的准备和扩展方法是可能的,但是不应该使用这些方法,因为它们对协议处理器施加了额外的解析、解释和验证需求。

3. EPP命令映射

3.1 EPP查询(Query)命令

3.1.1 < check >

< check>命令用于确定域名是否在存储库(repository)中,即域名是否存在。它让用户可以推测能否用< create>命令成功申请一个域名。但具体是否成功还要看服务器的策略。

除了标准的EPP指令元素,< check>命令还必须包含一个< domain:check >元素,用来标识域名命名空间。< domain:check >包含一个或多个< domain:name >,这个元素包含所查询域名的完全限定名。

< check>命令示例:

   C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">C:  <command>C:    <check>C:      <domain:checkC:       xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">C:        <domain:name>example.com</domain:name>C:        <domain:name>example.net</domain:name>C:        <domain:name>example.org</domain:name>C:      </domain:check>C:    </check>C:    <clTRID>ABC-12345</clTRID>C:  </command>C:</epp>

当<check>命令被成功处理时,EPP <resData>元素必须包含一个子<domain:chkData>元素,该元素标识域名称空间。<domain:chkData>元素包含一个或多个<domain:cd>元素,这些元素包含以下子元素:

  • 一个<domain:name>元素,它包含查询域对象的完全限定名。此元素必须包含一个“avail”属性,其值指示在<check>命令完成时对象的可用性(是否可以提供它)。值“1”或“true”表示可以供应对象。值“0”或“false”表示不能供应对象。
  • 一个可选的<domain:reason>元素,它可能在无法供应对象时提供。如果存在,则此元素包含特定于服务器的文本,以帮助解释为什么不能供应对象。此文本必须用之前与客户协商的响应语言表示;如果协商的值不是默认值“en”(英语),那么可以使用一个可选的“lang”属性来标识语言。
    <check>响应的示例:
   S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">S:  <response>S:    <result code="1000">S:      <msg>Command completed successfully</msg>S:    </result>S:    <resData>S:      <domain:chkDataS:       xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">S:        <domain:cd>S:          <domain:name avail="1">example.com</domain:name>S:        </domain:cd>S:        <domain:cd>S:          <domain:name avail="0">example.net</domain:name>S:          <domain:reason>In use</domain:reason>S:        </domain:cd>S:        <domain:cd>S:          <domain:name avail="1">example.org</domain:name>S:        </domain:cd>S:      </domain:chkData>S:    </resData>S:    <trID>S:      <clTRID>ABC-12345</clTRID>S:      <svTRID>54322-XYZ</svTRID>S:    </trID>S:  </response>S:</epp>

如果由于任何原因无法处理<check>命令,则必须返回EPP错误响应。

3.1.2 < info >

EPP 命令用于检索与域名对象关联的信息。此命令的响应可能会根据查询客户端的身份、对授权信息的使用以及对未授权客户端的服务器策略而有所不同。如果查询客户端是发起客户端,则必须返回所有可用信息。
如果查询客户端不是发起客户端,但客户端提供有效的授权信息,则必须返回所有可用信息。如果查询客户机不是发起客户机,并且客户机没有提供有效的授权信息,则服务器策略将确定返回哪些可选元素。

除了标准的EPP命令元素之外,< info>命令必须包含标识域名称空间的<domain:info>元素。<domain:info>元素包含以下子元素:

  • 一个<domain:name>元素,它包含要查询的域对象的完全限定名。一个可选的“hosts”属性可用来控制描述与域对象相关的主机的信息的返回。值“all”(缺省值,可能不存在)返回描述从属主机和委托主机的信息。值“del”返回仅描述已委托主机的信息。值“sub”返回仅描述从属主机的信息。值“none”不返回任何描述委托或从属主机的信息。
  • 一个可选的<domain:authInfo>元素,其中包含与域对象关联的授权信息或与域对象的注册人或关联联系人关联的授权信息。当且仅当给定的authInfo与注册人或联系人对象关联,而不是域对象本身时,必须使用可选的“roid”属性来标识注册人或联系人对象。如果没有提供此元素,或者授权信息无效,服务器策略将确定该命令是否被拒绝,或者是否将响应信息返回给客户机。

没有授权信息的< info>命令:

   C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">C:  <command>C:    <info>C:      <domain:infoC:       xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">C:        <domain:name hosts="all">example.com</domain:name>C:      </domain:info>C:    </info>C:    <clTRID>ABC-12345</clTRID>C:  </command>C:</epp>

带有授权信息的命令:

   C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">C:  <command>C:    <info>C:      <domain:infoC:       xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">C:        <domain:name hosts="all">example.com</domain:name>C:        <domain:authInfo>C:          <domain:pw>2fooBAR</domain:pw>C:        </domain:authInfo>C:      </domain:info>C:    </info>C:    <clTRID>ABC-12345</clTRID>C:  </command>C:</epp>

成功处理< info>命令后,EPP < resData>元素必须包含一个子<domain:infData>元素,该元素标识域名称空间。必须返回非可选的元素;可选元素根据客户端授权和服务器策略返回。<domain:infData>元素包含以下子元素:

  • <domain:name>元素,它包含域对象的完全限定名。

  • <domain:roid>元素,该元素包含在创建对象时分配给域对象的存储库对象标识符。

  • 包含与域关联的当前状态描述符的零个或多个可选<domain:status>元素。

  • 如果服务器支持,一个可选的<domain:registrant>元素和一个或多个可选的<domain:contact>元素,这些元素包含与域对象关联的人类或组织社会信息对象的标识符。

  • 一个可选的<domain:ns>元素,它包含与域对象相关联的委托的主机对象或主机属性(名称服务器)的完全限定名。有关用于指定主机对象或主机属性的元素的描述,请参见第1.1节。

  • 零个或多个可选<domain:host>元素,其中包含存在于此上级域对象下的从属主机对象的完全限定名。

  • 包含发起客户端的标识符的<domain:clID>元素。

  • 一个可选的<domain:crID>元素,它包含创建域对象的客户端的标识符。

  • 一个可选的<domain:crDate>元素,它包含域对象创建的日期和时间。

  • 一个可选的<domain:exDate>元素,它包含标识域对象注册期结束的日期和时间。

  • 一个可选的<domain:upID>元素,它包含最后更新域对象的客户端的标识符。如果域从未被修改过,则此元素不能出现。

  • 一个可选的<domain:upDate>元素,它包含最近的域对象修改的日期和时间。如果域对象从未被修改过,则此元素不能出现。

  • 一个可选的<domain:trDate>元素,其中包含最近一次成功的域对象传输的日期和时间。如果域对象从未被传输,则不能提供此元素。

  • 一个可选的<domain:authInfo>元素,它包含与域对象关联的授权信息。只有在查询客户端是当前发起客户端或客户端使用该命令提供有效的授权信息时,才必须返回此元素。

被授权的客户端收到的< info>响应:

   S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">S:  <response>S:    <result code="1000">S:      <msg>Command completed successfully</msg>S:    </result>S:    <resData>S:      <domain:infDataS:       xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">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>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:    <trID>S:      <clTRID>ABC-12345</clTRID>S:      <svTRID>54322-XYZ</svTRID>S:    </trID>S:  </response>S:</epp>

具有不同信息返回策略的服务器在响应中提供的信息可能较少。

未授权的客户端收到的< info>响应:

   S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">S:  <response>S:    <result code="1000">S:      <msg>Command completed successfully</msg>S:    </result>S:    <resData>S:      <domain:infDataS:       xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">S:        <domain:name>example.com</domain:name>S:        <domain:roid>EXAMPLE1-REP</domain:roid>S:        <domain:clID>ClientX</domain:clID>S:      </domain:infData>S:    </resData>S:    <trID>S:      <clTRID>ABC-12345</clTRID>S:      <svTRID>54322-XYZ</svTRID>S:    </trID>S:  </response>S:</epp>

如果由于任何原因无法处理< info>命令,则必须返回一个EPP错误响应。

3.1.3 < transfer >

EPP < transfer>命令提供了一个查询操作,允许客户端确定挂起和完成的转换请求的实时状态。除了标准的EPP命令元素之外,< transfer>命令必须包含一个值为“query”的“op”属性,以及一个标识域名称空间的< domain:transfer >元素。< domain:transfer >元素包含以下子元素:

  • 一个< domain:name >元素,它包含要查询的域对象的完全限定名。
  • 一个可选的< domain:authInfo >元素,其中包含与域对象关联的授权信息或与域对象的注册人或关联联系人关联的授权信息。当且仅当给定的authInfo与注册人或联系人对象关联时,必须使用可选的“roid”属性来标识注册人或联系人对象,而不是域对象本身。如果没有提供此元素,或者授权信息无效,服务器策略将确定该命令是否被拒绝,或者是否将响应信息返回给客户机。

< transfer>命令的示例:

   C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">C:  <command>C:    <transfer op="query">C:      <domain:transferC:       xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">C:        <domain:name>example.com</domain:name>C:        <domain:authInfo>C:          <domain:pw roid="JD1234-REP">2fooBAR</domain:pw>C:        </domain:authInfo>C:      </domain:transfer>C:    </transfer>C:    <clTRID>ABC-12345</clTRID>C:  </command>C:</epp>

成功处理< transfer>查询命令后,EPP < resData>元素必须包含一个子< domain:trnData >元素,该元素标识域名称空间。< domain:trnData >元素包含以下子元素:

  • 一个< domain:name >元素,它包含域对象的完全限定名。

  • 一个< domain:trStatus >元素,它包含最近的传输请求的状态。一个< domain:reID >元素,它包含请求对象传输的客户端的标识符。

  • 一个< domain:reDate >元素,其中包含请求传输的日期和时间。

  • 一个< domain:acID >元素,它包含一个客户端标识符,该标识符应该在一个挂起的传输请求时起作用。对于所有其他状态类型,该值标识采取指定操作的客户端。

  • 一个< domain:acDate >元素,该元素包含所需的或完成的响应的日期和时间。对于挂起的请求,该值标识服务器采取自动响应操作之前需要响应的日期和时间。对于所有其他状态类型,该值标识请求完成的日期和时间。

  • 一个可选的< domain:exDate >元素,如果< transfer >命令导致或导致有效期发生变化,则该元素包含域对象有效期的结束。

< transfer>查询命令的响应示例:

   S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">S:  <response>S:    <result code="1000">S:      <msg>Command completed successfully</msg>S:    </result>S:    <resData>S:      <domain:trnDataS:       xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">S:        <domain:name>example.com</domain:name>S:        <domain:trStatus>pending</domain:trStatus>S:        <domain:reID>ClientX</domain:reID>S:        <domain:reDate>2000-06-06T22:00:00.0Z</domain:reDate>S:        <domain:acID>ClientY</domain:acID>S:        <domain:acDate>2000-06-11T22:00:00.0Z</domain:acDate>S:        <domain:exDate>2002-09-08T22:00:00.0Z</domain:exDate>S:      </domain:trnData>S:    </resData>S:    <trID>S:      <clTRID>ABC-12345</clTRID>S:      <svTRID>54322-XYZ</svTRID>S:    </trID>S:  </response>S:</epp>

如果由于任何原因无法处理< transfer>查询命令,则必须返回一个EPP错误响应。

3.2 EPP转换(Transform)命令

转换命令通常是实时处理和完成的。服务器操作员可以接收和处理转换命令,但如果在完成请求的操作之前需要人工或第三方检查,则可以推迟完成请求的操作。在这种情况下,服务器必须向客户端返回1001响应代码,以说明已经接收和处理了命令,但是请求的操作正在等待处理。服务器还必须管理作为命令主体的对象的状态,以反映请求的操作的启动和完成。一旦操作完成,必须使用服务消息通知事务中涉及的所有客户端操作已经完成,并且对象的状态已经更改。除了所需的服务消息外,还可以使用其他通知方法。

服务器操作员应该确认客户端被授权对给定对象执行转换命令。未经授权的客户机必须拒绝任何转换对象的尝试,服务器必须向客户机返回2201响应代码,以注意客户机缺少执行请求的命令的权限。

3.2.1 < create >

EPP < create>命令提供了一个转换操作,允许客户端创建域对象。除了标准的EPP命令元素之外,< create>命令必须包含一个< domain:create>元素,该元素标识域名称空间。< domain:create>元素包含以下子元素:

  • 一个< domain:name>元素,它包含要创建的域对象的完全限定名。
  • 一个可选的< domain:period>元素,它包含域对象的初始注册期。如果客户端没有指定,服务器可以定义一个默认的初始注册期。
  • 一个可选的< domain:ns>元素,它包含与域对象相关联的已委托的主机对象或主机属性(名称服务器)的完全限定名,以便为域提供解析服务;有关用于指定主机对象或主机属性的元素的描述,请参见第1.1节。在将主机对象与域对象关联之前,服务器必须知道主机对象。
  • 一个可选的< domain:registrant>元素,包含作为对象注册者与域对象相关联的人员或组织社会信息(联系人)对象的标识符。在contact对象与域对象关联之前,服务器必须知道此对象标识符。联系对象的EPP映射在[RFC5733]中进行了描述。
  • 零个或多个可选< domain:contact>元素,其中包含与域对象关联的其他contact对象的标识符。在联系人对象与域对象关联之前,服务器必须知道联系人对象标识符。
  • 一个< domain:authInfo>元素,其中包含要与域对象关联的授权信息。这个映射包括一个基于密码的身份验证机制,但是模式允许在新的模式中定义新的机制。

< create>命令示例:

   C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">C:  <command>C:    <create>C:      <domain:createC:       xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">C:        <domain:name>example.com</domain:name>C:        <domain:period unit="y">2</domain:period>C:        <domain:ns>C:          <domain:hostObj>ns1.example.net</domain:hostObj>C:          <domain:hostObj>ns2.example.net</domain:hostObj>C:        </domain:ns>C:        <domain:registrant>jd1234</domain:registrant>C:        <domain:contact type="admin">sh8013</domain:contact>C:        <domain:contact type="tech">sh8013</domain:contact>C:        <domain:authInfo>C:          <domain:pw>2fooBAR</domain:pw>C:        </domain:authInfo>C:      </domain:create>C:    </create>C:    <clTRID>ABC-12345</clTRID>C:  </command>C:</epp>

成功处理< create>命令后,EPP < resData>元素必须包含一个子< domain:creData>元素,该元素标识域名称空间。< domain:creData>元素包含以下子元素:

  • 一个< domain:name>元素,它包含域对象的完全限定名。

  • 一个< domain:crDate>元素,它包含域对象创建的日期和时间。

  • 一个可选的< domain:exDate>元素,它包含标识域对象注册期结束的日期和时间。

< create>响应示例:

   S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">S:  <response>S:    <result code="1000">S:      <msg>Command completed successfully</msg>S:    </result>S:    <resData>S:      <domain:creDataS:       xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">S:        <domain:name>example.com</domain:name>S:        <domain:crDate>1999-04-03T22:00:00.0Z</domain:crDate>S:        <domain:exDate>2001-04-03T22:00:00.0Z</domain:exDate>S:      </domain:creData>S:    </resData>S:    <trID>S:      <clTRID>ABC-12345</clTRID>S:      <svTRID>54321-XYZ</svTRID>S:    </trID>S:  </response>S:</epp>

如果由于任何原因无法处理< create>命令,则必须返回一个EPP错误响应。

3.2.2 < delete >

EPP < delete>命令提供了一个转换操作,允许客户端删除域对象。除了标准的EPP命令元素之外,< delete>命令必须包含一个< domain:delete >元素,该元素标识域名称空间。< domain:delete >元素包含以下子元素:

  • 一个< domain:name >元素,它包含要删除的域对象的完全限定名。

如果从属主机对象与域对象相关联,则不应删除域对象。例如,如果域“example.com”存在,主机对象“ns1.example.com”也存在,那么在主机“ns1.example.com”被删除或重命名为存在于不同的上级域之前,不应该删除域“example.com”。当试图执行< delete>命令并由于存在对象关系而失败时,服务器应该通过发送2305错误响应代码来通知客户端存在对象关系。可以使用域对象的< info>查询命令来确定与域对象关联的委托和从属主机对象。

< delete>命令示例:

   C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">C:  <command>C:    <delete>C:      <domain:deleteC:       xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">C:        <domain:name>example.com</domain:name>C:      </domain:delete>C:    </delete>C:    <clTRID>ABC-12345</clTRID>C:  </command>C:</epp>

当< delete>命令被成功处理时,服务器必须使用没有< resData>元素的EPP响应进行响应。

< delete>响应示例:

   S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">S:  <response>S:    <result code="1000">S:      <msg>Command completed successfully</msg>S:    </result>S:    <trID>S:      <clTRID>ABC-12345</clTRID>S:      <svTRID>54321-XYZ</svTRID>S:    </trID>S:  </response>S:</epp>

如果由于任何原因无法处理< delete>命令,则必须返回一个EPP错误响应。

3.2.3 < renew >

EPP < renew>命令提供一个转换操作,允许客户端延长域对象的有效期。除了标准的EPP命令元素之外,< renew>命令必须包含一个< domain:renew >元素,用于标识域名称空间。< domain:renew >元素包含以下子元素:

  • 一个< domain:name >元素,它包含要扩展有效期的域对象的完全限定名。
  • 一个< domain:curExpDate >元素,它包含当前有效期结束的日期。此值确保重复的< renew>命令不会导致多个未预期的成功续订。
  • 一个可选的< domain:period >元素,它包含要添加到域对象的注册期的单元数。可用单元的数量可能受到服务器施加的限制。

< renew>命令示例:

   C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">C:  <command>C:    <renew>C:      <domain:renewC:       xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">C:        <domain:name>example.com</domain:name>C:        <domain:curExpDate>2000-04-03</domain:curExpDate>C:        <domain:period unit="y">5</domain:period>C:      </domain:renew>C:    </renew>C:    <clTRID>ABC-12345</clTRID>C:  </command>C:</epp>

当成功处理了< renew>命令时,EPP < resData>元素必须包含一个子< domain:renData >元素,该元素标识域名称空间。< domain:renData >元素包含以下子元素:

  • 一个< domain:name >元素,它包含域对象的完全限定名。
  • 一个可选的< domain:exDate >元素,它包含标识域对象注册期结束的日期和时间。

< renew>响应示例:

   S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">S:  <response>S:    <result code="1000">S:      <msg>Command completed successfully</msg>S:    </result>S:    <resData>S:      <domain:renDataS:       xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">S:        <domain:name>example.com</domain:name>S:        <domain:exDate>2005-04-03T22:00:00.0Z</domain:exDate>S:      </domain:renData>S:    </resData>S:    <trID>S:      <clTRID>ABC-12345</clTRID>S:      <svTRID>54322-XYZ</svTRID>S:    </trID>S:  </response>S:</epp>

如果由于任何原因不能处理< renew>命令,则必须返回EPP错误响应。

3.2.4 < transfer >

EPP < transfer>命令提供了一个转换操作,该操作允许客户端管理请求来转移域对象的注册商。除了标准的EPP命令元素之外,< transfer>命令必须包含一个< domain:transfer >元素,该元素标识域名称空间。< domain:transfer >元素包含以下子元素:

  • 一个< domain:name >元素,它包含要为其发起 initiate转移请求、取消 cancel转移请求、批准 approve转移请求和拒绝 reject转移请求的域对象的完全限定名。
  • 一个可选的< domain:period >元素,它是转移后,域名对象延长的注册期限。此元素只能在请求转移时使用,否则必须忽略它。该值可能受到注册局策略的限制。
  • 一个< domain:authInfo >元素,其中包含与域对象关联的授权信息或与域对象的注册人或关联联系人关联的授权信息。当且仅当给定的authInfo与注册人或联系人对象关联,而不是域名对象本身时,必须使用可选的“roid”属性来标识注册人或联系人对象。

每个EPP < transfer>命令必须包含一个“op”属性,该属性标识要执行的传输操作。所有属性值的有效值、定义和授权都在[RFC5730]中定义。

域对象的转移必须隐式地转移属于域对象的所有主机对象。例如,如果域对象“example.com”被转移,而主机对象 “ns1.example.com” 存在,则主机对象必须作为 “example.com” 转移过程的一部分被转移。在对域对象执行的EPP < info>命令的响应中列出了在转移域对象时要转移的主机对象。

< transfer>请求命令:

   C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">C:  <command>C:    <transfer op="request">C:      <domain:transferC:       xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">C:        <domain:name>example.com</domain:name>C:        <domain:period unit="y">1</domain:period>C:        <domain:authInfo>C:          <domain:pw roid="JD1234-REP">2fooBAR</domain:pw>C:        </domain:authInfo>C:      </domain:transfer>C:    </transfer>C:    <clTRID>ABC-12345</clTRID>C:  </command>C:</epp>

当< transfer>命令成功处理后,EPP < resData>元素必须包含一个子< domain:trnData >元素,该元素标识域名称空间。< domain:trnData >元素包含为传输查询响应定义的相同子元素。

< transfer>响应示例:

   S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">S:  <response>S:    <result code="1001">S:      <msg>Command completed successfully; action pending</msg>S:    </result>S:    <resData>S:      <domain:trnDataS:       xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">S:        <domain:name>example.com</domain:name>S:        <domain:trStatus>pending</domain:trStatus>S:        <domain:reID>ClientX</domain:reID>S:        <domain:reDate>2000-06-08T22:00:00.0Z</domain:reDate>S:        <domain:acID>ClientY</domain:acID>S:        <domain:acDate>2000-06-13T22:00:00.0Z</domain:acDate>S:        <domain:exDate>2002-09-08T22:00:00.0Z</domain:exDate>S:      </domain:trnData>S:    </resData>S:    <trID>S:      <clTRID>ABC-12345</clTRID>S:      <svTRID>54322-XYZ</svTRID>S:    </trID>S:  </response>S:</epp>

如果由于任何原因无法处理< transfer>命令,则必须返回一个EPP错误响应。

3.2.5 < update >

EPP < update>命令提供了一个转换操作,允许客户端修改域对象的属性。除了标准的EPP命令元素之外,< update>命令必须包含一个< domain:update >元素,该元素标识域名称空间。< domain:update >元素包含以下子元素:

  • 一个< domain:name>元素,它包含要更新的域对象的完全限定名。
  • 可选的< domain:add> 包含要添加到对象的属性值的元素。
  • 一个可选的< domain:rem>元素,它包含要从对象中删除的属性值。
  • 一个可选的< domain:chg>元素,它包含要更改的对象属性值。

如果不扩展命令,则必须提供至少一个< domain:add>,< domain:rem>,或< domain:chg>元素。如果存在< update>扩展,则可以省略所有这些元素。< domain:add>和< domain:rem>元素包含以下子元素:

  • 一个可选的< domain:ns>元素,它包含与域对象相关联的已委托的主机对象或主机属性(名称服务器)的完全限定名,以便为域提供解析服务;有关用于指定主机对象或主机属性的元素的描述,请参见第1.1节。在将主机对象与域对象关联之前,服务器必须知道主机对象。如果使用主机属性指定名称服务器,请注意,不需要使用IP地址元素来标识要删除的名称服务器。在这种情况下,可以安全地忽略IP地址元素。
  • 零个或多个< domain:contact>元素,这些元素包含要与域对象关联或从域对象中删除的contact对象的标识符。在联系人对象与域对象关联之前,服务器必须知道联系人对象标识符。
  • 零个或多个< domain:status>元素,其中包含要应用于或从对象中删除的状态值。在指定要删除的值时,只有属性值是重要的;元素文本不需要匹配要删除的值。

一个< domain:chg>元素包含以下子元素:

  • 一个< domain:registrant>元素,它包含作为对象注册者与域对象相关联的人类或组织社会信息(联系人)对象的标识符。在contact对象与域对象关联之前,服务器必须知道此对象标识符。一个空元素可以用来删除注册者信息。
  • 一个< domain:authInfo>元素,它包含与域对象关联的授权信息。这个映射包括一个基于密码的身份验证机制,但是模式允许在新的模式中定义新的机制。可以在< domain:authInfo>元素中使用一个< domain:null>元素来删除授权信息。

< update>命令示例:

   C:<?xml version="1.0" encoding="UTF-8" standalone="no"?>C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">C:  <command>C:    <update>C:      <domain:updateC:       xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">C:        <domain:name>example.com</domain:name>C:        <domain:add>C:          <domain:ns>C:            <domain:hostObj>ns2.example.com</domain:hostObj>C:          </domain:ns>C:          <domain:contact type="tech">mak21</domain:contact>C:          <domain:status s="clientHold"C:           lang="en">Payment overdue.</domain:status>C:        </domain:add>C:        <domain:rem>C:          <domain:ns>C:            <domain:hostObj>ns1.example.com</domain:hostObj>C:          </domain:ns>C:          <domain:contact type="tech">sh8013</domain:contact>C:          <domain:status s="clientUpdateProhibited"/>C:        </domain:rem>C:        <domain:chg>C:          <domain:registrant>sh8013</domain:registrant>C:          <domain:authInfo>C:            <domain:pw>2BARfoo</domain:pw>C:          </domain:authInfo>C:        </domain:chg>C:      </domain:update>C:    </update>C:    <clTRID>ABC-12345</clTRID>C:  </command>C:</epp>

当成功处理了< update>命令时,服务器必须使用没有< resData>元素的EPP响应进行响应。

< update>响应示例:

   S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">S:  <response>S:    <result code="1000">S:      <msg>Command completed successfully</msg>S:    </result>S:    <trID>S:      <clTRID>ABC-12345</clTRID>S:      <svTRID>54321-XYZ</svTRID>S:    </trID>S:  </response>S:</epp>

如果由于任何原因无法处理< update>命令,则必须返回一个EPP错误响应。

3.3 离线审查请求行动

命令由服务器按照从客户机接收命令的顺序进行处理。虽然服务器生成确认接收和处理命令的即时响应,但是服务器操作员可以在完成请求的操作之前对请求的转换命令进行离线检查。在这种情况下,来自服务器的响应必须清楚地注意到transform命令已经被接收和处理,但是请求的操作正在等待。相应对象的状态必须清楚地反映未决动作的处理。当离线处理完成时,服务器必须通知客户机。

这里包含了描述需要离线检查的< create>命令的示例。注意响应< create>命令返回的结果代码和消息。

   S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">S:  <response>S:    <result code="1001">S:      <msg>Command completed successfully; action pending</msg>S:    </result>S:    <resData>S:      <domain:creDataS:       xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">S:        <domain:name>example.com</domain:name>S:        <domain:crDate>1999-04-03T22:00:00.0Z</domain:crDate>S:        <domain:exDate>2001-04-03T22:00:00.0Z</domain:exDate>S:      </domain:creData>S:    </resData>S:    <trID>S:      <clTRID>ABC-12345</clTRID>S:      <svTRID>54321-XYZ</svTRID>S:    </trID>S:  </response>S:</epp>

域对象返回此响应后的状态必须包括“pendingCreate”。服务器操作员离线检查请求,并通过< poll>命令对服务消息进行排队检索,或者使用带外机制将请求通知客户机,从而将检查结果通知客户机。

服务消息必须包含描述响应< msgQ>元素的子< msg>元素中的通知的文本。此外,EPP < resData>元素必须包含一个子< domain: panData >元素,该元素标识域名称空间。元素< domain: panData >包含以下子元素:

  • 一个< domain:name >元素,它包含域对象的完全限定名。< domain:name >元素包含一个必需的“paResult”属性。一个正的布尔值表示请求已被批准并完成。一个负的布尔值表示请求被拒绝,并且请求的操作没有被执行。
  • 一个< domain:paTRID >元素,该元素包含客户端事务标识符和服务器事务标识符,它们与处理命令的原始响应一起返回。客户端事务标识符是可选的,只有在客户端使用原始的< create>命令提供标识符时才会返回。
  • 一个< domain:paDate >元素,它包含对所请求的操作的审查何时完成的日期和时间描述。

“review completed” 服务消息的示例:

   S:<?xml version="1.0" encoding="UTF-8" standalone="no"?>S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0">S:  <response>S:    <result code="1301">S:      <msg>Command completed successfully; ack to dequeue</msg>S:    </result>S:    <msgQ count="5" id="12345">S:      <qDate>1999-04-04T22:01:00.0Z</qDate>S:      <msg>Pending action completed successfully.</msg>S:    </msgQ>S:    <resData>S:      <domain:panDataS:       xmlns:domain="urn:ietf:params:xml:ns:domain-1.0">S:        <domain:name paResult="1">example.com</domain:name>S:        <domain:paTRID>S:          <clTRID>ABC-12345</clTRID>S:          <svTRID>54321-XYZ</svTRID>S:        </domain:paTRID>S:        <domain:paDate>1999-04-04T22:00:00.0Z</domain:paDate>S:      </domain:panData>S:    </resData>S:    <trID>S:      <clTRID>BCD-23456</clTRID>S:      <svTRID>65432-WXY</svTRID>S:    </trID>S:  </response>S:</epp>

参考文献

https://zhuanlan.zhihu.com/p/43231547 域名和主机名的区别 - 知乎

http://blog.sina.com.cn/s/blog_7204c3360100wajd.html 域名和主机名的区别

EPP-域名映射(RFC5731翻译)相关推荐

  1. EPP-域名注册局宽限期映射(RFC3915翻译)

    文章目录 1. 引言 1.1 文档的约定 2. 赎回宽限期状态图 3. 对象属性 3.1 状态值 3.1 注册数据和辅助信息 3.2 日期和时间 3.3 客户端声明 4. EPP命令映射 4.1 EP ...

  2. 本地nginx多域名映射

    前言: 工作两年多了,一直感觉技术上没有太大的长进,好多东西感觉会但是给别人讲起来的时候又感觉和没学过一样.以后希望能坚持写博客,把看过的东西都一点一滴积累下来.言归正传,今天要说的是nginx与ho ...

  3. linux httpd 域名映射,51CTO博客-专业IT技术博客创作平台-技术成就梦想

    一.DNS服务器的设置 我们知道互联网网是基于TCP/IP协议的,要进行通信必须获得对方的IP地址,这是通过DNS服务器来实现的.因此要想实现虚拟域名首先应当令DNS 服务器接受该虚拟域名,即把它映射 ...

  4. 远程拷贝、查看端口、vim常见快捷键、查找替换命令、grep命令、查看存储空间的命令、chkconfig命令、系统自动启动级别、主机名配置、IP地址配置、域名映射、防火墙设置

    2.1.远程拷贝 (将/export/servers/hadoop上的文件拷贝到bigdate@192.168.1.1:/export/servers/ ) scp –r /export/server ...

  5. 阿里云ECS官网域名映射及Tomcat配置调整,最终使用HTTPS和域名直接访问

    在另一篇文章中,已经讲述了怎么在ECS(Ubantu版)上安装docker和Tomcat,并顺利启动和访问,该篇文章重点说明如何调整Tomcat配置,与域名映射一致,并采用HTTPS访问 一.进行EC ...

  6. nginx做域名映射到指定端口(阿里云服务器、阿里域名服务)

    文章目录 前言 一.初始工作 二.准备工作 1.GCC编译器 2.安装zlib 3.安装pcre.pcre-devel 4.安装openssl 三.nginx 1.下载 2.安装nginx 三.域名映 ...

  7. 公网域名如何解析到内网IP服务器——快解析域名映射外网访问

    在本地搭建主机应用后,由于没有公网IP或没有公网路由权限,在需要发布互联网时,就需要用到外网访问内网的一些方案.由于内网IP在外网不能直接访问,通常就用通过外网域名来访问内网的方法.那么,公网域名如何 ...

  8. nginx实现单主机多域名映射

    最近遇到的一个小问题,记录了一下解决过程,写出来分享给大家. 背景 因为前段时间买了腾讯云3年的云服务器,准备偶尔写点后台代码放上去.正好最近也在计划写个小程序,用这个云服务器作为后台.但是微信小程序 ...

  9. 【已解决】Mac OS 配置host域名映射不生效

    如果你在使用Chrome浏览器,可以使用域名管理工具如LiveHosts添加域名映射即可.

  10. 内网ip如何变成公网ip?快解析转换域名映射外网访问

    内网IP只能在本地内部网络连接访问,当本地搭建服务器部署好相关网站或应用后,在局域网内可以通过内网IP访问,但在外网是无法直接访问异地内网IP端口应用的,只有公网IP才能实现外网访问.但公网IP已经成 ...

最新文章

  1. 从起源、变体到评价指标,一文解读NLP的注意力机制
  2. UnicodeEncodeError: ‘latin-1‘ codec can‘t encode characters in position: ordinal not in range(256)
  3. mac环境下的linux光标快捷键
  4. char* p = 123,字符串在内存中的哪个位置?
  5. 如何保证对象的唯一性
  6. 阿里旺旺在线客服代码 贸易通在线状态代码
  7. 世界上有条件JavaScript是什么?
  8. 利用MySQL存储过程分割字符串
  9. 步进电机为什么无法高速启动?
  10. android 控件覆盖关系,Android设置viewGroup和其子控件两者之间的焦点关系【原创】...
  11. java实现PDF转word,使用jacob插件
  12. linux安装五笔输入法centos,CentOS 7系统怎么安装极点五笔输入法?
  13. IE无法打开internet网站已终止操作的解决的方法
  14. pip install -Uqq 是什么意思?
  15. Windows中的工作组
  16. 适合前端新手的十大网站
  17. 数据中台:建立在数据网络效应之上的赛道
  18. 电脑Wallpaper Engine汉化动态壁纸设置工具,支持HTML、MP4
  19. 微分算子法 求微分方程特解 (超简单)
  20. 关于傅立叶系数的计算公式

热门文章

  1. python0309
  2. 什么是d.ts文件,它是不是typescript文件?
  3. 飞桨AI Studio之加州房价预测——机器学习的Hello world
  4. 不到最后一刻,绝不放弃!
  5. x5开源库后续知识点
  6. Microsoft Surface
  7. android studio代码格式化设置,Android studio kotlin代码格式化操作
  8. HDU 6638 Snowy Smile 线段树+最大子段和
  9. qt水波进度控件设计
  10. 图像处理——人脸情绪识别(python卷积神经网络)