ويب صفحو

کليل ڄاڻ چيڪلي، وڪيپيڊيا مان
سنڌي وڪيپيڊيا جي ويب صفحي جو ڏيک

ويب صفحو يا ويب پيج (انگريزي ٻولي: Web Pageعالمگير ويب ۽ ویب برائوزر لاءِ موزن برقي ڪاغذ آهي. ویب برائوزر، ڪمپيوٽر يا موبائل ۾ اهي ويب صفحا ڏيکاريندا آهن. ويب صفحي جي معني آهي، جيڪو نظر ايندڙ هجي، پر ان کي عام طور ڪمپيوٽر جي هڪ فائيل طور ورتو ويندو آهي، جيڪو هائپرٽيڪسٽ يا ٻي ڪنهن مارڪ اپ ٻولي ۾ لکيل هجي. عام ويب صفحن ۾ هائپرلنڪ ذريعي، هڪ ٻي سان فائيل ڳنڍيل هجن ٿا.

ڪنهن به نيٽورڪ ۾، ویب برائوزر هائپرٽيڪسٽ ٽرانسفر پروٽوڪول (انگريزي ٻولي: Hypertext Transfer Protocol، مخفف: HTTP يا ايڇ ٽي ٽي پي)، ذريعي ڏوراهين ويب سرور مان ويب صفحا ڳولي ڏيکاريندو آهي.

برائوزر[سنواريو]

اصل مضمون جي لاءِ ڏسو ویب برائوزر

ویب برائوزر يا صرف برائوزر، هڪ سافٽويئر آهي، جنهن جي مدد سان عالمگير ويب مان ڄاڻ يا گھربل مواد کي حاصل ڪيو ويندو آهي. هر ويب صفحو، تصويرون، وڊيو مخلتف يونيفارم ريسورس لوڪيٽرس جي مدد سان ڳنڍيل آهن، جڏهن برائوزر ۾ گھربل يو. آر. ايل. لڳائبو ته اها مطلوبه ڄاڻ واپرائيندڙ جي ڪمپيوٽر يا موبائيل تي ڏيکاريندو آهي.



https://www.icann.org/resources/pages/privacy-policy-2021-03-05-en#9


English

Registration data lookup tool Enter a domain name or an Internet number resource (IP Network or ASN) Frequently Asked Questions (FAQ) Lookup By submitting any personal data, I acknowledge and agree that the personal data submitted by me will be processed in accordance with the ICANN Privacy Policy, and agree to abide by the website Terms of Service and the registration data lookup tool Terms of Use. Domain Information Name: PTWAY.NET Registry Domain ID: 2238142138_DOMAIN_NET-VRSN Domain Status: clientDeleteProhibited clientRenewProhibited clientTransferProhibited clientUpdateProhibited Nameservers: NS13.DOMAINCONTROL.COM

NS14.DOMAINCONTROL.COM

Dates Registry Expiration: 2024-03-12 10:30:48 UTC Updated: 2022-10-25 15:21:12 UTC Created: 2018-03-12 10:30:48 UTC Contact Information Registrant: Handle: 1 Name: Registration Private Organization: Domains By Proxy, LLC Kind: individual Mailing Address: DomainsByProxy.com 2155 E Warner Rd, Tempe, Arizona, 85284, US Contact Uri: https://www.godaddy.com/whois/results.aspx?domain=ptway.net Administrative: Handle: 2 Name: Registration Private Organization: Domains By Proxy, LLC Kind: individual Mailing Address: DomainsByProxy.com 2155 E Warner Rd, Tempe, Arizona, 85284, US Contact Uri: https://www.godaddy.com/whois/results.aspx?domain=ptway.net Technical: Handle: 3 Name: Registration Private Organization: Domains By Proxy, LLC Kind: individual Mailing Address: DomainsByProxy.com 2155 E Warner Rd, Tempe, Arizona, 85284, US Contact Uri: https://www.godaddy.com/whois/results.aspx?domain=ptway.net Billing: Handle: 4 Name: Registration Private Organization: Domains By Proxy, LLC Kind: individual Mailing Address: DomainsByProxy.com 2155 E Warner Rd, Tempe, Arizona, 85284, US Contact Uri: https://www.godaddy.com/whois/results.aspx?domain=ptway.net Registrar Information Name: GoDaddy.com, LLC IANA ID: 146 Abuse contact phone: tel:480-624-2505 DNSSEC Information Delegation Signed: Unsigned Authoritative Servers Registry Server URL: https://rdap.verisign.com/net/v1/domain/Ptway.net Last updated from Registry RDAP DB: 2023-03-10 06:35:06 UTC Registrar Server URL: https://rdap.godaddy.com/v1/domain/PTWAY.NET Last updated from Registrar RDAP DB: 2023-03-10 06:35:21 UTC Notices and Remarks Notices: Status Codes

For more information on Whois status codes, please visit https://www.icann.org/epp https://icann.org/epp

RDDS Inaccuracy Complaint Form

URL of the ICANN RDDS Inaccuracy Complaint Form: https://www.icann.org/wicf https://www.icann.org/wicf

Terms of Use

By submitting an inquiry, you agree to these Universal Terms of Service and limitations of warranty. In particular, you agree not to use this data to allow, enable, or otherwise make possible, dissemination or collection of this data, in part or in its entirety, for any purpose, such as the transmission of unsolicited advertising and solicitations of any kind, including spam. You further agree not to use this data to enable high volume, automated or robotic electronic processes designed to collect or compile this data for any purpose, including mining this data for your own personal or commercial purposes, or use this data in any way that violates applicable laws and regulations. https://www.godaddy.com/agreements/showdoc?pageid=5403

Youtube Twitter Linkedin Flickr Facebook Newletters Community Wiki ICANN Blog © Internet Corporation for Assigned Names and Numbers. Privacy Policy Terms of Service Cookies Policy

https://www.icann.org/resources/pages/privacy-policy-2021-03-05-en#7 English

Registration data lookup tool Enter a domain name or an Internet number resource (IP Network or ASN) Frequently Asked Questions (FAQ) Lookup By submitting any personal data, I acknowledge and agree that the personal data submitted by me will be processed in accordance with the ICANN Privacy Policy, and agree to abide by the website Terms of Service and the registration data lookup tool Terms of Use. Domain Information Name: PTWAY.NET Registry Domain ID: 2238142138_DOMAIN_NET-VRSN Domain Status: clientDeleteProhibited clientRenewProhibited clientTransferProhibited clientUpdateProhibited Nameservers: NS13.DOMAINCONTROL.COM

NS14.DOMAINCONTROL.COM

Dates Registry Expiration: 2024-03-12 10:30:48 UTC Updated: 2022-10-25 15:21:12 UTC Created: 2018-03-12 10:30:48 UTC Contact Information Registrant: Handle: 1 Name: Registration Private Organization: Domains By Proxy, LLC Kind: individual Mailing Address: DomainsByProxy.com 2155 E Warner Rd, Tempe, Arizona, 85284, US Contact Uri: https://www.godaddy.com/whois/results.aspx?domain=ptway.net Administrative: Handle: 2 Name: Registration Private Organization: Domains By Proxy, LLC Kind: individual Mailing Address: DomainsByProxy.com 2155 E Warner Rd, Tempe, Arizona, 85284, US Contact Uri: https://www.godaddy.com/whois/results.aspx?domain=ptway.net Technical: Handle: 3 Name: Registration Private Organization: Domains By Proxy, LLC Kind: individual Mailing Address: DomainsByProxy.com 2155 E Warner Rd, Tempe, Arizona, 85284, US Contact Uri: https://www.godaddy.com/whois/results.aspx?domain=ptway.net Billing: Handle: 4 Name: Registration Private Organization: Domains By Proxy, LLC Kind: individual Mailing Address: DomainsByProxy.com 2155 E Warner Rd, Tempe, Arizona, 85284, US Contact Uri: https://www.godaddy.com/whois/results.aspx?domain=ptway.net Registrar Information Name: GoDaddy.com, LLC IANA ID: 146 Abuse contact phone: tel:480-624-2505 DNSSEC Information Delegation Signed: Unsigned Authoritative Servers Registry Server URL: https://rdap.verisign.com/net/v1/domain/Ptway.net Last updated from Registry RDAP DB: 2023-03-10 06:35:06 UTC Registrar Server URL: https://rdap.godaddy.com/v1/domain/PTWAY.NET Last updated from Registrar RDAP DB: 2023-03-10 06:35:21 UTC Notices and Remarks Notices: Status Codes

For more information on Whois status codes, please visit https://www.icann.org/epp https://icann.org/epp

RDDS Inaccuracy Complaint Form

URL of the ICANN RDDS Inaccuracy Complaint Form: https://www.icann.org/wicf https://www.icann.org/wicf

Terms of Use

By submitting an inquiry, you agree to these Universal Terms of Service and limitations of warranty. In particular, you agree not to use this data to allow, enable, or otherwise make possible, dissemination or collection of this data, in part or in its entirety, for any purpose, such as the transmission of unsolicited advertising and solicitations of any kind, including spam. You further agree not to use this data to enable high volume, automated or robotic electronic processes designed to collect or compile this data for any purpose, including mining this data for your own personal or commercial purposes, or use this data in any way that violates applicable laws and regulations. https://www.godaddy.com/agreements/showdoc?pageid=5403

Youtube Twitter Linkedin Flickr Facebook Newletters Community Wiki ICANN Blog © Internet Corporation for Assigned Names and Numbers. Privacy Policy Terms of Service Cookies Policy


English

Registration data lookup tool Enter a domain name or an Internet number resource (IP Network or ASN) Frequently Asked Questions (FAQ) Lookup By submitting any personal data, I acknowledge and agree that the personal data submitted by me will be processed in accordance with the ICANN Privacy Policy, and agree to abide by the website Terms of Service and the registration data lookup tool Terms of Use. Domain Information Name: PTWAY.NET Registry Domain ID: 2238142138_DOMAIN_NET-VRSN Domain Status: clientDeleteProhibited clientRenewProhibited clientTransferProhibited clientUpdateProhibited Nameservers: NS13.DOMAINCONTROL.COM

NS14.DOMAINCONTROL.COM

Dates Registry Expiration: 2024-03-12 10:30:48 UTC Updated: 2022-10-25 15:21:12 UTC Created: 2018-03-12 10:30:48 UTC Contact Information Registrant: Handle: 1 Name: Registration Private Organization: Domains By Proxy, LLC Kind: individual Mailing Address: DomainsByProxy.com 2155 E Warner Rd, Tempe, Arizona, 85284, US Contact Uri: https://www.godaddy.com/whois/results.aspx?domain=ptway.net Administrative: Handle: 2 Name: Registration Private Organization: Domains By Proxy, LLC Kind: individual Mailing Address: DomainsByProxy.com 2155 E Warner Rd, Tempe, Arizona, 85284, US Contact Uri: https://www.godaddy.com/whois/results.aspx?domain=ptway.net Technical: Handle: 3 Name: Registration Private Organization: Domains By Proxy, LLC Kind: individual Mailing Address: DomainsByProxy.com 2155 E Warner Rd, Tempe, Arizona, 85284, US Contact Uri: https://www.godaddy.com/whois/results.aspx?domain=ptway.net Billing: Handle: 4 Name: Registration Private Organization: Domains By Proxy, LLC Kind: individual Mailing Address: DomainsByProxy.com 2155 E Warner Rd, Tempe, Arizona, 85284, US Contact Uri: https://www.godaddy.com/whois/results.aspx?domain=ptway.net Registrar Information Name: GoDaddy.com, LLC IANA ID: 146 Abuse contact phone: tel:480-624-2505 DNSSEC Information Delegation Signed: Unsigned Authoritative Servers Registry Server URL: https://rdap.verisign.com/net/v1/domain/Ptway.net Last updated from Registry RDAP DB: 2023-03-10 06:35:06 UTC Registrar Server URL: https://rdap.godaddy.com/v1/domain/PTWAY.NET Last updated from Registrar RDAP DB: 2023-03-10 06:35:21 UTC Notices and Remarks Notices: Status Codes

For more information on Whois status codes, please visit https://www.icann.org/epp https://icann.org/epp

RDDS Inaccuracy Complaint Form

URL of the ICANN RDDS Inaccuracy Complaint Form: https://www.icann.org/wicf https://www.icann.org/wicf

Terms of Use

By submitting an inquiry, you agree to these Universal Terms of Service and limitations of warranty. In particular, you agree not to use this data to allow, enable, or otherwise make possible, dissemination or collection of this data, in part or in its entirety, for any purpose, such as the transmission of unsolicited advertising and solicitations of any kind, including spam. You further agree not to use this data to enable high volume, automated or robotic electronic processes designed to collect or compile this data for any purpose, including mining this data for your own personal or commercial purposes, or use this data in any way that violates applicable laws and regulations. https://www.godaddy.com/agreements/showdoc?pageid=5403

Youtube Twitter Linkedin Flickr Facebook Newletters Community Wiki ICANN Blog © Internet Corporation for Assigned Names and Numbers. Privacy Policy Terms of Service Cookies Policy


{"objectClassName":"domain","handle":"2238142138_DOMAIN_NET-VRSN","ldhName":"PTWAY.NET","links":[{"value":"https:\/\/rdap.verisign.com\/net\/v1\/domain\/PTWAY.NET","rel":"self","href":"https:\/\/rdap.verisign.com\/net\/v1\/domain\/PTWAY.NET","type":"application\/rdap+json"},{"value":"https:\/\/rdap.godaddy.com\/v1\/domain\/PTWAY.NET","rel":"related","href":"https:\/\/rdap.godaddy.com\/v1\/domain\/PTWAY.NET","type":"application\/rdap+json"}],"status":["client delete prohibited","client renew prohibited","client transfer prohibited","client update prohibited"],"entities":[{"objectClassName":"entity","handle":"146","roles":["registrar"],"publicIds":[{"type":"IANA Registrar ID","identifier":"146"}],"vcardArray":["vcard",[["version",{},"text","4.0"],["fn",{},"text","GoDaddy.com, LLC"]]],"entities":[{"objectClassName":"entity","roles":["abuse"],"vcardArray":["vcard",[["version",{},"text","4.0"],["fn",{},"text",""],["tel",{"type":"voice"},"uri","tel:480-624-2505"],["email",{},"text","abuse@godaddy.com"]]]}]}],"events":[{"eventAction":"registration","eventDate":"2018-03-12T10:30:48Z"},{"eventAction":"expiration","eventDate":"2024-03-12T10:30:48Z"},{"eventAction":"last changed","eventDate":"2022-10-25T15:21:12Z"},{"eventAction":"last update of RDAP database","eventDate":"2023-03-10T03:28:05Z"}],"secureDNS":{"delegationSigned":false},"nameservers":[{"objectClassName":"nameserver","ldhName":"NS13.DOMAINCONTROL.COM"},{"objectClassName":"nameserver","ldhName":"NS14.DOMAINCONTROL.COM"}],"rdapConformance":["rdap_level_0","icann_rdap_technical_implementation_guide_0","icann_rdap_response_profile_0"],"notices":[{"title":"Terms of Use","description":["Service subject to Terms of Use."],"links":[{"href":"https:\/\/www.verisign.com\/domain-names\/registration-data-access-protocol\/terms-service\/index.xhtml","type":"text\/html"}]},{"title":"Status Codes","description":["For more information on domain status codes, please visit https:\/\/icann.org\/epp"],"links":[{"href":"https:\/\/icann.org\/epp","type":"text\/html"}]},{"title":"RDDS Inaccuracy Complaint Form","description":["URL of the ICANN RDDS Inaccuracy Complaint Form: https:\/\/icann.org\/wicf"],"links":[{"href":"https:\/\/icann.org\/wicf","type":"text\/html"}]}]}

في الجمعة، 10 مارس 2023 2:16 ص Sahap Snapchat <snapchatsahap@gmail.com> كتب: Workgroup:QUICInternet-Draft:draft-ietf-quic-ack-frequency-02Published:11 July 2022Intended Status:Standards TrackExpires:12 January 2023Authors: J. Iyengar Fastly

I. Swett Google QUIC Acknowledgement Frequency Abstract This document describes a QUIC extension for an endpoint to control its peer's delaying of acknowledgements.

Note to Readers Discussion of this draft takes place on the QUIC working group mailing list (quic@ietf.org), which is archived at https://mailarchive.ietf.org/arch/search/?email_list=quic. Source code and issues list for this draft can be found at https://github.com/quicwg/ack-frequency.

Working Group information can be found at https://github.com/quicwg.

Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.

Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.

Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

This Internet-Draft will expire on 12 January 2023.

Copyright Notice Copyright (c) 2022 IETF Trust and the persons identified as the document authors. All rights reserved.

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.

▲ Table of Contents 1. Introduction This document describes a QUIC extension for an endpoint to control its peer's delaying of acknowledgements.

1.1. Terms and Definitions The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

In the rest of this document, "sender" refers to a QUIC data sender (and acknowledgement receiver). Similarly, "receiver" refers to a QUIC data receiver (and acknowledgement sender).

An "acknowledgement packet" refers to a QUIC packet that contains only an ACK frame.

This document uses terms, definitions, and notational conventions described in Section 1.2 and Section 1.3 of [QUIC-TRANSPORT].

2. Motivation A receiver acknowledges received packets, but it can delay sending these acknowledgements. The delaying of acknowledgements can impact connection throughput, loss detection and congestion controller performance at a data sender, and CPU utilization at both a data sender and a data receiver.

Reducing the frequency of acknowledgement packets can improve connection and endpoint performance in the following ways:

Sending UDP packets can be noticeably CPU intensive on some platforms. Reducing the number of packets that only contain acknowledgements can therefore reduce the amount of CPU consumed at a data receiver. Experience shows that this cost reduction can be significant for high bandwidth connections. Similarly, receiving and processing UDP packets can also be CPU intensive, and reducing acknowledgement frequency reduces this cost at a data sender. Severely asymmetric link technologies, such as DOCSIS, LTE, and satellite links, connection throughput in the data direction becomes constrained when the reverse bandwidth is filled by acknowledgment packets. When traversing such links, reducing the number of acknowledgments allows connection throughput to scale much further. As discussed in Section 9 however, there can be undesirable consequences to congestion control and loss recovery if a receiver uniltaerally reduces the acknowledgment frequency. A sender's constraints on the acknowledgement frequency need to be taken into account to maximize congestion controller and loss recovery performance.

[QUIC-TRANSPORT] currently specifies a simple delayed acknowledgement mechanism that a receiver can use: send an acknowledgement for every other packet, and for every packet that is received out of order (Section 13.2.1 of [QUIC-TRANSPORT]). This simple mechanism does not allow a sender to signal its constraints. This extension provides a mechanism to solve this problem.

3. Negotiating Extension Use Endpoints advertise their support of the extension described in this document by sending the following transport parameter (Section 7.2 of [QUIC-TRANSPORT]):

min_ack_delay (0xff03de1a): A variable-length integer representing the minimum amount of time in microseconds by which the endpoint can delay an acknowledgement. This limit could be based on the receiver's clock or timer granularity.

An endpoint's min_ack_delay MUST NOT be greater than its max_ack_delay. Endpoints that support this extension MUST treat receipt of a min_ack_delay that is greater than the received max_ack_delay as a connection error of type TRANSPORT_PARAMETER_ERROR. Note that while the endpoint's max_ack_delay transport parameter is in milliseconds (Section 18.2 of [QUIC-TRANSPORT]), min_ack_delay is specified in microseconds.

The min_ack_delay transport parameter is a unilateral indication of support for receiving ACK_FREQUENCY frames. If an endpoint sends the transport parameter, the peer is allowed to send ACK_FREQUENCY frames independent of whether it also sends the min_ack_delay transport parameter or not.

Receiving a min_ack_delay transport parameter indicates that the peer might send ACK_FREQUENCY frames in the future. Until an ACK_FREQUENCY frame is received, receiving this transport parameter does not cause the endpoint to change its acknowledgement behavior.

Endpoints MUST NOT remember the value of the min_ack_delay transport parameter they received. Consequently, ACK_FREQUENCY frames cannot be sent in 0-RTT packets, as per Section 7.4.1 of [QUIC-TRANSPORT].

This Transport Parameter is encoded as per Section 18 of [QUIC-TRANSPORT].

4. ACK_FREQUENCY Frame Delaying acknowledgements as much as possible reduces both work done by the endpoints and network load. An endpoint's loss detection and congestion control mechanisms however need to be tolerant of this delay at the peer. An endpoint signals the frequency it wants to receive ACK frames to its peer using an ACK_FREQUENCY frame, shown below:

ACK_FREQUENCY Frame {

 Type (i) = 0xaf,
 Sequence Number (i),
 Ack-Eliciting Threshold (i),
 Request Max Ack Delay (i),
 Reserved (6),
 Ignore CE (1),
 Ignore Order (1)

} Following the common frame format described in Section 12.4 of [QUIC-TRANSPORT], ACK_FREQUENCY frames have a type of 0xaf, and contain the following fields:

Sequence Number: A variable-length integer representing the sequence number assigned to the ACK_FREQUENCY frame by the sender to allow receivers to ignore obsolete frames, see Section 5.

Ack-Eliciting Threshold: A variable-length integer representing the maximum number of ack-eliciting packets the recipient of this frame can receive without sending an acknowledgment. In other words, an acknowledgement is sent when more than this number of ack-eliciting packets have been received. Since this is a maximum value, a receiver can send an acknowledgement earlier. A value of 0 results in a receiver immediately acknowledging every ack-eliciting packet.

Request Max Ack Delay: A variable-length integer representing the value to which the endpoint requests the peer update its max_ack_delay (Section 18.2 of [QUIC-TRANSPORT]). The value of this field is in microseconds, unlike the 'max_ack_delay' transport parameter, which is in milliseconds. Sending a value smaller than the min_ack_delay advertised by the peer is invalid. Receipt of an invalid value MUST be treated as a connection error of type PROTOCOL_VIOLATION.

Reserved: This field has no meaning in this version of ACK_FREQUENCY. The value of this field MUST be 0x00. Receipt of any other value MUST be treated as a connection error of type FRAME_ENCODING_ERROR.

Ignore CE: A 1-bit field representing a boolean truth value. This field is set to true by an endpoint that does not wish to receive an immediate acknowledgement when the peer receives CE-marked packets (Section 7.1). 0 represents 'false' and 1 represents 'true'.

Ignore Order: A 1-bit field representing a boolean truth value. This field is set to true by an endpoint that does not wish to receive an immediate acknowledgement when the peer receives a packet out of order (Section 7.1). 0 represents 'false' and 1 represents 'true'.

ACK_FREQUENCY frames are ack-eliciting. However, their loss does not require retransmission if an ACK_FREQUENCY frame with a larger Sequence Number value has been sent.

An endpoint MAY send ACK_FREQUENCY frames multiple times during a connection and with different values.

An endpoint will have committed a max_ack_delay value to the peer, which specifies the maximum amount of time by which the endpoint will delay sending acknowledgments. When the endpoint receives an ACK_FREQUENCY frame, it MUST update this maximum time to the value proposed by the peer in the Request Max Ack Delay field.

5. Multiple ACK_FREQUENCY Frames An endpoint can send multiple ACK_FREQUENCY frames, and each one of them can have different values in all fields. An endpoint MUST use a sequence number of 0 for the first ACK_FREQUENCY frame it constructs and sends, and a strictly increasing value thereafter.

An endpoint MUST allow reordered ACK_FREQUENCY frames to be received and processed, see Section 13.3 of [QUIC-TRANSPORT].

On the first received ACK_FREQUENCY frame in a connection, an endpoint MUST immediately record all values from the frame. The sequence number of the frame is recorded as the largest seen sequence number. The new Ack-Eliciting Threshold and Request Max Ack Delay values MUST be immediately used for delaying acknowledgements; see Section 7.

On a subsequently received ACK_FREQUENCY frame, the endpoint MUST check if this frame is more recent than any previous ones, as follows:

If the frame's sequence number is not greater than the largest one seen so far, the endpoint MUST ignore this frame. If the frame's sequence number is greater than the largest one seen so far, the endpoint MUST immediately replace old recorded state with values received in this frame. The endpoint MUST start using the new values immediately for delaying acknowledgements; see Section 7. The endpoint MUST also replace the recorded sequence number. 6. IMMEDIATE_ACK Frame A sender can use an ACK_FREQUENCY frame to reduce the number of acknowledgements sent by a receiver, but doing so increases the chances that time-sensitive feedback is delayed as well. For example, as described in Section 9.3, delaying acknowledgements can increase the time it takes for a sender to detect packet loss. The IMMEDIATE_ACK frame helps mitigate this problem.

An IMMEDIATE_ACK frame can be useful in other situations as well. For example, it can be used with a PING frame (Section 19.2 of [QUIC-TRANSPORT]) if a sender wants an immediate RTT measurement or if a sender wants to establish receiver liveness as quickly as possible.

An endpoint SHOULD send a packet containing an ACK frame immediately upon receiving an IMMEDIATE_ACK frame. An endpoint MAY delay sending an ACK frame despite receiving an IMMEDIATE_ACK frame. For example, an endpoint might do this if a large number of received packets contain an IMMEDIATE_ACK or if the endpoint is under heavy load.

IMMEDIATE_ACK Frame {

 Type (i) = 0xac,

} 7. Sending Acknowledgments Prior to receiving an ACK_FREQUENCY frame, endpoints send acknowledgements as specified in Section 13.2.1 of [QUIC-TRANSPORT].

On receiving an ACK_FREQUENCY frame and updating its recorded max_ack_delay and Ack-Eliciting Threshold values (Section 5), the endpoint MUST send an acknowledgement when one of the following conditions are met:

Since the last acknowledgement was sent, the number of received ack-eliciting packets is greater than or equal to the recorded Ack-Eliciting Threshold. Since the last acknowledgement was sent, max_ack_delay amount of time has passed. Section 7.1, Section 7.2, and Section 7.3 describe exceptions to this strategy.

An endpoint is expected to bundle acknowledgements when possible. Every time an acknowledgement is sent, bundled or otherwise, all counters and timers related to delaying of acknowledgments are reset.

The receiver of an ACK_FREQUENCY frame can continue to process multiple available packets before determining whether to send an ACK frame in response, as stated in Section 13.2.2 of [QUIC-TRANSPORT].

7.1. Response to Out-of-Order Packets As specified in Section 13.2.1 of [QUIC-TRANSPORT], endpoints are expected to send an acknowledgement immediately on receiving a reordered ack-eliciting packet. This extension modifies this behavior.

If the endpoint has not yet received an ACK_FREQUENCY frame, or if the most recent frame received from the peer has an Ignore Order value of false (0x00), the endpoint MUST immediately acknowledge any subsequent packets that are received out of order.

If the most recent ACK_FREQUENCY frame received from the peer has an Ignore Order value of true (0x01), the endpoint does not make this exception. That is, the endpoint MUST NOT send an immediate acknowledgement in response to packets received out of order, and instead continues to use the peer's Ack-Eliciting Threshold and max_ack_delay thresholds for sending acknowledgements.

7.2. Expediting Congestion Signals An endpoint SHOULD send an immediate acknowledgement when a packet marked with the ECN Congestion Experienced (CE) codepoint in the IP header is received and the previously received packet was not marked CE.

Doing this maintains the peer's response time to congestion events, while also reducing the ACK rate compared to Section 13.2.1 of [QUIC-TRANSPORT] during extreme congestion or when peers are using DCTCP [RFC8257] or other congestion controllers that mark more frequently than classic ECN [RFC3168].

If the most recent ACK_FREQUENCY frame an endpoint has received from the peer has an Ignore CE value of true (0x01), receipt of a CE marked packet SHOULD NOT cause an endpoint to send an immediate acknowledgement. The endpoint still sends an immediate acknowledgement if it would have for a non CE marked packet. If an immediate acknowledgement is not sent, the CE marks are reported in the next acknowledgement.

The Ignore-CE bit SHOULD NOT be set if the sender sets ECT(1) in its outgoing packets, such as with L4S, because it delays the congestion controller's ability to quickly respond to congestion.

7.3. Batch Processing of Packets For performance reasons, an endpoint can receive incoming packets from the underlying platform in a batch of multiple packets. This batch can contain enough packets to cause multiple acknowledgements to be sent.

To avoid sending multiple acknowledgements in rapid succession, an endpoint MAY process all packets in a batch before determining whether a threshold has been met and an acknowledgement is to be sent in response.

8. Computation of Probe Timeout Period On sending an update to the peer's max_ack_delay, an endpoint can use this new value in later computations of its Probe Timeout (PTO) period; see Section 5.2.1 of [QUIC-RECOVERY]. The endpoint MUST however wait until the ACK_FREQUENCY frame that carries this new value is acknowledged by the peer.

Until the frame is acknowledged, the endpoint MUST use the greater of the current max_ack_delay and the value that is in flight when computing the PTO period. Doing so avoids spurious PTOs that can be caused by an update that increases the peer's max_ack_delay.

While it is expected that endpoints will have only one ACK_FREQUENCY frame in flight at any given time, this extension does not prohibit having more than one in flight. When using max_ack_delay for PTO computations, endpoints MUST use the maximum of the current value and all those in flight.

When the number of in-flight ack-eliciting packets is larger than the ACK-Eliciting Threshold, an endpoint can expect that the peer will not need to wait for its max_ack_delay period before sending an acknowledgement. In such cases, the endpoint MAY therefore exclude the peer's 'max_ack_delay' from its PTO calculation. When Ignore Order is enabled and loss causes the peer to not receive enough packets to trigger an immediate acknowledgement, the receiver will wait 'max_ack_delay', increasing the chances of a premature PTO. Therefore, if Ignore Order is enabled, the PTO MUST be larger than the peer's 'max_ack_delay'.

9. Determining Acknowledgement Frequency This section provides some guidance on a sender's choice of acknowledgment frequency and discusses some additional considerations. Implementers can select an appropriate strategy to meet the needs of their applications and congestion controllers.

9.1. Congestion Control A sender needs to be responsive to notifications of congestion, such as a packet loss or an ECN CE marking. Also, window-based congestion controllers that strictly adhere to packet conservation, such as the one defined in [QUIC-RECOVERY], rely on receipt of acknowledgments to send additional data into the network, and will suffer degraded performance if acknowledgments are delayed excessively.

To enable a sender to respond to potential network congestion, a sender SHOULD cause a receiver to send an acknowledgement at least once per RTT if there are unacknowledged ack-eliciting packets in flight. A sender can accomplish this by sending an IMMEDIATE_ACK frame once per round-trip time (RTT), or it can set the Ack-Eliciting Threshold and Request Max Ack Delay values to be no more than a congestion window and an estimated RTT, respectively.

9.2. Burst Mitigation Receiving an acknowledgement can allow a sender to release new packets into the network. If a sender is designed to rely on the timing of peer acknowledgments ("ACK clock"), delaying acknowledgments can cause undesirable bursts of data into the network. A sender MUST limit such bursts. In keeping with Section 7.7 of [QUIC-RECOVERY], a sender can either employ pacing or cause a receiver to send an acknowledgement for at least each initial congestion window of received data.

9.3. Loss Detection and Timers Acknowledgements are fundamental to reliability in QUIC. Consequently, delaying or reducing the frequency of acknowledgments can cause loss detection at the sender to be delayed.

A QUIC sender detects loss using packet thresholds on receiving an acknowledgement (Section 6.1.1 of [QUIC-RECOVERY]); delaying the acknowledgement therefore delays this method of detecting losses.

Reducing acknowledgement frequency reduces the number of RTT samples that a sender receives (Section 5 of [QUIC-RECOVERY]), making a sender's RTT estimate less responsive to changes in the path's RTT. As a result, any mechanisms that rely on an accurate RTT estimate, such as time-threshold loss detection (Section 6.1.2 of [QUIC-RECOVERY]) or Probe Timeout (Section 6.2 of [QUIC-RECOVERY]), will be less responsive to changes in the path's RTT, resulting in either delayed or unnecessary packet transmissions.

To limit these consequences of reduced acknowledgement frequency, a sender SHOULD cause a receiver to send an acknowledgement at least once per RTT if there are unacknowledged ack-eliciting packets in flight. A sender can accomplish this by sending an IMMEDIATE_ACK frame once per round-trip time (RTT), or it can set the Ack-Eliciting Threshold and Request Max Ack Delay values to be no more than a congestion window and an estimated RTT, respectively.

A sender might use timers to detect loss of PMTUD probe packets. A sender SHOULD bundle an IMMEDIATE_ACK frame with any PTMUD probes to avoid triggering such timers.

9.4. Connection Migration To avoid additional delays to connection migration confirmation when using this extension, a client can bundle an IMMEDIATE_ACK frame with the first non-probing frame (Section 9.2 of [QUIC-TRANSPORT]) it sends or it can send only an IMMEDIATE_ACK frame, which is a non-probing frame.

An endpoint's congestion controller and RTT estimator are reset upon confirmation of migration (Section 9.4 of [QUIC-TRANSPORT]), which can impact the number of acknowledgements received after migration. An endpoint that has sent an ACK_FREQUENCY frame earlier in the connection SHOULD update and send a new ACK_FREQUENCY frame immediately upon confirmation of connection migration.

10. Security Considerations TBD.

11. IANA Considerations TBD.

12. References 12.1. Normative References [QUIC-TRANSPORT] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based Multiplexed and Secure Transport", RFC 9000, DOI 10.17487/RFC9000, May 2021, <https://www.rfc-editor.org/rfc/rfc9000>. [QUIC-RECOVERY] Iyengar, J., Ed. and I. Swett, Ed., "QUIC Loss Detection and Congestion Control", RFC 9002, DOI 10.17487/RFC9002, May 2021, <https://www.rfc-editor.org/rfc/rfc9002>. [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/rfc/rfc2119>. [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/rfc/rfc8174>. 12.2. Informative References [RFC8257] Bensley, S., Thaler, D., Balasubramanian, P., Eggert, L., and G. Judd, "Data Center TCP (DCTCP): TCP Congestion Control for Data Centers", RFC 8257, DOI 10.17487/RFC8257, October 2017, <https://www.rfc-editor.org/rfc/rfc8257>. [RFC3168] Ramakrishnan, K., Floyd, S., and D. Black, "The Addition of Explicit Congestion Notification (ECN) to IP", RFC 3168, DOI 10.17487/RFC3168, September 2001, <https://www.rfc-editor.org/rfc/rfc3168>. Appendix A. Change Log RFC Editor's Note: Please remove this section prior to publication of a final version of this document.

Acknowledgments The following people directly contributed key ideas that shaped this draft: Bob Briscoe, Kazuho Oku, Marten Seemann.

Authors' Addresses Jana Iyengar Fastly Email: jri.ietf@gmail.com Ian Swett Google Email: ianswett@google.com https://github.com/ietf-tools/datatracker/tree/main/docker


في الجمعة، 10 مارس 2023 2:16 ص Sahap Snapchat <snapchatsahap@gmail.com> كتب: Workgroup:QUICInternet-Draft:draft-ietf-quic-ack-frequency-02Published:11 July 2022Intended Status:Standards TrackExpires:12 January 2023Authors: J. Iyengar Fastly

I. Swett Google QUIC Acknowledgement Frequency Abstract This document describes a QUIC extension for an endpoint to control its peer's delaying of acknowledgements.

Note to Readers Discussion of this draft takes place on the QUIC working group mailing list (quic@ietf.org), which is archived at https://mailarchive.ietf.org/arch/search/?email_list=quic. Source code and issues list for this draft can be found at https://github.com/quicwg/ack-frequency.

Working Group information can be found at https://github.com/quicwg.

Status of This Memo This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.

Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.

Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

This Internet-Draft will expire on 12 January 2023.

Copyright Notice Copyright (c) 2022 IETF Trust and the persons identified as the document authors. All rights reserved.

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.

▲ Table of Contents 1. Introduction This document describes a QUIC extension for an endpoint to control its peer's delaying of acknowledgements.

1.1. Terms and Definitions The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.

In the rest of this document, "sender" refers to a QUIC data sender (and acknowledgement receiver). Similarly, "receiver" refers to a QUIC data receiver (and acknowledgement sender).

An "acknowledgement packet" refers to a QUIC packet that contains only an ACK frame.

This document uses terms, definitions, and notational conventions described in Section 1.2 and Section 1.3 of [QUIC-TRANSPORT].

2. Motivation A receiver acknowledges received packets, but it can delay sending these acknowledgements. The delaying of acknowledgements can impact connection throughput, loss detection and congestion controller performance at a data sender, and CPU utilization at both a data sender and a data receiver.

Reducing the frequency of acknowledgement packets can improve connection and endpoint performance in the following ways:

Sending UDP packets can be noticeably CPU intensive on some platforms. Reducing the number of packets that only contain acknowledgements can therefore reduce the amount of CPU consumed at a data receiver. Experience shows that this cost reduction can be significant for high bandwidth connections. Similarly, receiving and processing UDP packets can also be CPU intensive, and reducing acknowledgement frequency reduces this cost at a data sender. Severely asymmetric link technologies, such as DOCSIS, LTE, and satellite links, connection throughput in the data direction becomes constrained when the reverse bandwidth is filled by acknowledgment packets. When traversing such links, reducing the number of acknowledgments allows connection throughput to scale much further. As discussed in Section 9 however, there can be undesirable consequences to congestion control and loss recovery if a receiver uniltaerally reduces the acknowledgment frequency. A sender's constraints on the acknowledgement frequency need to be taken into account to maximize congestion controller and loss recovery performance.

[QUIC-TRANSPORT] currently specifies a simple delayed acknowledgement mechanism that a receiver can use: send an acknowledgement for every other packet, and for every packet that is received out of order (Section 13.2.1 of [QUIC-TRANSPORT]). This simple mechanism does not allow a sender to signal its constraints. This extension provides a mechanism to solve this problem.

3. Negotiating Extension Use Endpoints advertise their support of the extension described in this document by sending the following transport parameter (Section 7.2 of [QUIC-TRANSPORT]):

min_ack_delay (0xff03de1a): A variable-length integer representing the minimum amount of time in microseconds by which the endpoint can delay an acknowledgement. This limit could be based on the receiver's clock or timer granularity.

An endpoint's min_ack_delay MUST NOT be greater than its max_ack_delay. Endpoints that support this extension MUST treat receipt of a min_ack_delay that is greater than the received max_ack_delay as a connection error of type TRANSPORT_PARAMETER_ERROR. Note that while the endpoint's max_ack_delay transport parameter is in milliseconds (Section 18.2 of [QUIC-TRANSPORT]), min_ack_delay is specified in microseconds.

The min_ack_delay transport parameter is a unilateral indication of support for receiving ACK_FREQUENCY frames. If an endpoint sends the transport parameter, the peer is allowed to send ACK_FREQUENCY frames independent of whether it also sends the min_ack_delay transport parameter or not.

Receiving a min_ack_delay transport parameter indicates that the peer might send ACK_FREQUENCY frames in the future. Until an ACK_FREQUENCY frame is received, receiving this transport parameter does not cause the endpoint to change its acknowledgement behavior.

Endpoints MUST NOT remember the value of the min_ack_delay transport parameter they received. Consequently, ACK_FREQUENCY frames cannot be sent in 0-RTT packets, as per Section 7.4.1 of [QUIC-TRANSPORT].

This Transport Parameter is encoded as per Section 18 of [QUIC-TRANSPORT].

4. ACK_FREQUENCY Frame Delaying acknowledgements as much as possible reduces both work done by the endpoints and network load. An endpoint's loss detection and congestion control mechanisms however need to be tolerant of this delay at the peer. An endpoint signals the frequency it wants to receive ACK frames to its peer using an ACK_FREQUENCY frame, shown below:

ACK_FREQUENCY Frame {

 Type (i) = 0xaf,
 Sequence Number (i),
 Ack-Eliciting Threshold (i),
 Request Max Ack Delay (i),
 Reserved (6),
 Ignore CE (1),
 Ignore Order (1)

} Following the common frame format described in Section 12.4 of [QUIC-TRANSPORT], ACK_FREQUENCY frames have a type of 0xaf, and contain the following fields:

Sequence Number: A variable-length integer representing the sequence number assigned to the ACK_FREQUENCY frame by the sender to allow receivers to ignore obsolete frames, see Section 5.

Ack-Eliciting Threshold: A variable-length integer representing the maximum number of ack-eliciting packets the recipient of this frame can receive without sending an acknowledgment. In other words, an acknowledgement is sent when more than this number of ack-eliciting packets have been received. Since this is a maximum value, a receiver can send an acknowledgement earlier. A value of 0 results in a receiver immediately acknowledging every ack-eliciting packet.

Request Max Ack Delay: A variable-length integer representing the value to which the endpoint requests the peer update its max_ack_delay (Section 18.2 of [QUIC-TRANSPORT]). The value of this field is in microseconds, unlike the 'max_ack_delay' transport parameter, which is in milliseconds. Sending a value smaller than the min_ack_delay advertised by the peer is invalid. Receipt of an invalid value MUST be treated as a connection error of type PROTOCOL_VIOLATION.

Reserved: This field has no meaning in this version of ACK_FREQUENCY. The value of this field MUST be 0x00. Receipt of any other value MUST be treated as a connection error of type FRAME_ENCODING_ERROR.

Ignore CE: A 1-bit field representing a boolean truth value. This field is set to true by an endpoint that does not wish to receive an immediate acknowledgement when the peer receives CE-marked packets (Section 7.1). 0 represents 'false' and 1 represents 'true'.

Ignore Order: A 1-bit field representing a boolean truth value. This field is set to true by an endpoint that does not wish to receive an immediate acknowledgement when the peer receives a packet out of order (Section 7.1). 0 represents 'false' and 1 represents 'true'.

ACK_FREQUENCY frames are ack-eliciting. However, their loss does not require retransmission if an ACK_FREQUENCY frame with a larger Sequence Number value has been sent.

An endpoint MAY send ACK_FREQUENCY frames multiple times during a connection and with different values.

An endpoint will have committed a max_ack_delay value to the peer, which specifies the maximum amount of time by which the endpoint will delay sending acknowledgments. When the endpoint receives an ACK_FREQUENCY frame, it MUST update this maximum time to the value proposed by the peer in the Request Max Ack Delay field.

5. Multiple ACK_FREQUENCY Frames An endpoint can send multiple ACK_FREQUENCY frames, and each one of them can have different values in all fields. An endpoint MUST use a sequence number of 0 for the first ACK_FREQUENCY frame it constructs and sends, and a strictly increasing value thereafter.

An endpoint MUST allow reordered ACK_FREQUENCY frames to be received and processed, see Section 13.3 of [QUIC-TRANSPORT].

On the first received ACK_FREQUENCY frame in a connection, an endpoint MUST immediately record all values from the frame. The sequence number of the frame is recorded as the largest seen sequence number. The new Ack-Eliciting Threshold and Request Max Ack Delay values MUST be immediately used for delaying acknowledgements; see Section 7.

On a subsequently received ACK_FREQUENCY frame, the endpoint MUST check if this frame is more recent than any previous ones, as follows:

If the frame's sequence number is not greater than the largest one seen so far, the endpoint MUST ignore this frame. If the frame's sequence number is greater than the largest one seen so far, the endpoint MUST immediately replace old recorded state with values received in this frame. The endpoint MUST start using the new values immediately for delaying acknowledgements; see Section 7. The endpoint MUST also replace the recorded sequence number. 6. IMMEDIATE_ACK Frame A sender can use an ACK_FREQUENCY frame to reduce the number of acknowledgements sent by a receiver, but doing so increases the chances that time-sensitive feedback is delayed as well. For example, as described in Section 9.3, delaying acknowledgements can increase the time it takes for a sender to detect packet loss. The IMMEDIATE_ACK frame helps mitigate this problem.

An IMMEDIATE_ACK frame can be useful in other situations as well. For example, it can be used with a PING frame (Section 19.2 of [QUIC-TRANSPORT]) if a sender wants an immediate RTT measurement or if a sender wants to establish receiver liveness as quickly as possible.

An endpoint SHOULD send a packet containing an ACK frame immediately upon receiving an IMMEDIATE_ACK frame. An endpoint MAY delay sending an ACK frame despite receiving an IMMEDIATE_ACK frame. For example, an endpoint might do this if a large number of received packets contain an IMMEDIATE_ACK or if the endpoint is under heavy load.

IMMEDIATE_ACK Frame {

 Type (i) = 0xac,

} 7. Sending Acknowledgments Prior to receiving an ACK_FREQUENCY frame, endpoints send acknowledgements as specified in Section 13.2.1 of [QUIC-TRANSPORT].

On receiving an ACK_FREQUENCY frame and updating its recorded max_ack_delay and Ack-Eliciting Threshold values (Section 5), the endpoint MUST send an acknowledgement when one of the following conditions are met:

Since the last acknowledgement was sent, the number of received ack-eliciting packets is greater than or equal to the recorded Ack-Eliciting Threshold. Since the last acknowledgement was sent, max_ack_delay amount of time has passed. Section 7.1, Section 7.2, and Section 7.3 describe exceptions to this strategy.

An endpoint is expected to bundle acknowledgements when possible. Every time an acknowledgement is sent, bundled or otherwise, all counters and timers related to delaying of acknowledgments are reset.

The receiver of an ACK_FREQUENCY frame can continue to process multiple available packets before determining whether to send an ACK frame in response, as stated in Section 13.2.2 of [QUIC-TRANSPORT].

7.1. Response to Out-of-Order Packets As specified in Section 13.2.1 of [QUIC-TRANSPORT], endpoints are expected to send an acknowledgement immediately on receiving a reordered ack-eliciting packet. This extension modifies this behavior.

If the endpoint has not yet received an ACK_FREQUENCY frame, or if the most recent frame received from the peer has an Ignore Order value of false (0x00), the endpoint MUST immediately acknowledge any subsequent packets that are received out of order.

If the most recent ACK_FREQUENCY frame received from the peer has an Ignore Order value of true (0x01), the endpoint does not make this exception. That is, the endpoint MUST NOT send an immediate acknowledgement in response to packets received out of order, and instead continues to use the peer's Ack-Eliciting Threshold and max_ack_delay thresholds for sending acknowledgements.

7.2. Expediting Congestion Signals An endpoint SHOULD send an immediate acknowledgement when a packet marked with the ECN Congestion Experienced (CE) codepoint in the IP header is received and the previously received packet was not marked CE.

Doing this maintains the peer's response time to congestion events, while also reducing the ACK rate compared to Section 13.2.1 of [QUIC-TRANSPORT] during extreme congestion or when peers are using DCTCP [RFC8257] or other congestion controllers that mark more frequently than classic ECN [RFC3168].

If the most recent ACK_FREQUENCY frame an endpoint has received from the peer has an Ignore CE value of true (0x01), receipt of a CE marked packet SHOULD NOT cause an endpoint to send an immediate acknowledgement. The endpoint still sends an immediate acknowledgement if it would have for a non CE marked packet. If an immediate acknowledgement is not sent, the CE marks are reported in the next acknowledgement.

The Ignore-CE bit SHOULD NOT be set if the sender sets ECT(1) in its outgoing packets, such as with L4S, because it delays the congestion controller's ability to quickly respond to congestion.

7.3. Batch Processing of Packets For performance reasons, an endpoint can receive incoming packets from the underlying platform in a batch of multiple packets. This batch can contain enough packets to cause multiple acknowledgements to be sent.

To avoid sending multiple acknowledgements in rapid succession, an endpoint MAY process all packets in a batch before determining whether a threshold has been met and an acknowledgement is to be sent in response.

8. Computation of Probe Timeout Period On sending an update to the peer's max_ack_delay, an endpoint can use this new value in later computations of its Probe Timeout (PTO) period; see Section 5.2.1 of [QUIC-RECOVERY]. The endpoint MUST however wait until the ACK_FREQUENCY frame that carries this new value is acknowledged by the peer.

Until the frame is acknowledged, the endpoint MUST use the greater of the current max_ack_delay and the value that is in flight when computing the PTO period. Doing so avoids spurious PTOs that can be caused by an update that increases the peer's max_ack_delay.

While it is expected that endpoints will have only one ACK_FREQUENCY frame in flight at any given time, this extension does not prohibit having more than one in flight. When using max_ack_delay for PTO computations, endpoints MUST use the maximum of the current value and all those in flight.

When the number of in-flight ack-eliciting packets is larger than the ACK-Eliciting Threshold, an endpoint can expect that the peer will not need to wait for its max_ack_delay period before sending an acknowledgement. In such cases, the endpoint MAY therefore exclude the peer's 'max_ack_delay' from its PTO calculation. When Ignore Order is enabled and loss causes the peer to not receive enough packets to trigger an immediate acknowledgement, the receiver will wait 'max_ack_delay', increasing the chances of a premature PTO. Therefore, if Ignore Order is enabled, the PTO MUST be larger than the peer's 'max_ack_delay'.

9. Determining Acknowledgement Frequency This section provides some guidance on a sender's choice of acknowledgment frequency and discusses some additional considerations. Implementers can select an appropriate strategy to meet the needs of their applications and congestion controllers.

9.1. Congestion Control A sender needs to be responsive to notifications of congestion, such as a packet loss or an ECN CE marking. Also, window-based congestion controllers that strictly adhere to packet conservation, such as the one defined in [QUIC-RECOVERY], rely on receipt of acknowledgments to send additional data into the network, and will suffer degraded performance if acknowledgments are delayed excessively.

To enable a sender to respond to potential network congestion, a sender SHOULD cause a receiver to send an acknowledgement at least once per RTT if there are unacknowledged ack-eliciting packets in flight. A sender can accomplish this by sending an IMMEDIATE_ACK frame once per round-trip time (RTT), or it can set the Ack-Eliciting Threshold and Request Max Ack Delay values to be no more than a congestion window and an estimated RTT, respectively.

9.2. Burst Mitigation Receiving an acknowledgement can allow a sender to release new packets into the network. If a sender is designed to rely on the timing of peer acknowledgments ("ACK clock"), delaying acknowledgments can cause undesirable bursts of data into the network. A sender MUST limit such bursts. In keeping with Section 7.7 of [QUIC-RECOVERY], a sender can either employ pacing or cause a receiver to send an acknowledgement for at least each initial congestion window of received data.

9.3. Loss Detection and Timers Acknowledgements are fundamental to reliability in QUIC. Consequently, delaying or reducing the frequency of acknowledgments can cause loss detection at the sender to be delayed.

A QUIC sender detects loss using packet thresholds on receiving an acknowledgement (Section 6.1.1 of [QUIC-RECOVERY]); delaying the acknowledgement therefore delays this method of detecting losses.

Reducing acknowledgement frequency reduces the number of RTT samples that a sender receives (Section 5 of [QUIC-RECOVERY]), making a sender's RTT estimate less responsive to changes in the path's RTT. As a result, any mechanisms that rely on an accurate RTT estimate, such as time-threshold loss detection (Section 6.1.2 of [QUIC-RECOVERY]) or Probe Timeout (Section 6.2 of [QUIC-RECOVERY]), will be less responsive to changes in the path's RTT, resulting in either delayed or unnecessary packet transmissions.

To limit these consequences of reduced acknowledgement frequency, a sender SHOULD cause a receiver to send an acknowledgement at least once per RTT if there are unacknowledged ack-eliciting packets in flight. A sender can accomplish this by sending an IMMEDIATE_ACK frame once per round-trip time (RTT), or it can set the Ack-Eliciting Threshold and Request Max Ack Delay values to be no more than a congestion window and an estimated RTT, respectively.

A sender might use timers to detect loss of PMTUD probe packets. A sender SHOULD bundle an IMMEDIATE_ACK frame with any PTMUD probes to avoid triggering such timers.

9.4. Connection Migration To avoid additional delays to connection migration confirmation when using this extension, a client can bundle an IMMEDIATE_ACK frame with the first non-probing frame (Section 9.2 of [QUIC-TRANSPORT]) it sends or it can send only an IMMEDIATE_ACK frame, which is a non-probing frame.

An endpoint's congestion controller and RTT estimator are reset upon confirmation of migration (Section 9.4 of [QUIC-TRANSPORT]), which can impact the number of acknowledgements received after migration. An endpoint that has sent an ACK_FREQUENCY frame earlier in the connection SHOULD update and send a new ACK_FREQUENCY frame immediately upon confirmation of connection migration.

10. Security Considerations TBD.

11. IANA Considerations TBD.

12. References 12.1. Normative References [QUIC-TRANSPORT] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based Multiplexed and Secure Transport", RFC 9000, DOI 10.17487/RFC9000, May 2021, <https://www.rfc-editor.org/rfc/rfc9000>. [QUIC-RECOVERY] Iyengar, J., Ed. and I. Swett, Ed., "QUIC Loss Detection and Congestion Control", RFC 9002, DOI 10.17487/RFC9002, May 2021, <https://www.rfc-editor.org/rfc/rfc9002>. [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/rfc/rfc2119>. [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/rfc/rfc8174>. 12.2. Informative References [RFC8257] Bensley, S., Thaler, D., Balasubramanian, P., Eggert, L., and G. Judd, "Data Center TCP (DCTCP): TCP Congestion Control for Data Centers", RFC 8257, DOI 10.17487/RFC8257, October 2017, <https://www.rfc-editor.org/rfc/rfc8257>. [RFC3168] Ramakrishnan, K., Floyd, S., and D. Black, "The Addition of Explicit Congestion Notification (ECN) to IP", RFC 3168, DOI 10.17487/RFC3168, September 2001, <https://www.rfc-editor.org/rfc/rfc3168>. Appendix A. Change Log RFC Editor's Note: Please remove this section prior to publication of a final version of this document.

Acknowledgments The following people directly contributed key ideas that shaped this draft: Bob Briscoe, Kazuho Oku, Marten Seemann.

Authors' Addresses Jana Iyengar Fastly Email: jri.ietf@gmail.com Ian Swett Google Email: ianswett@google.com https://github.com/ietf-tools/datatracker/tree/main/docker

(بدون موضوع) S Sahap Snapchat إلى أنا قبل 12 ساعةالتفاصيل [Unicode] Technical Reports

Unicode® Standard Annex #38 UNICODE HAN DATABASE (UNIHAN) Version Unicode 15.0.0 Editors John H. Jenkins 井作恆 Richard Cook 曲理查 Ken Lunde 小林劍󠄁 Date 2022-09-12 This Version https://www.unicode.org/reports/tr38/tr38-33.html Previous Version https://www.unicode.org/reports/tr38/tr38-31.html Latest Version https://www.unicode.org/reports/tr38/ Latest Proposed Update https://www.unicode.org/reports/tr38/proposed.html Database Lookup https://www.unicode.org/charts/unihan.html Revision 33 Summary This document describes the organization and content of the Unihan database.

Status This document has been reviewed by Unicode members and other interested parties, and has been approved for publication by the Unicode Consortium. This is a stable document and may be used as reference material or cited as a normative reference by other specifications.

A Unicode Standard Annex (UAX) forms an integral part of the Unicode Standard, but is published online as a separate document. The Unicode Standard may require conformance to normative content in a Unicode Standard Annex, if so specified in the Conformance chapter of that version of the Unicode Standard. The version number of a UAX document corresponds to the version of the Unicode Standard of which it forms a part.

Please submit corrigenda and other comments with the online reporting form [Feedback]. Related information that is useful in understanding this annex is found in Unicode Standard Annex #41, “Common References for Unicode Standard Annexes.” For the latest version of the Unicode Standard, see [Unicode]. For a list of current Unicode Technical Reports, see [Reports]. For more information about versions of the Unicode Standard, see [Versions]. For any errata which may apply to this annex, see [Errata].

Contents 1 Introduction 2 Mechanics 2.1 Database Design 2.1.1 Extension of Unihan Properties to Non-Unihan Characters 2.1.2 Sorting Algorithm Used by the Radical-Stroke Charts 2.2 Unihan.zip 2.3 Web Access 3 Field Types 3.1 IRG Sources 3.2 Other Mappings 3.3 Dictionary Indices 3.4 Readings 3.5 Dictionary-like Data 3.6 Radical-Stroke Counts 3.7 Variants 3.7.1 Simplified and Traditional Chinese Variants 3.7.2 Semantic Variants 3.7.3 Spoofing Variants 3.8 Numeric Values 3.9 Source References 3.10 IRG Source Specifiers 4 The Fields 4.1 Alphabetical Listing 4.2 Listing by Date of Addition to the Unicode Standard 4.3 Listing by Location within Unihan.zip 4.4 Listing of Characters Covered by the Unihan Database 4.5 Listing of Additional Sources Used by the Unihan Database 5 History References Modifications 1 Introduction The Unihan database is the repository for the Unicode Consortium’s collective knowledge regarding the CJK Unified Ideographs contained in the Unicode Standard. It contains mapping data to allow conversion to and from other coded character sets and additional information to help implement support for the various languages which use the Han ideographic script.

Formally, ideographs are defined within the Unicode Standard via their mappings. That is, the Unicode Standard does not formally define what the ideograph U+4E00 is; rather, it defines it as being the equivalent of, say, 0x523B in GB/T 2312, 0x14421 in CNS 11643, 0x306C in JIS X 0208, and so on.

In practice, implementation of ideographs requires large amounts of ancillary data. Input methods require information such as pronunciations, as do collation algorithms. Data in character sets not included in the world of international standards bodies needs to be converted. Relationships between ideographs need to be defined to allow for fuzzy string matching. Beyond all this, it’s important to track not only what properties a given ideograph has, but who claims it has those properties.

Unlike characters in Western scripts such as Latin and Greek, whose basic property is their sound, which stays largely constant across languages, the basic property for Han ideographs is their meaning. This isn’t to say that ideographs are truly ideographic, in that they represent abstract ideas; but they generally have one root meaning from which the others derive, and generally retain the bulk of their semantic content across linguistic boundaries. Most ideographs are divided into a determinative, which gives a vague sense of meaning, and a phonetic, which gives a vague sense of pronunciation. The Unihan database therefore includes structural analyses and definitions for ideographs.

This document is a guide to that data, describing the mechanics of the Unihan database, the nature of its contents, and the status of the various fields.

2 Mechanics 2.1 Database Design The database consists of a number of fields containing data for each Han ideograph in the Unicode Standard. The fields are all named, and the names consist entirely of ASCII letters and digits with no spaces or other punctuation except for underscore. For historical reasons, they all start with a lowercase “k.”

All data in the Unihan database is stored in UTF-8 using Normalization Form C (NFC). Note, however, that the "Syntax" descriptions below, used for validation of field values, operate on Normalization Form D (NFD), primarily because that makes the regular expressions simpler.

2.1.1 Extension of Unihan Properties to Non-Unihan Characters Some characters which are not unified ideographs are considered equivalent to unified ideographs. As such, some of the properties defined in this document are applicable to these characters as well, where appropriate. For example, U+2F8D KANGXI RADICAL INSECT is equivalent to U+866B; therefore, properties such as kCantonese ("cung4"), or kCangije ("LMI") may be inferred as needed for U+2F8D KANGXI RADICAL INSECT.

This extension process is particularly useful for the kRSUnicode and kTotalStrokes properties.

The Equivalent_Unified_Ideograph property in the Unicode Character Database is used to indicate which non-ideographs and and unified ideographs are considered equivalent for these purposes. It is explicitly intended to provide kRSUnicode and kTotalStrokes values for non-ideographs. See [UAX44] for more information.

2.1.2 Sorting Algorithm Used by the Radical-Stroke Charts The Unicode Standard includes a set of radical-stroke charts for ease in determining the code point of encoded ideographs. Each CJK Unified Ideograph will occur one or more times in the radical-stroke charts, with one occurrence per value of its kRSUnicode field in the Unihan Database. Entries in the radical-stroke charts are ordered using a 64-bit collation key calculated as follows:

Bits 0-19 represent the character's code point. This is more space than is actually needed, but it has the advantage of aligning the code point along a four-bit boundary.

Bits 20-27 represent the character's block. This block value is 0 for characters in the CJK Unified Ideographs block, 1 for characters in the CJK Unified Ideographs Extension A, 2 for characters in the CJK Unified Ideographs Extension B block, and so on. The special values 254 (0xFE) and 255 (0xFF) are used for characters in the CJK Compatibility Ideographs and CJK Compatibility Ideographs Supplement blocks, respectively. This allows accommodation for future CJK Unified Ideograph Extension blocks and guarantees that compatibility ideographs always follow non-compatibility ideographs. Note that additional compatibility ideograph blocks will not be encoded in the future.

Bits 28-31 are used to indicate whether the entry has a simplified form for the radical or not. The value of 1 indicates the simplified form of the radical (for example, 钅); a value of 0 indicates the traditional form for the radical (for example, 金).

Bits 32-35 are reserved to hold the entry's first residual stroke, as defined by the IRG (the Ideographic Research Group, a part of ISO/IEC JTC1/SC2/WG2). Data for the first residual stroke is currently unavailable. Therefore, these bits are set to 0 in the current data.

Bits 36-43 are used for the entry's residual stroke count. If the residual stroke count is negative, 0 is substituted.

Bits 44-51 are used for the entry's Kangxi radical.

Bits 52-63 are unused.

This collation key is defined in such a fashion that it can easily be parsed by eye. Figure 1 illustrates its overall structure.

Figure 1. Radical-Stroke Chart Collation Key Schema

Radical-stroke chart collation key schema

Examples:

U+4E95 (井) is assigned the collation key 0x0000702000004E95 U+3687 (㚇) has two values in its kRSUnicode field and therefore two entries in the radical-stroke charts. These two entries are assigned the collation keys 0x0002306000103687 and 0x0004206000103687 U+F936 (虜) is assigned the collation key 0x0001C1000FE0F936 U+21FEB (𡿫) is assigned the collation key 0x0002F00000221FEB U+2B50E (𫔎) is assigned the collation key 0x000A70C01032B50E 2.2 Unihan.zip Included with the Unicode Character Database is a file called Unihan.zip. This is a snapshot of the public contents of the Unihan database as of the release date for this version of the standard.

The zip file is an archive of eight text files, each in UTF-8, NFC, and using Unix line endings. Each file contains the values for some of the fields in the Unihan database.

Each file contains those properties which belong to one of the general categories described below; that is, Unihan_Readings.txt contains all the data for all the fields in the Readings category, and so on.

The grouping of fields into categories, and of their data into files, is based on both principled and practical considerations, and it changes over time. For mechanical parsing of Unihan data, it should not be assumed that the data for a particular property is in a particular file. One approach to parsing data for certain properties is to concatenate all of the Unihan*.txt files together (or act as if they were) and extract the desired properties from the whole (for example, using “grep”). This avoids the need to track which file has a given property across Unicode versions, and therefore avoids the need to adjust parsing code.

Each file uses the same structure. Blank lines may be ignored. Lines beginning with # are comment lines used to provide the header and footer. Each of the remaining lines is one entry, with three, tab-separated fields: the Unicode Scalar Value, the database field name, and the value for the database field for the given Unicode Scalar Value. For most of the fields, if multiple values are possible, the values are separated by spaces. No character may have more than one instance of a given field associated with it, and no empty fields are included in any of the files archived inside Unihan.zip.

There is no formal limit on the lengths of any of the field values. Any Unicode characters may be used in the field values except for double quotes and control characters (especially tab, newline, and carriage return). Most fields have a more restricted syntax, such as the kKangXi field which consists of multiple, space-separated entries, with each entry consisting of four digits 0 through 9, followed by a period, followed by three more digits.

The data lines are sorted by Unicode Scalar Value and field-type as primary and secondary keys, respectively.

Each file’s header includes a summary of the fields the file contains.

2.3 Web Access The URL for interactive access to the contents of the Unihan database is https://www.unicode.org/charts/unihan.html. For production reasons, the version available for interactive access may not be immediately updated to the latest available version of the Unihan.zip file.

Links to Chinese and Japanese compound data are presented with this Web front end such as to the online CEDICT and Jim Breen’s EDICT projects. These additional data are not available in the other versions.

There are also two indices: a grid index grouping the characters in blocks of 256 and a radical-stroke index. A search page is also available. Individual characters can be accessed through the index or via the “Lookup” button and text field above. You enter the four- or five-digit hexadecimal identifier for the character, and click “Lookup”. You will be taken to an information page for the character. The “Use text, not images” check-box allows you to control whether UTF-8 text or embedded GIFs will be used in to display ideographs. The latter technique is less dependent on your browser and system support for Unicode but is much slower.

3 Field Types The data in the Unihan database serves a multitude of purposes, and the fields are most conveniently grouped into categories according to the purpose they fulfil. We provide here a general discussion of the various categories, followed by a detailed description of the individual fields, alphabetically arranged.

3.1 IRG Sources Among the few normative parts of the Unihan database, and the most exhaustively checked fields, are the IRG source fields: kIRG_GSource (China and Singapore), kIRG_HSource (Hong Kong SAR), kIRG_JSource (Japan), kIRG_KPSource (North Korea), kIRG_KSource (South Korea), kIRG_MSource (Macao SAR), kIRG_SSource (SAT Daizōkyō Text Database Committee), kIRG_TSource (TCA), kIRG_UKSource (UK), kIRG_USource (UTC), and kIRG_VSource (Vietnam).

These represent the official mappings between Unihan and the various encoded character sets or collections which have been submitted by IRG members. The versions of these standards may differ from the published versions generally available, particularly for PRC standards. This is because in the early days of Unicode, the PRC would occasionally add characters to their standards on an ad hoc basis in order to make sure they were included. The various procedures involved in submitting characters to the IRG for consideration no longer make this necessary.

The values for the U-source were, in the past, only references to the Unicode Standard itself and were always equal to the character’s Unicode Scalar Value. This changed with the inclusion of Extension C in version 5.2.0 of the Unicode Standard. The values now include indices as described in [UAX45].

The syntax for the values used in the various IRG source fields matches that found in ISO/IEC 10646:2011.

Detailed descriptions of the syntax used are to be found in Section 4.1 Alphabetical Listing below.

Note that we do not include the four IRG dictionary fields in this category, largely because they are not normative parts of the standard.

The kIICore field is also defined by the IRG and normative.

3.2 Other Mappings There are twenty-four fields in this category. They consist of mapping tables between the ideographic portions of Unicode and those of encoded character sets or character collections not used by the IRG in its work, although some of the character sets covered do mirror official IRG sources. For example, data for mapping GB/T 12345 is included, even though GB/T 12345 is a part of the IRG’s G-source. The difference between the two is that the kGB1 field maps all of GB/T 12345 to Unicode, and not just that portion included in the G-source, and it doesn’t map any of the informal extensions to GB/T 12345.

3.3 Dictionary Indices There are three main reasons for providing indices into standard dictionaries.

First, standard dictionaries provide a “paper trail” for fields such as the English gloss (kDefinition) and the various pronunciations or readings, as well as variant data.

Second, standard dictionaries provide a reference for scholars or students who wish more information about a character.

Third, standard dictionaries are a source for unencoded characters. This is particularly important for Cantonese, where the Cantonese lexicon is not standardized and has been neglected by the authors and architects of previous character set encodings other than HKSCS.

Four of the dictionary fields represent official IRG indices for the dictionaries used in the four dictionary sorting algorithm. Two (kIRGHanyuDaZidian and kIRGKangXi) are still being used by the IRG, but the other two (kIRGDaeJaweon and kIRGDaiKanwaZiten) are not. We have, nonetheless, retained their data for reference purposes.

For all four, there are clone fields to hold Unicode indices into the same four dictionaries. By and large, the data in the IRG fields and their Unicode counterparts is the same—but not always.

The remaining dictionaries can be grouped into three categories: general-purpose Chinese (including classical Chinese and Mandarin), Cantonese, and Japanese.

The general-purpose Chinese dictionary fields are: kCihaiT, kFennIndex, kGSR, kKarlgren, kMatthews, kSBGY, kTGHZ2013 and kXHC1983. These represent large, standard Chinese-Chinese, Chinese-English dictionaries, or definitive sinological studies. The Cantonese dictionary fields are kCheungBauerIndex, kCowles, kLau, and kMeyerWempe. All but Cheung-Bauer are large character-based Cantonese-English dictionaries. At present, the only Japanese field is kNelson, the character’s index in the first edition of Andrew N. Nelson’s Modern Reader’s Japanese-English Character Dictionary. 3.4 Readings We include in this category the pronunciations for a given character in Mandarin, Cantonese, Tang-dynasty Chinese, Japanese, Sino-Japanese, Korean, and Vietnamese. We also include here the English gloss for a given character.

Any attempt at providing a reading or set of readings for a character is bound to be fraught with difficulty, because the readings will vary over time and from place to place, even within a language. Mandarin is the official language of both the PRC and Taiwan (with some differences between the two) and is the primary language over much of northern and central China, with vast differences from place to place. Even Cantonese, the modern language covered by the Unihan database with the least geographical range, is spoken throughout Guangdong Province and in much of neighboring Guangxi Zhuang Autonomous Region, and covers four large urban centers (Guangzhou, Shenzhen, Macao, and Hong Kong). There are therefore distinct regional variations in pronunciation and vocabulary.

Indeed, even the same speaker will pronounce the same word differently depending on the speaker or even the social context. This is particularly true for languages such as Cantonese, where there has been comparatively little government effort to standardize the language.

Add to this the fact that in none of these languages—the various forms of Chinese, Japanese, Korean, Vietnamese—is the syllable the fundamental unit of the language. As in the West, it’s the word, and the pronunciation of a character is tied to the word of which it is a part. In Chinese (followed by Vietnamese and Korean), the rule is one ideograph/one syllable, with most words written using multiple ideographs. In most cases, an ideograph has only one reading (or only one important reading), but there are numerous exceptions.

In Japanese, the situation is enormously more complex. Japanese has two pronunciation systems, one derived from Chinese (the on pronunciation, or Sino-Japanese), and the other from Japanese (the kun pronunciation).

The on readings derive from Chinese loan-words. They depend on factors such as when (and from which part of China) the loan-word was borrowed, and changes to Japanese since then. On readings can therefore have little obvious relationship to modern Chinese readings, and the same Chinese reading for a given kanji can be reflected in multiple on readings in Japanese. Contrary to Chinese practice, on readings may be polysyllabic.

Kun readings, on the other hand, derive from native Japanese words for which either existing kanji were adopted or new kanji coined.

The net result is that multiple readings are the rule for Japanese kanji. These multiple readings may bear no relationship to one another and are highly context-sensitive. Even a native Japanese reader may not know the correct pronunciation of a proper noun if it is written only in kanji.

Finally, some characters have rare pronunciations known only to a minority of native speakers, or are so rare themselves that few, if any, native speakers know how to pronounce them (for example, U+40DF 䃟, used in a Hong Kong place name). In many cases, the pronunciations given by professional lexicographers are little more than educated guesses.

Thus, unlike mappings between Unicode and other character sets, providing definitive data on pronunciations or, similarly, providing a definitive English gloss is impossible, and not something which has been achieved. While we make every effort to use our sources judiciously, we are aware of the fact that this data can always be improved and extended. Users should not naïvely assume that learning to pronounce an East Asian language is all about learning to pronounce the individual ideographs, or that reading is done by parsing the ideographs, one at a time.

Despite these caveats, the reading and definition data is very useful both for the student attempting to learn these languages, and for the professional attempting to use them, and so the data is included in the Unihan database.

3.5 Dictionary-like Data This category is something of a hodge-podge, consisting of various fields including information one might find in a dictionary (such as a character’s cangjie input code), or data useful in determining levels of support (such as frequency), or structural analyses which can be helpful in lookup systems (such as the character’s phonetic).

As with the readings and English gloss, this data does not cover as much of Unihan as is theoretically possible, although it does cover the bulk of what is used day-to-day.

3.6 Radical-Stroke Counts We include three radical-stroke counts for Unihan: kRSAdobe_Japan1_6, kRSKangXi, and kRSUnicode.

All the radical-stroke fields are based on the radical-system introduced by the 18th-century Kangxi Dictionary. Each ideograph is assigned one of 214 radicals. In most cases, the radical assigned is the natural radical, giving a clue as to the character’s meaning; in the rest, the radical is arbitrary, based on the character’s structure. One also counts the character’s residual strokes, that is, the number of brush strokes required to write everything in the character except the radical.

To find a character using the radical-stroke system, one determines its radical and the number of residual strokes, then looks through the list of characters with those characteristics. This is a clumsy system compared to alphabetical lookup, but is one of the most widespread systems throughout East Asia. Unfortunately, it is also ambiguous.

First of all, if a character does not have a natural radical, it can sometimes be hard to tell what the radical ought to be (for example, 井 being assigned arbitrarily the radical 二). Even if the character naturally falls into radical-like pieces, it can be hard to tell which is the radical and which the phonetic (for example, 和, which looks like it belongs to the radical 禾, actually belongs to the radical 口). Moreover, since Unicode encodes characters, not glyphs, two different glyphs for the same character may have different residual strokes (such as 者, which can be written either with or without a dot, altering its stroke count between nine and eight, respectively).

The primary use for the kRSUnicode field is to cover the normative radical-stroke value defined by ISO/IEC 10646. However, it is also used for cases where there is sufficient ambiguity that a reasonable person might look for a character in multiple places, particularly where one of our source dictionaries categorizes a character under a different radical or with a different stroke count.

The kRSUnicode field also uses an apostrophe after the radical number to indicate that the character uses a standard simplification. In simplified Chinese, many radicals have standard, simplified forms, such as 讠, which is the simplified form of the radical 言

There is, by the way, no standard way of ordering characters within a given radical-stroke group. Unicode’s radical-stroke charts order characters with the same radical-stroke count by the Unicode block in which they occur. If looking for a character with radical 64 (手) and ten residual strokes, one knows that of the hundreds of candidates in the Unicode Standard, the most common ones come towards the head of the list and the less common ones later.

The IRG is in the process of adopting a common system of assigning the first stroke of the phonetic element to one of five categories, and sorting by those categories. When this “first stroke” data is available for all of Unihan, it will be added to the Unihan database and simplify the process of finding a character within a particular radical-stroke block.

3.7 Variants Although Unicode encodes characters and not glyphs, the line between the two can sometimes be hard to draw, particularly in East Asia. There, thousands of years worth of writing have produced thousands of pairs which can be used more-or-less interchangeably.

To deal with this situation, the Unicode Standard has adopted a three-dimensional model for determining the relationship between ideographs, and has formal rules for when two forms may be unified. Both are described in some detail in the Unicode Standard. Briefly, however, the three-dimensional model uses the x-axis to represent meaning, and the y-axis to represent abstract shape. The z-axis is used for stylistic variations.

To illustrate, 說 and 貓 have different positions along the x-axis, because they mean two entirely different things (to speak and cat, respectively). 貓 and 猫 mean the same thing and are pronounced the same way but have different abstract shapes, so they have the same position on the x-axis (semantics) but different positions on the y-axis (abstract shape). They are said to be y-variants of one another. On the other hand, 說 and 説 have the same meaning and pronunciation and the same abstract shape, and so have the same positions on both the x- and y-axes but different positions on the z-axis. They are z-variants of one another.

Ideally, there would be no pairs of z-variants in the Unicode Standard; however, the need to provide for round-trip compatibility with earlier standards, and some out-and-out mistakes along the way, mean that there are some. These are marked using the kZVariant field.

The remaining variant fields are used to mark different types of y-variation.

3.7.1 Simplified and Traditional Chinese Variants The kTraditionalVariant and kSimplifiedVariant fields are used in character-by-character conversions between simplified and traditional Chinese (SC and TC, respectively). For any character X, when converting between SC and TC, there are four possible cases:

X is used in both SC and TC and is unchanged when mapping between them. An example would be 井 U+4E95. This is the most common case, and is indicated by both the kSimplifiedVariant and kTraditionalVariant fields being empty. X is used in TC but not SC, that is, it is changed when converting from TC to SC, but not vice versa. In this case, the kSimplifiedVariant field lists the character(s) to which it is mapped and the kTraditionalVariant field is empty. An example would be 書 U+66F8 whose kSimplifiedVariant field is 书 U+4E66. X is used in SC but not TC, that is, it is changed when converting from SC to TC, but not vice versa. In this case, the kTraditionalVariant field lists the character(s) to which it is mapped and the kSimplifiedVariant field is empty. An example would be 学 U+5B66 whose kTraditionalVariant field is 學 U+5B78. X is used in both SC and TC and may be changed when mapping between them. This is the most complex case, because there are two distinct sub-cases: X may be mapped to itself or to another character when converting between SC and TC. In this case, the character is its own simplification as well as the simplification for other characters. An example would be 后 U+540E, which is the simplification for itself and for 後 U+5F8C. When mapping TC to SC, it is left alone, but when mapping SC to TC it may or may not be changed, depending on context. In this case, both kTraditionalVariant and kSimplifiedVariant fields are defined and X is included among the values for both. X is used for different words in SC and TC. When converting between the two, it is always changed. An example would be 苧 U+82E7. In traditional Chinese, it is pronounced zhù and refers to a kind of nettle. In simplified Chinese, it is pronounced níng and means limonene (a chemical found in the rinds of lemons and other citrus fruits). When converting TC to SC it is mapped to 苎 U+82CE, and when converting SC to TC it is mapped to 薴 U+85B4. In this case, both kTraditionalVariant and kSimplifiedVariant fields are defined but X is not included in the values for either. In practice, conversion between simplified and traditional Chinese is complicated by three factors:

The conversion is almost always one-to-one, but in some cases may be one-to-many, and context may need to be evaluated to determine which specific mapping to use. When converting SC to TC, 脏 U+810F is mapped to 臟 U+81DF when it means "viscera" and to 髒 U+9AD2 when it means "dirty." An SC character may be used in actual TC text and, more rarely, vice versa. This is particularly true in handwritten and ancient texts. Indeed, many SC forms originated as handwritten forms or ancient synonyms. It also occurs when one of a number of synonymous TC characters is identified as the preferred or correct character to use in SC. For example, both 猫 U+732B and 貓 U+8C93 are acceptable TC characters meaning "cat," but only 猫 U+732B should be used in SC. Political divisions within the Chinese-speaking community have resulted in different coinages in different locales for various modern terms, and so actual conversion between SC and TC is ideally done on a word-by-word basis, not a character-by-character basis. A hard disk, for example, is called 硬盘 in the PRC, and 硬碟 in Taiwan. 3.7.2 Semantic Variants Two variation fields, kSemanticVariant and kSpecializedSemanticVariant, are used to mark cases where two characters have identical and overlapping meanings, respectively.

Thus U+514E 兎 and U+5154 兔 are y-variants of one another; both mean rabbit. U+4E3C 丼 and U+4E95 井 are not pure y-variants of one another. 井 means a well, and although 丼 can also mean a well and be used for 井, it can also mean a bowl of food. We use kSemanticVariant, then, for the former pair, and kSpecializedSemanticVariant for the latter. In many cases, data is provided listing the Unihan sources which indicate the variant relationship. The syntax is described in detail below, but as an example, U+792E 礮 has the kSemanticVariant value U+70AE<kMeyerWempe U+7832<kLau,kMatthews,kMeyerWempe U+791F<kLau,kMatthews. This means that the Mathews, Lau, and Meyer-Wempe dictionaries all say that it is a y-variant of U+7832 砲, whereas only Mathews and Lau identify it as a variant of U+791F 礟 and only Meyer-Wempe identifies it as a variant of U+70AE 炮.

3.7.3 Spoofing Variants The kSpoofingVariant field is used to denote a special class of variant, a spoofing variant. Spoofing variants are potentially used in bad faith to direct users to unexpected URLs, evade email filters, or otherwise deceive end-users. Determining whether or not two characters are spoofing variants is based entirely on the glyph shape, without regard for semantics. Etymologically unrelated pairs such as U+571F 土 and U+58EB 士 or U+672A 未 and U+672B 末 are considered spoofing variants. A common source of spoofing variants is deliberate confusion between radicals moon (⽉) and meat (⾁). These two radicals, when used in Han characters, look very similar or identical (for example, in U+3B35 㬵 and U+80F6 胶). Similarly, even if the visual appearance of two radicals is distinct, they may be similar enough that a user might overlook the distinction (for example, ⼎ and ⺡), especially in a spoofing context such as https://凊水.org[مئل ڳنڍڻو] versus https://清水.org[مئل ڳنڍڻو]. Spoofing variants also include instances where two highly similar shapes are separately encoded because of source code separation, without regard to other considerations. Cases include the following pairs: U+672C 本 and U+5932 夲; U+520A 刊 and U+520B 刋.

Some spoofing variants might be sufficiently dissimilar in shape that they can be distinguished at large point sizes. Others are dissimilar in meaning so that they can be distinguished in running text. They might also be visually distinct in one font but not another, due to the language or region that the font supports. These considerations are irrelevant to their status; even dissimilar pairs can be used to misdirect users (particularly when URLs are displayed at small point sizes).

Because z-variant pairs are, by definition, either identical or unifiable, they should all be considered spoofing variants as well. The same is true of compatibility variants. Because of these considerations, the kSpoofingVariant field only includes spoofing variants which are ​not​ also z-variants or compatibility variants.

As with some other properties concerning CJK variants, the value of the kSpoofingVariant field is symmetric (if A is a spoofing variant of B, then B is a spoofing variant of A) and transitive (if A is a spoofing variant of B and B is a spoofing variant of C, then A is a spoofing variant of C).

The kSpoofingVariant field only covers CJK Unified Ideographs. Other CJK-related spoofing data is found in the EquivalentUnifiedIdeographs.txt file.

3.8 Numeric Values There are three fields, kAccountingNumeric, kOtherNumeric, and kPrimaryNumeric to indicate the numerical values an ideograph may have. Traditionally, ideographs were used both for numbers and words, and so many ideographs have (or can have) numeric values. The various kinds of numeric values are specified by these three fields.

3.9 Source References A number of fields in the Unihan database indicate the source from which the data is taken. As noted above, this includes but is not limited to the kSemanticVariant and kSpecializedSemanticVariant fields.

These source references are of two kinds:

Sources corresponding to one or more fields in the Unihan database. These are identified by their field identifiers. In cases where multiple fields correspond to one source (such as kHanYu and kHanyuPinyin), only one is used. Other sources or standard references. These are identified by a lower case s (for “source”) followed by a series of ASCII letters, numerals, and underscores. The overall syntax, except for the first letter, is the same as field identifiers used by the Unihan database. Indices to or data from some of these additional sources may at some future point be added to the Unihan database. In that case, the initial s will be changed to a k.

A complete list of these additional sources with bibliographic information is found in Section 4.5 below.

3.10 IRG Source Specifiers A number of fields in the Unihan database indicate IRG sources with which the data is associated. This includes but is not limited to the kAlternateTotalStrokes, kIICore, and kUnihanCore2020 fields.

These sources references consist of a series of one-letter identifiers. These letters match the full IRG source designations (for example, “H” refers to the kIRG_HSource), except that “B” is used instead of “UK” and “P” instead of “KP”. The order of the letters within the source reference is not specified.

4 The Fields We now give two listings of the fields in the Unihan database. The first is an alphabetical listing, with information on the field contents and syntax. The second is a listing of the fields by the release of the Unicode Standard in which they were first found.

4.1 Alphabetical Listing For each field we give the following information in the alphabetical listing: its Property tag, its Unicode Status, its Category as defined above, the Unicode version in which it was Introduced, its Delimiter, its Syntax, and its Description.

The Property name is the tag used in the Unihan database to mark instances of this field.

The Unicode Status is either Normative, Informative, or Provisional, depending on whether it is a normative part of the standard, an informative part of the standard, or neither. We may also include Deprecated as a Unicode Status if the field is no longer to be used.

Fields which allow multiple values have a Delimiter defined as “space”. Fields which do not have multiple values (such as the IRG source fields) have this defined as “N/A”. Some fields do not currently have multiple values in the data but may do so in the future.

For most fields with multiple values, the order of the values is arbitrary and has no particular significance. The most common order in such cases is alphabetical. For example, see the kCantonese field.

However, for certain fields the ordering of values may be significant; in such cases, the significance is specified in the Description for the field. For example, see the kMandarin field. In later versions of the Unicode Character Database, a field may change from arbitrary order to a specified order.

Validation is done as follows: The entry is split into subentries using the Delimiter (if defined), and each subentry converted to Normalization Form D (NFD). The value is valid if and only if each normalized subentry matches the field’s Syntax regular expression. Note that the value for any given field's Syntax is not guaranteed to be stable and may change in the future.

Finally, the Description contains not only a description of what the field contains, but also source information, known limitations, methodology used in deriving the data, and so on.

The fields covered in the table are: kAccountingNumeric, kAlternateTotalStrokes, kBigFive, kCangjie, kCantonese, kCCCII, kCheungBauer, kCheungBauerIndex, kCihaiT, kCNS1986, kCNS1992, kCompatibilityVariant, kCowles, kDaeJaweon, kDefinition, kEACC, kFenn, kFennIndex, kFourCornerCode, kFrequency, kGB0, kGB1, kGB3, kGB5, kGB7,

{"objectClassName":"domain","handle":"2238142138_DOMAIN_NET-VRSN","ldhName":"ptway.net","nameservers":[{"objectClassName":"nameserver","ldhName":"ns13.domaincontrol.com","status":["active"],"events":[{"eventAction":"last changed","eventDate":"2022-10-05T03:57:46Z"}]},{"objectClassName":"nameserver","ldhName":"ns14.domaincontrol.com","status":["active"],"events":[{"eventAction":"last changed","eventDate":"2022-10-05T03:57:46Z"}]}],"secureDNS":{"delegationSigned":false},"links":[{"value":"https://rdap.godaddy.com/v1/domain/ptway.net","rel":"self","href":"https://rdap.godaddy.com/v1/domain/ptway.net","type":"application/rdap+json"}],"entities":[{"objectClassName":"entity","handle":"1","vcardArray":["vcard",[["version",{},"text","4.0"],["kind",{},"text","individual"],["fn",{},"text","Registration Private"],["org",{"type":"work"},"text","Domains By Proxy, LLC"],["adr",{},"text",["","","DomainsByProxy.com 2155 E Warner Rd","Tempe","Arizona","85284","US"]],["tel",{},"uri","tel:+1.4806242599"],["contact-uri",{},"uri","https://www.godaddy.com/whois/results.aspx?domain=ptway.net"]]],"roles":["registrant"],"events":[{"eventAction":"last changed","eventDate":"2022-05-18T02:24:59Z"}]},{"objectClassName":"entity","handle":"2","vcardArray":["vcard",[["version",{},"text","4.0"],["kind",{},"text","individual"],["fn",{},"text","Registration Private"],["org",{"type":"work"},"text","Domains By Proxy, LLC"],["adr",{},"text",["","","DomainsByProxy.com 2155 E Warner Rd","Tempe","Arizona","85284","US"]],["tel",{},"uri","tel:+1.4806242599"],["contact-uri",{},"uri","https://www.godaddy.com/whois/results.aspx?domain=ptway.net"]]],"roles":["administrative"],"events":[{"eventAction":"last changed","eventDate":"2022-05-18T02:24:59Z"}]},{"objectClassName":"entity","handle":"3","vcardArray":["vcard",[["version",{},"text","4.0"],["kind",{},"text","individual"],["fn",{},"text","Registration Private"],["org",{"type":"work"},"text","Domains By Proxy, LLC"],["adr",{},"text",["","","DomainsByProxy.com 2155 E Warner Rd","Tempe","Arizona","85284","US"]],["tel",{},"uri","tel:+1.4806242599"],["contact-uri",{},"uri","https://www.godaddy.com/whois/results.aspx?domain=ptway.net"]]],"roles":["technical"],"events":[{"eventAction":"last changed","eventDate":"2022-05-18T02:24:59Z"}]},{"objectClassName":"entity","handle":"4","vcardArray":["vcard",[["version",{},"text","4.0"],["kind",{},"text","individual"],["fn",{},"text","Registration Private"],["org",{"type":"work"},"text","Domains By Proxy, LLC"],["adr",{},"text",["","","DomainsByProxy.com 2155 E Warner Rd","Tempe","Arizona","85284","US"]],["tel",{},"uri","tel:+1.4806242599"],["contact-uri",{},"uri","https://www.godaddy.com/whois/results.aspx?domain=ptway.net"]]],"roles":["billing"],"events":[{"eventAction":"last changed","eventDate":"2022-05-18T02:24:59Z"}]},{"objectClassName":"entity","handle":"146","vcardArray":["vcard",[["version",{},"text","4.0"],["fn",{},"text","GoDaddy.com, LLC"],["adr",{},"text",["","","2155 E Godaddy Way","Tempe","AZ","85284","US"]],["contact-uri",{"type":"work"},"uri","mailto:abuse@godaddy.com"]]],"roles":["registrar"],"publicIds":[{"type":"IANA Registrar ID","identifier":"146"}],"entities":[{"objectClassName":"entity","handle":"","vcardArray":["vcard",[["version",{},"text","4.0"],["tel",{"type":["voice"]},"uri","tel:480-624-2505"],["contact-uri",{"type":"work"},"uri","mailto:abuse@godaddy.com"]]],"roles":["abuse"]}],"rdapConformance":["rdap_level_0","icann_rdap_response_profile_0","icann_rdap_technical_implementation_guide_0"],"port43":"whois.godaddy.com"}],"events":[{"eventAction":"last update of RDAP database","eventDate":"2023-03-10T03:27:16Z"},{"eventAction":"expiration","eventDate":"2024-03-12T05:30:48Z"},{"eventAction":"registration","eventDate":"2018-03-12T05:30:48Z"},{"eventAction":"last changed","eventDate":"2022-03-19T05:42:17Z"}],"status":["delete prohibited","transfer prohibited","renew prohibited","update prohibited"],"notices":[{"title":"Status Codes","description":["For more information on Whois status codes, please visit https://www.icann.org/epp"],"links":[{"rel":"related","href":"https://icann.org/epp","type":"text/html"}]},{"title":"RDDS Inaccuracy Complaint Form","description":["URL of the ICANN RDDS Inaccuracy Complaint Form: https://www.icann.org/wicf"],"links":[{"rel":"related","href":"https://www.icann.org/wicf","type":"text/html"}]},{"title":"Terms of Use","description":["By submitting an inquiry, you agree to these Universal Terms of Service","and limitations of warranty. In particular, you agree not to use this","data to allow, enable, or otherwise make possible, dissemination or","collection of this data, in part or in its entirety, for any purpose,","such as the transmission of unsolicited advertising and solicitations of","any kind, including spam. You further agree not to use this data to enable","high volume, automated or robotic electronic processes designed to collect","or compile this data for any purpose, including mining this data for your","own personal or commercial purposes, or use this data in any way that violates","applicable laws and regulations."],"links":[{"rel":"related","href":"https://www.godaddy.com/agreements/showdoc?pageid=5403","type":"text/html"}]}],"rdapConformance":["rdap_level_0","icann_rdap_response_profile_0","icann_rdap_technical_implementation_guide_0"],"port43":"whois.godaddy.com"}


{"objectClassName":"domain","handle":"2238142138_DOMAIN_NET-VRSN","ldhName":"ptway.net","nameservers":[{"objectClassName":"nameserver","ldhName":"ns13.domaincontrol.com","status":["active"],"events":[{"eventAction":"last changed","eventDate":"2022-10-05T03:57:46Z"}]},{"objectClassName":"nameserver","ldhName":"ns14.domaincontrol.com","status":["active"],"events":[{"eventAction":"last changed","eventDate":"2022-10-05T03:57:46Z"}]}],"secureDNS":{"delegationSigned":false},"links":[{"value":"https://rdap.godaddy.com/v1/domain/ptway.net","rel":"self","href":"https://rdap.godaddy.com/v1/domain/ptway.net","type":"application/rdap+json"}],"entities":[{"objectClassName":"entity","handle":"1","vcardArray":["vcard",[["version",{},"text","4.0"],["kind",{},"text","individual"],["fn",{},"text","Registration Private"],["org",{"type":"work"},"text","Domains By Proxy, LLC"],["adr",{},"text",["","","DomainsByProxy.com 2155 E Warner Rd","Tempe","Arizona","85284","US"]],["tel",{},"uri","tel:+1.4806242599"],["contact-uri",{},"uri","https://www.godaddy.com/whois/results.aspx?domain=ptway.net"]]],"roles":["registrant"],"events":[{"eventAction":"last changed","eventDate":"2022-05-18T02:24:59Z"}]},{"objectClassName":"entity","handle":"2","vcardArray":["vcard",[["version",{},"text","4.0"],["kind",{},"text","individual"],["fn",{},"text","Registration Private"],["org",{"type":"work"},"text","Domains By Proxy, LLC"],["adr",{},"text",["","","DomainsByProxy.com 2155 E Warner Rd","Tempe","Arizona","85284","US"]],["tel",{},"uri","tel:+1.4806242599"],["contact-uri",{},"uri","https://www.godaddy.com/whois/results.aspx?domain=ptway.net"]]],"roles":["administrative"],"events":[{"eventAction":"last changed","eventDate":"2022-05-18T02:24:59Z"}]},{"objectClassName":"entity","handle":"3","vcardArray":["vcard",[["version",{},"text","4.0"],["kind",{},"text","individual"],["fn",{},"text","Registration Private"],["org",{"type":"work"},"text","Domains By Proxy, LLC"],["adr",{},"text",["","","DomainsByProxy.com 2155 E Warner Rd","Tempe","Arizona","85284","US"]],["tel",{},"uri","tel:+1.4806242599"],["contact-uri",{},"uri","https://www.godaddy.com/whois/results.aspx?domain=ptway.net"]]],"roles":["technical"],"events":[{"eventAction":"last changed","eventDate":"2022-05-18T02:24:59Z"}]},{"objectClassName":"entity","handle":"4","vcardArray":["vcard",[["version",{},"text","4.0"],["kind",{},"text","individual"],["fn",{},"text","Registration Private"],["org",{"type":"work"},"text","Domains By Proxy, LLC"],["adr",{},"text",["","","DomainsByProxy.com 2155 E Warner Rd","Tempe","Arizona","85284","US"]],["tel",{},"uri","tel:+1.4806242599"],["contact-uri",{},"uri","https://www.godaddy.com/whois/results.aspx?domain=ptway.net"]]],"roles":["billing"],"events":[{"eventAction":"last changed","eventDate":"2022-05-18T02:24:59Z"}]},{"objectClassName":"entity","handle":"146","vcardArray":["vcard",[["version",{},"text","4.0"],["fn",{},"text","GoDaddy.com, LLC"],["adr",{},"text",["","","2155 E Godaddy Way","Tempe","AZ","85284","US"]],["contact-uri",{"type":"work"},"uri","mailto:abuse@godaddy.com"]]],"roles":["registrar"],"publicIds":[{"type":"IANA Registrar ID","identifier":"146"}],"entities":[{"objectClassName":"entity","handle":"","vcardArray":["vcard",[["version",{},"text","4.0"],["tel",{"type":["voice"]},"uri","tel:480-624-2505"],["contact-uri",{"type":"work"},"uri","mailto:abuse@godaddy.com"]]],"roles":["abuse"]}],"rdapConformance":["rdap_level_0","icann_rdap_response_profile_0","icann_rdap_technical_implementation_guide_0"],"port43":"whois.godaddy.com"}],"events":[{"eventAction":"last update of RDAP database","eventDate":"2023-03-10T03:27:16Z"},{"eventAction":"expiration","eventDate":"2024-03-12T05:30:48Z"},{"eventAction":"registration","eventDate":"2018-03-12T05:30:48Z"},{"eventAction":"last changed","eventDate":"2022-03-19T05:42:17Z"}],"status":["delete prohibited","transfer prohibited","renew prohibited","update prohibited"],"notices":[{"title":"Status Codes","description":["For more information on Whois status codes, please visit https://www.icann.org/epp"],"links":[{"rel":"related","href":"https://icann.org/epp","type":"text/html"}]},{"title":"RDDS Inaccuracy Complaint Form","description":["URL of the ICANN RDDS Inaccuracy Complaint Form: https://www.icann.org/wicf"],"links":[{"rel":"related","href":"https://www.icann.org/wicf","type":"text/html"}]},{"title":"Terms of Use","description":["By submitting an inquiry, you agree to these Universal Terms of Service","and limitations of warranty. In particular, you agree not to use this","data to allow, enable, or otherwise make possible, dissemination or","collection of this data, in part or in its entirety, for any purpose,","such as the transmission of unsolicited advertising and solicitations of","any kind, including spam. You further agree not to use this data to enable","high volume, automated or robotic electronic processes designed to collect","or compile this data for any purpose, including mining this data for yo تنزيل الرسالة بأكملها