DnsClient As defined in https://tools.ietf.org/html/rfc1035#section-5.1 except '()' or '@' or '.' The flags of the header's second 16bit value A representing an IPv6 . A 128 bit IPv6 address is encoded in the data portion of an AAAA resource record in network byte order(high-order byte first). RFC 3596 Initializes a new instance of the class. Base class for s transporting an . Gets the . The address. Initializes a new instance of the class. The information. The address. If is null. If or is null A representing an AFS database location. RFC 1183 RFC 5864 Gets the . The sub type. Gets the hostname. The hostname. Initializes a new instance of the class. The information. The type. The name. If or is null. Type used by . AFS is a registered trademark of Transarc Corporation The Distributed Computing Environment A representing an IPv4 . Hosts that have multiple Internet addresses will have multiple A records. RFC 1035 Initializes a new instance of the class. A representing a certification authority authorization. The Certification Authority Authorization (CAA) DNS Resource Record allows a DNS domain name holder to specify one or more Certification Authorities(CAs) authorized to issue certificates for that domain. CAA Resource Records allow a public Certification Authority to implement additional controls to reduce the risk of unintended certificate mis-issue.This document defines the syntax of the CAA record and rules for processing CAA records by certificate issuers. RFC 6844 One octet containing the flags. The property identifier, a sequence of US-ASCII characters. A sequence of octets representing the property value. Property values are encoded as binary values and MAY employ sub-formats. Initializes a new instance of the class. The information. The flags. The tag. The value. If or or is null. A representing the canonical name for an alias. RFC 1035 Gets the canonical name for an alias. The canonical name. Initializes a new instance of the class. The information. The canonical name. If or is null. a representing a DnsKey record. Gets the DNSKEY's flags value. Gets the DNSKEY's protocol value. The value must be 3, and the MUST be treated as invalid during signature verification if it is found to be some value other than 3. Gets the 's cryptographic algorithm and determines the format of the . Gets the public key material. The format depends on the of the key being stored. Gets the base64 string representation of the . Initializes a new instance of the class If or is null. Base class for all resource records. Initializes a new instance of the class. The information. If is null. Same as ToString but offsets the by . Set the offset to -32 for example to make it print nicely in consoles. The offset. A string representing this instance. Returns a string representation of the record's value only. uses this to compose the full string value of this instance. A string representing this record. The type represents a . The domain name used to query. Specifies type of resource record. Specifies type class of resource record, mostly IN but can be CS, CH or HS . Gets the current time to live value for the record. Gets or sets the original time to live returned from the server. Gets the number of bytes for this resource record stored in RDATA Initializes a new instance of the class. The domain name used by the query. Type of the record. The record class. The time to live. Length of the raw data. If is null. Initializes a new instance of the class. The used by the query. Type of the record. The record class. The time to live. Length of the raw data. If is null or empty. a representing a DS record. Gets the key tag value of the referred to by this record. Key Tag Calculation Gets the algorithm of the referred to by this record. Gets the algorithm used to construct the digest. Gets the digest of the this record refers to. Gets the hexadecimal string representation of the . Initializes a new instance of the class If or is null. A not representing any specific resource record. Used if unsupported s are found in the result. Initializes a new instance of the class. The information. If is null. A used to acquire general information about a host. RFC 1035 RFC 1010 Gets a string which specifies the CPU type. The CPU. Gets a string which specifies the operating system type. The OS. Initializes a new instance of the class. The information. The CPU. The OS. If is null. A representing a domain name which specifies a host which has the specified mailbox. RFC 1035 Gets the domain name which specifies a host which has the specified mailbox. The domain name. Initializes a new instance of the class. The information. The domain name. If or is null. A representing a domain name which specifies a mailbox which is a member of the mail group specified by the domain name. RFC 1035 Gets a domain name which specifies a mailbox which is a member of the mail group specified by the domain name. The domain name. Initializes a new instance of the class. The information. The domain name. If or is null. A representing mailbox or mail list information. RFC 1035 Gets the domain name which specifies a mailbox which is responsible for the mailing list or mailbox. The domain name. Gets the domain name which specifies a mailbox which is to receive error messages related to the mailing list or mailbox. The domain name. Initializes a new instance of the class. The information. The RMAILBX. The EMAILBX. If or or is null. A representing a mailbox rename domain name. RFC 1035 Gets the domain name which specifies a mailbox which is the proper rename of the specified mailbox. The domain name. Initializes a new instance of the class. The information. The domain name. If or is null. A representing a mail exchange. RFC 1035 RFC 974 Gets a 16 bit integer which specifies the preference given to this RR among others at the same owner. Lower values are preferred. A domain name which specifies a host willing to act as a mail exchange. Initializes a new instance of the class. The information. The preference. Name of the domain. If or is null. a representing a NSEC record. Gets the next owner name (in the canonical ordering of the zone) that has authoritative data or contains a delegation point NS RRset. Gets the raw data of the type bit maps field. The Type Bit Maps field identifies the RRset types that exist at the NSEC RR's owner name. Gets the represented RR types of the data. The Type Bit Maps field identifies the RRset types that exist at the NSEC RR's owner name. Initializes a new instance of the class If , or is null. A representing an authoritative name server. RFC 1035 Gets the domain name which specifies a host which should be authoritative for the specified class and domain. The domain name. Initializes a new instance of the class. The information. The name. If or is null. Experimental RR, not sure if the implementation is actually correct either (not tested). RFC 1035 Gets any data stored in this record. The byte array. Gets the raw data of this record as UTF8 string. Initializes a new instance of the class. The information. Anything. If or is null. A options resource record. A representing a pointer. These RRs are used in special domains to point to some other location in the domain space. RFC 1035 Gets the domain name which points to some location in the domain name space. The domain name. Initializes a new instance of the class. The information. The domain name. If or is null. The resource record types. The enum contains only the types supported by this library at this moment. The is used to identify any . Resource record types are a subset of . A host address. RFC 1035 An authoritative name server. RFC 1035 A mail destination (OBSOLETE - use MX). RFC 1035 A mail forwarder (OBSOLETE - use MX). RFC 1035 The canonical name for an alias. RFC 1035 Marks the start of a zone of authority. RFC 1035 A mailbox domain name (EXPERIMENTAL). RFC 1035 A mail group member (EXPERIMENTAL). RFC 1035 A mailbox rename domain name (EXPERIMENTAL). RFC 1035 A Null resource record (EXPERIMENTAL). RFC 1035 A well known service description. RFC 3232 A domain name pointer. RFC 1035 Host information. RFC 1035 RFC 1010 Mailbox or mail list information. RFC 1035 Mail exchange. RFC 1035 RFC 974 Text resources. RFC 1035 RFC 1464 Responsible Person. RFC 1183 AFS Data Base location. RFC 1183 RFC 5864 An IPv6 host address. RFC 3596 A resource record which specifies the location of the server(s) for a specific protocol and domain. RFC 2782 Option record. RFC 6891 DS rfc4034 RFC 4034 SSH finger print record. RFC 4255 RRSIG rfc3755. RFC 3755 NSEC rfc4034. RFC 4034 DNSKEY rfc4034. TLSA rfc6698. RFC 6698 SPF records don't officially have a dedicated RR type, should be used instead. The behavior of TXT and SPF are the same. This library will return a TXT record but will set the header type to SPF if such a record is returned. RFC 7208 A Uniform Resource Identifier (URI) resource record. RFC 7553 A certification authority authorization. RFC 6844 A representing a responsible person. RFC 1183 Gets a domain name that specifies the mailbox for the responsible person. The mailbox domain. Gets a domain name for which TXT RR's exist. The text domain. Initializes a new instance of the class. The information. The mailbox domain. The text domain. If or or is null. A representing a RRSIG record. Gets the type of the RRset that is covered by this . Gets the cryptographic algorithm used to create the . Gets the number of labels in the original RR owner name. Gets the TTL of the covered RRset as it appears in the authoritative zone. Gets the expiration date of the . This record MUST NOT be used for authentication prior to the and MUST NOT be used for authentication after the . Gets the inception date of the . This record MUST NOT be used for authentication prior to the and MUST NOT be used for authentication after the . Gets the key tag value of the that validates this . Key Tag Calculation Gets the value which identifies the owner name of the that a validator is supposed to use to validate this . Gets the cryptographic signature that covers the RRSIG RDATA (excluding the Signature field) and the RRset specified by the RRSIG owner name, RRSIG class, and RRSIG Type Covered field. The format of this field depends on the algorithm in use. Gets the base64 string representation of the . Initializes a new instance of the class. If , or is null. A representing a SOA (Start Of Authority) record. RFC 1035 Gets a 32 bit time value that specifies the upper limit on the time interval that can elapse before the zone is no longer authoritative. The expiration. Gets the unsigned 32 bit minimum TTL field that should be exported with any RR from this zone. The minimum TTL. Gets the domain name of the name server that was the original or primary source of data for this zone. The domain name. Gets a 32 bit time interval before the zone should be refreshed. The refresh time. Gets a 32 bit time interval that should elapse before a failed refresh should be retried. The retry time. Gets a domain name which specifies the mailbox of the person responsible for this zone. The responsible mailbox domain name. Gets the unsigned 32 bit version number of the original copy of the zone.Zone transfers preserve this value. This value wraps and should be compared using sequence space arithmetic. The serial number. Initializes a new instance of the class. The information. Name original domain name. Name responsible domain name. The serial number. The refresh time. The retry time. The expire time. The minimum TTL. If or or is null. A representing a location of the server(s) for a specific protocol and domain. RFC 2782 Gets the port. The port. Gets the priority. The priority. Gets the target domain name. The target. Gets the weight. The weight. Initializes a new instance of the class. The information. The priority. The weight. The port. The target. If or is null. A representing an SSH fingerprint SSHFP RRs are used to hold SSH fingerprints. Upon connecting to a host an SSH client may choose to query for this to check the fingerprint(s) RFC 4255 RFC 6594 RFC 7479 The information. The algorithm. The fingerprint type. The fingerprint. Algorithm used for the fingerprint Fingerprint type used for the fingerprint Fingerprint as defined in the RR Algorithm used by Reserved for later use RSA DSS Elliptic Curve DSA Edwards-curve DSA Fingerprint type used by Reserved for later use SHA-1 fingerprint SHA-256 fingerprint A representing a TLSA record. Gets the , which specifies the provided association that will be used to match the certificate presented in the TLS handshake. Gets the , which specifies which part of the TLS certificate presented by the server will be matched against the . Gets the , which specifies how the is presented. Gets the "certificate association data" to be matched. Gets the string representation of the in hexadecimal. Initializes a new instance of the class. If or is null. The usage flag specifies the provided association that will be used to match the certificate presented in the TLS handshake. Certificate authority constraint. Service certificate constraint. Trust Anchor Assertion. Domain issued certificate. Flag which specifies which part of the TLS certificate presented by the server will be matched against the association data. Select the entire certificate for matching. Select the public key for certificate matching. Flag which specifies how the certificate association is presented. Exact match, the entire information selected is present in the certificate association data. SHA-256 hash of selected content. SHA-512 hash of selected content. A representing a text resource. TXT RRs are used to hold descriptive text. The semantics of the text depends on the domain where it is found. RFC 1035 RFC 1464 Gets the list of TXT values of this resource record in escaped form, valid for root file. See https://tools.ietf.org/html/rfc1035#section-5.1 for escape details. Gets the actual UTF8 representation of the text values of this record. Initializes a new instance of the class. The information. The values. The UTF8 values. If or or is null. Experimental RR, not sure if the implementation is actually correct either (not tested). RFC 1035 Gets any data stored in this record. The byte array. Gets the unknown bytes as Base64 string. Initializes a new instance of the class. The information. The raw data. If or is null. A representing a Uniform Resource Identifier (URI) resource. RFC 7553 Gets or sets the target Uri. The target. Gets or sets the priority. The priority. Gets or sets the weight. The weight. Initializes a new instance of the class. The information. The priority. The weight. The target. If or is null. A representing a Well Known Service description. Instead of describing the supported protocols in RFCs, the list is now published on http://www.iana.org/. RFC 3232, the most current update. Gets the address. The address. Gets the Protocol. According to https://tools.ietf.org/html/rfc6335, only ports for TCP, UDP, DCCP and SCTP services will be assigned. Gets the binary raw bitmap. Use to determine which ports are actually configured. Gets the list of assigned ports. For example, if this list contains port 25, which is assigned to the SMTP service. This means that a SMTP services is running on with transport . Port numbers Initializes a new instance of the class. The information. The address. The protocol. The raw data. If or or is null. Specifies kind of query in this message. This value is set by the originator of a query and copied into the response. A standard query. RFC 1035 An inverse query. RFC 3425 A server status request. RFC 1035 Unassigned value Notify query. RFC 1996 Update query. RFC 2136 Unassigned value Unassigned value Unassigned value Unassigned value Unassigned value Unassigned value Unassigned value Unassigned value Unassigned value Unassigned value Extension methods for the contract. The methods implement common queries which are more complex and have some business logic. The GetHostEntry method queries a DNS server for the IP addresses and aliases associated with the . In case is an , GetHostEntry does a reverse lookup on that first to determine the hostname. IP addresses found are returned in . records are used to populate the .
The property will be set to the resolved hostname or .
The following code example uses the method to resolve an IP address or hostname to an instance. The method has some logic to populate the list: In case of sub-domain queries or similar, there might be multiple records for one , If only one is in the result set, all the aliases found will be returned. If more than one is in the result set, aliases are returned only if at least one doesn't match the queried hostname. The instance. The or host name to query for. An instance that contains address information about the host specified in . In case the could not be resolved to a domain name, this method returns null, unless is set to true, then it might throw a . If is null. In case is set to true and a DNS error occurs.
The GetHostEntryAsync method queries a DNS server for the IP addresses and aliases associated with the . In case is an , GetHostEntry does a reverse lookup on that first to determine the hostname. IP addresses found are returned in . records are used to populate the .
The property will be set to the resolved hostname or .
The following code example uses the method to resolve an IP address or hostname to an instance. The method has some logic to populate the list: In case of sub-domain queries or similar, there might be multiple records for one , If only one is in the result set, all the aliases found will be returned. If more than one is in the result set, aliases are returned only if at least one doesn't match the queried hostname. The instance. The or host name to query for. An instance that contains address information about the host specified in . In case the could not be resolved to a domain name, this method returns null, unless is set to true, then it might throw a . If is null. In case is set to true and a DNS error occurs.
The GetHostEntry method does a reverse lookup on the IP , and queries a DNS server for the IP addresses and aliases associated with the resolved hostname. IP addresses found are returned in . records are used to populate the .
The property will be set to the resolved hostname of the .
The following code example uses the method to resolve an IP address to an instance. The method has some logic to populate the list: In case of sub-domain queries or similar, there might be multiple records for one , If only one is in the result set, all the aliases found will be returned. If more than one is in the result set, aliases are returned only if at least one doesn't match the queried hostname. The instance. The to query for. An instance that contains address information about the host specified in . In case the could not be resolved to a domain name, this method returns null, unless is set to true, then it might throw a . If is null. In case is set to true and a DNS error occurs.
The GetHostEntryAsync method does a reverse lookup on the IP , and queries a DNS server for the IP addresses and aliases associated with the resolved hostname. IP addresses found are returned in . records are used to populate the .
The property will be set to the resolved hostname of the .
The following code example uses the method to resolve an IP address to an instance. The method has some logic to populate the list: In case of sub-domain queries or similar, there might be multiple records for one , If only one is in the result set, all the aliases found will be returned. If more than one is in the result set, aliases are returned only if at least one doesn't match the queried hostname. The instance. The to query for. An instance that contains address information about the host specified in . In case the could not be resolved to a domain name, this method returns null, unless is set to true, then it might throw a . If is null. In case is set to true and a DNS error occurs.
The GetHostName method queries a DNS server to resolve the hostname of the via reverse lookup. The instance. The to resolve. The hostname if the reverse lookup was successful or null, in case the host was not found. If is set to true, this method will throw an instead of returning null! If is null. If no host has been found and is true. The GetHostNameAsync method queries a DNS server to resolve the hostname of the via reverse lookup. The instance. The to resolve. The hostname if the reverse lookup was successful or null, in case the host was not found. If is set to true, this method will throw an instead of returning null! If is null. If no host has been found and is true. The ResolveService method does a lookup for _{}[._{}].{} and aggregates the result (hostname, port and list of s) to a . This method expects matching A or AAAA records to populate the , and/or a record to populate the property of the result. The returned list of s and/or the hostname can be empty if no matching additional records are found. The instance. The base domain, which will be appended to the end of the query string. The name of the service to look for. Must not have any _ prefix. The protocol of the service to query for. Set it to or to not pass any protocol. A collection of s. If or are null. RFC 2782 The ResolveServiceAsync method does a lookup for _{}[._{}].{} and aggregates the result (hostname, port and list of s) to a . This method expects matching A or AAAA records to populate the , and/or a record to populate the property of the result. The returned list of s and/or the hostname can be empty if no matching additional records are found. The instance. The base domain, which will be appended to the end of the query string. The name of the service to look for. Must not have any _ prefix. The protocol of the service to query for. Set it to or to not pass any protocol. A collection of s. If or are null. RFC 2782 The ResolveService method does a lookup for _{}[._{}].{} and aggregates the result (hostname, port and list of s) to a . This method expects matching A or AAAA records to populate the , and/or a record to populate the property of the result. The returned list of s and/or the hostname can be empty if no matching additional records are found. The instance. The base domain, which will be appended to the end of the query string. The name of the service to look for. Must not have any _ prefix. An optional tag. Must not have any _ prefix. A collection of s. If or are null. RFC 2782 The ResolveServiceAsync method does a lookup for _{}[._{}].{} and aggregates the result (hostname, port and list of s) to a . This method expects matching A or AAAA records to populate the , and/or a record to populate the property of the result. The returned list of s and/or the hostname can be empty if no matching additional records are found. The instance. The base domain, which will be appended to the end of the query string. The name of the service to look for. Must not have any _ prefix. An optional tag. Must not have any _ prefix. A collection of s. If or are null. RFC 2782 Constructs a DNS query string from the constituent parts. The base domain, which will be appended to the end of the query string. The name of the service to look for. Must not have any _ prefix. An optional tag. Must not have any _ prefix. A service string that can be used in a DNS service query. Transforms a DNS query result into a collection of objects. The DNS A collection of s. Extends by the property. Gets or sets the port. The port of this entry. Gets or sets priority of the original record. Might be zero if not provided. The priority of this entry. Gets or sets weight of the original record. Might be zero if not provided. The weight of this entry. The options used to override the defaults of per query. The minimum payload size. Anything equal or less than that will default back to this value and might disable EDNS. The maximum reasonable payload size. Gets or sets a flag indicating whether each will contain a full documentation of the response(s). Default is False. Gets or sets a flag indicating whether DNS queries should use response caching or not. The cache duration is calculated by the resource record of the response. Usually, the lowest TTL is used. Default is True. In case the DNS Server returns records with a TTL of zero. The response cannot be cached. Gets or sets a flag indicating whether DNS queries should instruct the DNS server to do recursive lookups, or not. Default is True. The flag indicating if recursion should be used or not. Gets or sets the number of tries to get a response from one name server before trying the next one. Only transient errors, like network or connection errors will be retried. Default is 2 which will be three tries total. If all configured error out after retries, an exception will be thrown at the end. The number of retries. Gets or sets a flag indicating whether the should throw a in case the query result has a other than . Default is False. If set to False, the query will return a result with an which contains more information. If set to True, any query method of will throw an if the response header indicates an error. If both, and are set to True, will continue to query all configured . If none of the servers yield a valid response, a will be thrown with the error of the last response. Gets or sets a flag indicating whether the can cycle through all configured on each consecutive request, basically using a random server, or not. Default is True. If only one is configured, this setting is not used. If False, configured endpoint will be used in random order. If True, the order will be preserved. Even if is set to True, the endpoint might still get disabled and might not being used for some time if it errors out, e.g. no connection can be established. Gets or sets a flag indicating whether to query the next configured in case the response of the last query returned a other than . Default is True. If True, lookup client will continue until a server returns a valid result, or, if no yield a valid result, the last response with the error will be returned. In case no server yields a valid result and is also enabled, an exception will be thrown containing the error of the last response. If True and is enabled, the exception will be thrown on first encounter without trying any other servers. Gets or sets a flag indicating whether to query the next configured if the response does not have an error but the query was not answered by the response. Default is True. The query is answered if there is at least one in the answers section matching the 's . If there are zero answers in the response, the query is not answered, independent of the . If there are answers in the response, the is used to find a matching record, query types and will be ignored by this check. Gets or sets the request timeout in milliseconds. is used for limiting the connection and request time for one operation. Timeout must be greater than zero and less than . If (or -1) is used, no timeout will be applied. Default is 5 seconds. If a very short timeout is configured, queries will more likely result in s. Important to note, s will be retried, if are not disabled (set to 0). This should help in case one or more configured DNS servers are not reachable or under load for example. Gets or sets a flag indicating whether TCP should be used in case a UDP response is truncated. Default is True. If False, truncated results will potentially yield no or incomplete answers. Gets or sets a flag indicating whether UDP should not be used at all. Default is False. Enable this only if UDP cannot be used because of your firewall rules for example. Also, zone transfers (see ) must use TCP only. Gets or sets the maximum buffer used for UDP requests. Defaults to 4096. If this value is less or equal to 512 bytes, EDNS might be disabled. Gets or sets a flag indicating whether EDNS should be enabled and the DO flag should be set. Defaults to False. Gets or sets a flag indicating whether the DNS failures are being cached. The purpose of caching failures is to reduce repeated lookup attempts within a short space of time. Defaults to False. Gets or sets the duration to cache failed lookups. Does not apply if failed lookups are not being cached. Defaults to 5 seconds. Converts the query options into readonly settings. The options. The options used to override the defaults of per query. Creates a new instance of without name servers. If no nameservers are configured, a query will fallback to the nameservers already configured on the instance. Creates a new instance of . A collection of name servers. If is null. Creates a new instance of . A collection of name servers. If is null. Creates a new instance of . A collection of name servers. If is null. Gets a list of name servers which should be used to query. Converts the query options into readonly settings. The options. The options used to configure defaults in and to optionally use specific settings per query. Creates a new instance of with default settings. Creates a new instance of . A collection of name servers. If is null. Creates a new instance of . A collection of name servers. If is null. Creates a new instance of . A collection of name servers. If is null. Gets or sets a flag indicating whether the name server collection should be automatically resolved. Default is True. If name servers are configured manually via the constructor, this flag is set to false. If you want both, your manually configured servers and auto resolved name servers, you can use both (ctor or) and set to True. Gets or sets a which can override the TTL of a resource record in case the TTL of the record is lower than this minimum value. Default is Null. This is useful in case the server returns records with zero TTL. This setting gets ignored in case is set to False, or the value is set to Null or . The maximum value is 24 days or (choose a wise setting). Gets a which can override the TTL of a resource record in case the TTL of the record is higher than this maximum value. Default is Null. This setting gets ignored in case is set to False, or the value is set to Null, or . The maximum value is 24 days (which shouldn't be used). The options used to override the defaults of per query. Gets a flag indicating whether each will contain a full documentation of the response(s). Default is False. Gets a flag indicating whether DNS queries should use response caching or not. The cache duration is calculated by the resource record of the response. Usually, the lowest TTL is used. Default is True. In case the DNS Server returns records with a TTL of zero. The response cannot be cached. Gets a flag indicating whether DNS queries should instruct the DNS server to do recursive lookups, or not. Default is True. The flag indicating if recursion should be used or not. Gets the number of tries to get a response from one name server before trying the next one. Only transient errors, like network or connection errors will be retried. Default is 5. If all configured error out after retries, an exception will be thrown at the end. The number of retries. Gets a flag indicating whether the should throw a in case the query result has a other than . Default is False. If set to False, the query will return a result with an which contains more information. If set to True, any query method of will throw an if the response header indicates an error. If both, and are set to True, will continue to query all configured . If none of the servers yield a valid response, a will be thrown with the error of the last response. Gets a flag indicating whether the can cycle through all configured on each consecutive request, basically using a random server, or not. Default is True. If only one is configured, this setting is not used. If False, configured endpoint will be used in random order. If True, the order will be preserved. Even if is set to True, the endpoint might still get disabled and might not being used for some time if it errors out, e.g. no connection can be established. Gets a flag indicating whether to query the next configured in case the response of the last query returned a other than . Default is True. If True, lookup client will continue until a server returns a valid result, or, if no yield a valid result, the last response with the error will be returned. In case no server yields a valid result and is also enabled, an exception will be thrown containing the error of the last response. If True and is enabled, the exception will be thrown on first encounter without trying any other servers. Gets or sets a flag indicating whether to query the next configured if the response does not have an error but the query was not answered by the response. Default is True. The query is answered if there is at least one in the answers section matching the 's . If there are zero answers in the response, the query is not answered, independent of the . If there are answers in the response, the is used to find a matching record, query types and will be ignored by this check. Gets the request timeout in milliseconds. is used for limiting the connection and request time for one operation. Timeout must be greater than zero and less than . If (or -1) is used, no timeout will be applied. Default is 5 seconds. If a very short timeout is configured, queries will more likely result in s. Important to note, s will be retried, if are not disabled (set to 0). This should help in case one or more configured DNS servers are not reachable or under load for example. Gets a flag indicating whether TCP should be used in case a UDP response is truncated. Default is True. If False, truncated results will potentially yield no or incomplete answers. Gets a flag indicating whether UDP should not be used at all. Default is False. Enable this only if UDP cannot be used because of your firewall rules for example. Also, zone transfers (see ) must use TCP only. Gets a flag indicating whether EDNS is enabled based on the values of and . Gets the maximum buffer used for UDP requests. Defaults to 4096. If this value is less or equal to 512 bytes, EDNS might be disabled. Gets a flag indicating whether EDNS should be enabled and the DO flag should be set. Defaults to False. Gets a flag indicating whether the DNS failures are being cached. The purpose of caching failures is to reduce repeated lookup attempts within a short space of time. Defaults to False. If failures are being cached this value indicates how long they will be held in the cache for. Defaults to 5 seconds. Creates a new instance of . The readonly version of used to customize settings per query. Gets a collection of name servers which should be used to query. Creates a new instance of . Creates a new instance of . The readonly version of used as default settings in . Creates a new instance of . Gets a which can override the TTL of a resource record in case the TTL of the record is lower than this minimum value. Default is Null. This is useful in cases where the server returns records with zero TTL. This setting gets ignored in case is set to False. The maximum value is 24 days or . Gets a which can override the TTL of a resource record in case the TTL of the record is higher than this maximum value. Default is Null. This setting gets ignored in case is set to False. The maximum value is 24 days. Setting it to would be equal to not providing a value. The response returned by any query performed by with all answer sections, header and message information. Gets the name server which responded with this result. The name server. Gets a list of additional records. Gets a list of all answers, additional and authority records. Gets the audit trail if . as set to true, null otherwise. The audit trail. Gets a list of answer records. Gets a list of authority records. Returns a string value representing the error response code in case an error occurred, otherwise ''. A flag indicating if the header contains a response code other than . Gets the header of the response. Gets the list of questions. Gets the size of the message. The size of the message. Gets the settings used to produce this response. The class transports information of the lookup query performed by . A list of questions is returned by (although, the list will always contain only one ). Gets the domain name the lookup was running for. The name of the query. Gets the question class. The question class. Gets the type of the question. The type of the question. Initializes a new instance of the class. The query. Type of the question. The question class. If is null. Initializes a new instance of the class. The query. Type of the question. The question class. If is null. Returns the information of this instance in a friendly format with an optional . The optional offset which can be used for pretty printing. The string representation of this instance. Represents a simple request message which can be send through . 4 bit response codes of the 's header. RFC 6895 No error condition RFC 1035 Format error. The name server was unable to interpret the query. RFC 1035 Server failure. The name server was unable to process this query due to a problem with the name server. RFC 1035 Name Error. Meaningful only for responses from an authoritative name server, this code signifies that the domain name referenced in the query does not exist. RFC 1035 Not Implemented. The name server does not support the requested kind of query. RFC 1035 Refused. The name server refuses to perform the specified operation for policy reasons. For example, a name server may not wish to provide the information to the particular requester, or a name server may not wish to perform a particular operation (e.g., zone transfer) for particular data. RFC 1035 Name Exists when it should not. RFC 2136 Resource record set exists when it should not. RFC 2136 Resource record set that should exist but does not. RFC 2136 Server Not Authoritative for zone / Not Authorized. RFC 2136 RFC 2845 Name not contained in zone. RFC 2136 Unassigned value Unassigned value Unassigned value Unassigned value Unassigned value Extended response codes of the with OPT. RFC 6895 No error condition RFC 1035 Format error. The name server was unable to interpret the query. RFC 1035 Server failure. The name server was unable to process this query due to a problem with the name server. RFC 1035 Name Error. Meaningful only for responses from an authoritative name server, this code signifies that the domain name referenced in the query does not exist. RFC 1035 Not Implemented. The name server does not support the requested kind of query. RFC 1035 Refused. The name server refuses to perform the specified operation for policy reasons. For example, a name server may not wish to provide the information to the particular requester, or a name server may not wish to perform a particular operation (e.g., zone transfer) for particular data. RFC 1035 Name Exists when it should not. RFC 2136 Resource record set exists when it should not. RFC 2136 Resource record set that should exist but does not. RFC 2136 Server Not Authoritative for zone / Not Authorized. RFC 2136 RFC 2845 Name not contained in zone. RFC 2136 Unassigned value Unassigned value Unassigned value Unassigned value Unassigned value Bad OPT Version or TSIG Signature Failure. RFC 2671 RFC 2845 Key not recognized. RFC 2845 Signature out of time window. RFC 2845 Bad TKEY Mode. RFC 2930 Duplicate key name. RFC 2930 Algorithm not supported. RFC 2930 Bad Truncation. RFC 4635 Bad/missing Server Cookie RFC 7873 Unknown error. Indicates a timeout error. Connection to the remote server couldn't be established. A DnsClient specific exception transporting additional information about the query causing this exception. Gets the response code. The response code. Gets the audit trail if . as set to true, null otherwise. The audit trail. Gets a human readable error message. The error message. Initializes a new instance of the class with set to . Initializes a new instance of the class with set to and a custom . Initializes a new instance of the class with the standard error text for the given . Initializes a new instance of the class with set to and a custom and inner . Initializes a new instance of the class with a custom and the given . Initializes a new instance of the class with a custom and the given . The header section of a . Gets the number of additional records in the . The number of additional records. Gets the number of answer records in the . The number of answer records. Gets a value indicating whether the future use flag is set. The future use flag. Gets a value indicating whether this instance has authority answers. true if this instance has authority answers; otherwise, false. Gets the identifier. The identifier. Gets a value indicating whether the result is authentic data. true if the result is authentic; otherwise, false. Gets a value indicating whether checking is disabled. true if checking is disabled; otherwise, false. Gets a value indicating whether this instance has a query. true if this instance has a query; otherwise, false. Gets the number of name servers. The number of name servers. Gets the kind of query defined by . The query kind. Gets the number of questions of the . The number of questions. Gets a value indicating whether recursion is available on the DNS server. true if recursion is available; otherwise, false. Gets the response code. The response code. Gets a value indicating whether the result was truncated. true if the result was truncated; otherwise, false. Gets a value indicating whether recursion desired flag was set by the request. true if the recursion desired flag was set; otherwise, false. Initializes a new instance of the class. The identifier. The flags. The question count. The answer count. The additional count. The server count. Returns a that represents this instance. A that represents this instance. Gets the readonly representation of this message which can be returned. The type is used to normalize and validate domain names and labels. The ACE prefix indicates that the domain name label contains not normally supported characters and that the label has been encoded. The maximum length in bytes for one label. The maximum supported total length in bytes for a domain name. The calculation of the actual bytes this consumes includes all bytes used for to encode it as octet string. The root label ".". Gets the original value. Gets the validated and eventually modified value. Performs an implicit conversion from to . The name. The result of the conversion. Parses the given and validates all labels. An empty string will be interpreted as root label. A domain name. The representing the given . If is null. Transforms names with the to the Unicode variant and adds a trailing '.' at the end if not present. The original value will be kept in this instance in case it is needed. The method does not parse the domain name unless it contains a . The value to check. The representation. Generic contract to query DNS endpoints. Implemented by . Performs a DNS lookup for the given , and . The domain name query. The . The . The which contains the response headers and lists of resource records. If is null. After retries and fallbacks, if none of the servers were accessible, timed out or (if is enabled) returned error results. Performs a DNS lookup for the given . The domain name query. The which contains the response headers and lists of resource records. If is null. After retries and fallbacks, if none of the servers were accessible, timed out or (if is enabled) returned error results. Performs a DNS lookup for the given . The domain name query. Query options to be used instead of 's settings. The which contains the response headers and lists of resource records. If or is null. After retries and fallbacks, if none of the servers were accessible, timed out or (if is enabled) returned error results. Returns cached results for the given from the in-memory cache, if available, or Null otherwise. This method will not perform a full lookup if there is nothing found in cache or the cache is disabled! The domain name query. The which contains the cached response headers and lists of resource records. If no matching cache entry is found Null is returned. Returns cached results for the given , and against the in-memory cache, if available, or Null otherwise. This method will not perform a full lookup if there is nothing found in cache or the cache is disabled! The domain name query. The . The . The which contains the cached response headers and lists of resource records. If no matching cache entry is found Null is returned. Performs a DNS lookup for the given , and The domain name query. The . The . The cancellation token. The which contains the response headers and lists of resource records. If is null. If cancellation has been requested for the passed in . After retries and fallbacks, if none of the servers were accessible, timed out or (if is enabled) returned error results. Performs a DNS lookup for the given . The domain name query. The cancellation token. The which contains the response headers and lists of resource records. If is null. After retries and fallbacks, if none of the servers were accessible, timed out or (if is enabled) returned error results. Performs a DNS lookup for the given . The domain name query. Query options to be used instead of 's settings. The cancellation token. The which contains the response headers and lists of resource records. If or is null. After retries and fallbacks, if none of the servers were accessible, timed out or (if is enabled) returned error results. Does a reverse lookup for the . The . The which might contain the for the . If is null. After retries and fallbacks, if none of the servers were accessible, timed out or (if is enabled) returned error results. Does a reverse lookup for the . The . Query options to be used instead of 's settings. The which might contain the for the . If is null. After retries and fallbacks, if none of the servers were accessible, timed out or (if is enabled) returned error results. Does a reverse lookup for the . The . The cancellation token. The which might contain the for the . If is null. If cancellation has been requested for the passed in . After retries and fallbacks, if none of the servers were accessible, timed out or (if is enabled) returned error results. Does a reverse lookup for the . The . Query options to be used instead of 's settings. The cancellation token. The which might contain the for the . If is null. If cancellation has been requested for the passed in . After retries and fallbacks, if none of the servers were accessible, timed out or (if is enabled) returned error results. Performs a DNS lookup for the given , and using only the passed in . To query specific servers can be useful in cases where you have to use a different DNS server than initially configured (without creating a new instance of for example). The list of one or more server(s) which should be used for the lookup. The domain name query. The . The . The which contains the response headers and lists of resource records. If the collection doesn't contain any elements. If is null. After retries and fallbacks, if none of the servers were accessible, timed out or (if is enabled) returned error results. Performs a DNS lookup for the given using only the passed in . To query specific servers can be useful in cases where you have to use a different DNS server than initially configured (without creating a new instance of for example). The list of one or more server(s) which should be used for the lookup. The domain name query. The which contains the response headers and lists of resource records. If the collection doesn't contain any elements. If or is null. After retries and fallbacks, if none of the servers were accessible, timed out or (if is enabled) returned error results. Performs a DNS lookup for the given using only the passed in . To query specific servers can be useful in cases where you have to use a different DNS server than initially configured (without creating a new instance of for example). The list of one or more server(s) which should be used for the lookup. The domain name query. Query options to be used instead of 's settings. The which contains the response headers and lists of resource records. If the collection doesn't contain any elements. If , or is null. After retries and fallbacks, if none of the servers were accessible, timed out or (if is enabled) returned error results. Performs a DNS lookup for the given , and using only the passed in . To query specific servers can be useful in cases where you have to use a different DNS server than initially configured (without creating a new instance of for example). The list of one or more server(s) which should be used for the lookup. The domain name query. The . The . The which contains the response headers and lists of resource records. If the collection doesn't contain any elements. If is null. After retries and fallbacks, if none of the servers were accessible, timed out or (if is enabled) returned error results. Performs a DNS lookup for the given , and using only the passed in . To query specific servers can be useful in cases where you have to use a different DNS server than initially configured (without creating a new instance of for example). The list of one or more server(s) which should be used for the lookup. The domain name query. The . The . The which contains the response headers and lists of resource records. If the collection doesn't contain any elements. If is null. After retries and fallbacks, if none of the servers were accessible, timed out or (if is enabled) returned error results. Performs a DNS lookup for the given , and using only the passed in . To query specific servers can be useful in cases where you have to use a different DNS server than initially configured (without creating a new instance of for example). The list of one or more server(s) which should be used for the lookup. The domain name query. The . The . The cancellation token. The which contains the response headers and lists of resource records. If the collection doesn't contain any elements. If is null. If cancellation has been requested for the passed in . After retries and fallbacks, if none of the servers were accessible, timed out or (if is enabled) returned error results. Performs a DNS lookup for the given using only the passed in . To query specific servers can be useful in cases where you have to use a different DNS server than initially configured (without creating a new instance of for example). The list of one or more server(s) which should be used for the lookup. The domain name query. The cancellation token. The which contains the response headers and lists of resource records. If the collection doesn't contain any elements. If or is null. After retries and fallbacks, if none of the servers were accessible, timed out or (if is enabled) returned error results. Performs a DNS lookup for the given using only the passed in . To query specific servers can be useful in cases where you have to use a different DNS server than initially configured (without creating a new instance of for example). The list of one or more server(s) which should be used for the lookup. The domain name query. Query options to be used instead of 's settings. The cancellation token. The which contains the response headers and lists of resource records. If the collection doesn't contain any elements. If , or is null. After retries and fallbacks, if none of the servers were accessible, timed out or (if is enabled) returned error results. Performs a DNS lookup for the given , and using only the passed in . To query specific servers can be useful in cases where you have to use a different DNS server than initially configured (without creating a new instance of for example). The list of one or more server(s) which should be used for the lookup. The domain name query. The . The . The cancellation token. The which contains the response headers and lists of resource records. If the collection doesn't contain any elements. If is null. If cancellation has been requested for the passed in . After retries and fallbacks, if none of the servers were accessible, timed out or (if is enabled) returned error results. Performs a DNS lookup for the given , and using only the passed in . To query specific servers can be useful in cases where you have to use a different DNS server than initially configured (without creating a new instance of for example). The list of one or more server(s) which should be used for the lookup. The domain name query. The . The . The cancellation token. The which contains the response headers and lists of resource records. If the collection doesn't contain any elements. If is null. If cancellation has been requested for the passed in . After retries and fallbacks, if none of the servers were accessible, timed out or (if is enabled) returned error results. Does a reverse lookup for the using only the passed in . The list of one or more server(s) which should be used for the lookup. The . The which might contain the for the . If the collection doesn't contain any elements. If or is null. After retries and fallbacks, if none of the servers were accessible, timed out or (if is enabled) returned error results. Does a reverse lookup for the using only the passed in . The list of one or more server(s) which should be used for the lookup. The . The which might contain the for the . If the collection doesn't contain any elements. If or is null. After retries and fallbacks, if none of the servers were accessible, timed out or (if is enabled) returned error results. Does a reverse lookup for the using only the passed in . The list of one or more server(s) which should be used for the lookup. The . The which might contain the for the . If the collection doesn't contain any elements. If or is null. After retries and fallbacks, if none of the servers were accessible, timed out or (if is enabled) returned error results. Does a reverse lookup for the using only the passed in . The list of one or more server(s) which should be used for the lookup. The . Query options to be used instead of 's settings. The which might contain the for the . If the collection doesn't contain any elements. If , or is null. After retries and fallbacks, if none of the servers were accessible, timed out or (if is enabled) returned error results. Does a reverse lookup for the using only the passed in . The list of one or more server(s) which should be used for the lookup. The . The cancellation token. The which might contain the for the . If the collection doesn't contain any elements. If or is null. If cancellation has been requested for the passed in . After retries and fallbacks, if none of the servers were accessible, timed out or (if is enabled) returned error results. Does a reverse lookup for the using only the passed in . The list of one or more server(s) which should be used for the lookup. The . The cancellation token. The which might contain the for the . If the collection doesn't contain any elements. If or is null. If cancellation has been requested for the passed in . After retries and fallbacks, if none of the servers were accessible, timed out or (if is enabled) returned error results. Does a reverse lookup for the using only the passed in . The list of one or more server(s) which should be used for the lookup. The . The cancellation token. The which might contain the for the . If the collection doesn't contain any elements. If or is null. If cancellation has been requested for the passed in . After retries and fallbacks, if none of the servers were accessible, timed out or (if is enabled) returned error results. Does a reverse lookup for the using only the passed in . The list of one or more server(s) which should be used for the lookup. The . Query options to be used instead of 's settings. The cancellation token. The which might contain the for the . If the collection doesn't contain any elements. If , or is null. If cancellation has been requested for the passed in . After retries and fallbacks, if none of the servers were accessible, timed out or (if is enabled) returned error results. Contract defining the result of a query performed by . Gets the list of questions. Gets a list of additional records. Gets a list of all answers, additional and authority records. Gets a list of answer records. Gets a list of authority records. Gets the audit trail if . as set to true, null otherwise. The audit trail. Returns a string value representing the error response code in case an error occurred, otherwise ''. A flag indicating if the header contains a response code other than . Gets the header of the response. Gets the size of the message. The size of the message. Gets the name server which responded with this result. The name server. Gets the settings used to produce this response. The contract for the LookupClient. The interfaces for the query methods and the lookup client properties are separated so that one can inject or expose only the without exposing the configuration options. Gets the list of configured or resolved name servers of the instance. Gets the configured settings of the instance. The is the main query class of this library and should be used for any kind of DNS lookup query. It implements and which contains a number of extension methods, too. The extension methods internally all invoke the standard queries though. A basic example without specifying any DNS server, which will use the DNS server configured by your local network. Creates a new instance of without specifying any name server. This will implicitly use the name server(s) configured by the local network adapter(s). This uses . The resulting list of name servers is highly dependent on the local network configuration and OS. In the following example, we will create a new without explicitly defining any DNS server. This will use the DNS server configured by your local network. Creates a new instance of with default settings and one or more DNS servers identified by their . The default port 53 will be used for all s provided. The (s) to be used by this instance. Connecting to one or more DNS server using the default port: If is null. Create a new instance of with default settings and one DNS server defined by and . The of the DNS server. The port of the DNS server. Connecting to one specific DNS server which does not run on the default port 53: If is null. Creates a new instance of with default settings and the given name servers. The (s) to be used by this instance. Connecting to one specific DNS server which does not run on the default port 53: The class also contains predefined s for the public Google DNS servers, which can be used as follows: If is null. Creates a new instance of with default settings and the given name servers. The (s) to be used by this instance. If is null. Creates a new instance of with custom settings. The options to use with this instance. If is null. Gets a reverse lookup question for an . The address. A with the proper arpa domain query for the given address. Represents a name server instance used by . Also, comes with some static methods to resolve name servers from the local network configuration. The default DNS server port. The public Google DNS IPv4 endpoint. The second public Google DNS IPv6 endpoint. The public Google DNS IPv6 endpoint. The second public Google DNS IPv6 endpoint. A public Cloudflare DNS endpoint. A public Cloudflare DNS endpoint. A public Cloudflare DNS IPv6 endpoint. A public Cloudflare DNS IPv6 endpoint. Initializes a new instance of the class. The name server endpoint. If is null. Initializes a new instance of the class. The name server endpoint. The name server port. If is null. Initializes a new instance of the class. The name server endpoint. If is null. Initializes a new instance of the class from a . The endpoint. Initializes a new instance of the class from a . The address. Gets the string representation of the configured . Gets the port. Gets the address family. Gets the size of the supported UDP payload. This value might get updated by by reading the options records returned by a query. The size of the supported UDP payload. Returns a that represents this instance. A that represents this instance. Gets a list of name servers by iterating over the available network interfaces. If is enabled, this method will return the Google public DNS endpoints if no local DNS server was found. If set to true local IPv6 sites are skipped. If set to true the public Google DNS servers are returned if no other servers could be found. The list of name servers. CLASS fields appear in resource records. The Internet. The CSNET class (Obsolete - used only for examples in some obsolete RFCs). The CHAOS class. Hesiod [Dyer 87]. The query type field appear in the question part of a query. Query types are a superset of . A host address. RFC 1035 An authoritative name server. RFC 1035 A mail destination (OBSOLETE - use MX). RFC 1035 A mail forwarder (OBSOLETE - use MX). RFC 1035 The canonical name for an alias. RFC 1035 Marks the start of a zone of authority. RFC 1035 A mailbox domain name (EXPERIMENTAL). RFC 1035 A mail group member (EXPERIMENTAL). RFC 1035 A mailbox rename domain name (EXPERIMENTAL). RFC 1035 A Null resource record (EXPERIMENTAL). RFC 1035 A well known service description. RFC 3232 A domain name pointer. RFC 1035 Host information. RFC 1035 RFC 1010 Mailbox or mail list information. RFC 1035 Mail exchange. RFC 1035 RFC 974 Text resources. RFC 1035 RFC 1464 Responsible Person. RFC 1183 AFS Data Base location. RFC 1183 RFC 5864 An IPv6 host address. RFC 3596 A resource record which specifies the location of the server(s) for a specific protocol and domain. RFC 2782 DS rfc4034 RFC 4034 RRSIG rfc3755. RFC 3755 NSEC rfc4034. RFC 4034 DNSKEY rfc4034 RFC 4034 TLSA rfc6698 RFC 6698 SPF records don't officially have a dedicated RR type, should be used instead. The behavior of TXT and SPF are the same. This library will return a TXT record but will set the header type to SPF if such a record is returned. RFC 7208 DNS zone transfer request. This can be used only if is set to true as AXFR is only supported via TCP. The DNS Server might only return results for the request if the client connection/IP is allowed to do so. Generic any query *. A Uniform Resource Identifier (URI) resource record. RFC 7553 A certification authority authorization. RFC 6844 A SSH Fingerprint resource record. RFC 4255 Gets or sets the DnsClient should use. Per default it will log to . Helper for reading config files where each row is a key-value data pair. The input key-values must not have any whitespace within them. Keys are only matched if they begin a line, with no preceding whitespace. Constructs a new RowConfigReader which reads from the given string. The string to parse through. Constructs a new RowConfigReader which reads from the given string. The string to parse through. The comparison kind to use. Gets the next occurrence of the given key, from the current position of the reader, or throws if no occurrence of the key exists in the remainder of the string. Tries to get the next occurrence of the given key from the current position of the reader. If successful, returns true and stores the result in 'value'. Otherwise, returns false. Gets the next occurrence of the key in the string, and parses it as an Int32. Throws if the key is not found in the remainder of the string, or if the key cannot be successfully parsed into an Int32. This is mainly provided as a helper because most Linux config/info files store integral data. Reads the value of the first occurrence of the given key contained in the string given. The key-value row configuration string. The key to find. The value of the row containing the first occurrence of the key. Extension methods for . Translates a IPv4 or IPv6 into an arpa address. Used for reverse DNS lookup to get the domain name of the given . The address to translate. The arpa representation of the address. Extension methods for where T is . Filters the elements of an to return s only. The records. The list of . Filters the elements of an to return s only. The records. The list of . Filters the elements of an to return s only. The records. The list of . Filters the elements of an to return s only. The records. The list of . Filters the elements of an to return s only. The records. The list of . Filters the elements of an to return s only. The records. The list of . Filters the elements of an to return s only. The records. The list of . Filters the elements of an to return s only. The records. The list of . Filters the elements of an to return s only. The records. The list of . Filters the elements of an to return s only. The records. The list of . Filters the elements of an to return s only. The records. The list of . Filters the elements of an to return s only. The records. The list of . Filters the elements of an to return s only. The records. The list of . Filters the elements of an to return s only. The records. The list of . Filters the elements of an to return s only. The records. The list of . Filters the elements of an to return s only. The records. The list of . Filters the elements of an to return s only. The records. The list of . Filters the elements of an to return s only. The records. The list of . Filters the elements of an to return s only. The records. The list of . Filters the elements of an to return s only. The records. The list of . Filters the elements of an to return s only The list of . Filters the elements of an to return s only The list of . Filters the elements of an to return s which have the . The records. The to filter for. The list of .