/** * Ldap Tester. * * @author <Authors name> * @version 1.0 * @since <pre>二月 15, 2019</pre> */ public class LdapTest { // DNS packet header field offsets private static final int IDENT_OFFSET = 0; private static final int FLAGS_OFFSET = 2; private static final int NUMQ_OFFSET = 4; private static final int NUMANS_OFFSET = 6; private static final int NUMAUTH_OFFSET = 8; private static final int NUMADD_OFFSET = 10; private static final int DNS_HDR_SIZE = 12; private static final int DEFAULT_PORT = 53;
@Before public void before() throws Exception { }
@After public void after() throws Exception { }
// Builds a query name in pkt according to the RFC spec. private void makeQueryName(DnsName fqdn, Packet pkt, int off) {
// Loop through labels, least-significant first. for (int i = fqdn.size() - 1; i >= 0; i--) { String label = fqdn.get(i); int len = label.length();
int qtype = 33; pkt.putShort(qtype, DNS_HDR_SIZE + qnameLen);
int qclass = 1; pkt.putShort(qclass, DNS_HDR_SIZE + qnameLen + 2);
DatagramSocket socket = new DatagramSocket();
InetAddress server = InetAddress.getByName("127.0.0.53");//这里为什么是这个IP地址呢???? int port = DEFAULT_PORT; //port is 53 DatagramPacket opkt = new DatagramPacket(pkt.getData(), pkt.length(), server, port); DatagramPacket ipkt = new DatagramPacket(new byte[8000], 8000);
socket.connect(server, port);
socket.send(opkt);
socket.receive(ipkt); byte[] data = ipkt.getData();
NAME 资源记录包含的域名. TYPE 表示DNS协议的类型. CLASS 表示RDATA的类. TTL 4字节无符号整数表示资源记录可以缓存的时间。0代表只能被传输,但是不能被缓存。 RDLENGTH 2个字节无符号整数表示RDATA的长度 RDATA 不定长字符串来表示记录,格式根TYPE和CLASS有关。比如,TYPE是A,CLASS 是 IN,那么RDATA就是一个4个字节的ARPA网络地址。
A 1 a host address [RFC1035] NS 2 an authoritative name server [RFC1035] MD 3 a mail destination (OBSOLETE - use MX) [RFC1035] MF 4 a mail forwarder (OBSOLETE - use MX) [RFC1035] CNAME 5 the canonical name for an alias [RFC1035] SOA 6 marks the start of a zone of authority [RFC1035] MB 7 a mailbox domain name (EXPERIMENTAL) [RFC1035] MG 8 a mail group member (EXPERIMENTAL) [RFC1035] MR 9 a mail rename domain name (EXPERIMENTAL) [RFC1035] NULL 10 a null RR (EXPERIMENTAL) [RFC1035] WKS 11 a well known service description [RFC1035] PTR 12 a domain name pointer [RFC1035] HINFO 13 host information [RFC1035] MINFO 14 mailbox or mail list information [RFC1035] MX 15 mail exchange [RFC1035] TXT 16 text strings [RFC1035] RP 17 for Responsible Person [RFC1183] AFSDB 18 for AFS Data Base location [RFC1183][RFC5864] X25 19 for X.25 PSDN address [RFC1183] ISDN 20 for ISDN address [RFC1183] RT 21 for Route Through [RFC1183] NSAP 22 for NSAP address, NSAP style A record [RFC1706] NSAP-PTR 23 for domain name pointer, NSAP style [RFC1348][RFC1637][RFC1706] SIG 24 for security signature [RFC4034][RFC3755][RFC2535][RFC2536][RFC2537][RFC2931][RFC3110][RFC3008] KEY 25 for security key [RFC4034][RFC3755][RFC2535][RFC2536][RFC2537][RFC2539][RFC3008][RFC3110] PX 26 X.400 mail mapping information [RFC2163] GPOS 27 Geographical Position [RFC1712] AAAA 28 IP6 Address [RFC3596] LOC 29 Location Information [RFC1876] NXT 30 Next Domain (OBSOLETE) [RFC3755][RFC2535] EID 31 Endpoint Identifier [Michael_Patton][http://ana-3.lcs.mit.edu/~jnc/nimrod/dns.txt] 1995-06 NIMLOC 32 Nimrod Locator [1][Michael_Patton][http://ana-3.lcs.mit.edu/~jnc/nimrod/dns.txt] 1995-06 SRV 33 Server Selection [1][RFC2782] ATMA 34 ATM Address [ ATM Forum Technical Committee, "ATM Name System, V2.0", Doc ID: AF-DANS-0152.000, July 2000. Available from and held in escrow by IANA.] NAPTR 35 Naming Authority Pointer [RFC2915][RFC2168][RFC3403] KX 36 Key Exchanger [RFC2230] CERT 37 CERT [RFC4398] A6 38 A6 (OBSOLETE - use AAAA) [RFC3226][RFC2874][RFC6563] DNAME 39 DNAME [RFC6672] SINK 40 SINK [Donald_E_Eastlake][http://tools.ietf.org/html/draft-eastlake-kitchen-sink] 1997-11 OPT 41 OPT [RFC6891][RFC3225] APL 42 APL [RFC3123] DS 43 Delegation Signer [RFC4034][RFC3658] SSHFP 44 SSH Key Fingerprint [RFC4255] IPSECKEY 45 IPSECKEY [RFC4025] RRSIG 46 RRSIG [RFC4034][RFC3755] NSEC 47 NSEC [RFC4034][RFC3755] DNSKEY 48 DNSKEY [RFC4034][RFC3755] DHCID 49 DHCID [RFC4701] NSEC3 50 NSEC3 [RFC5155] NSEC3PARAM 51 NSEC3PARAM [RFC5155] TLSA 52 TLSA [RFC6698] SMIMEA 53 S/MIME cert association [RFC8162] SMIMEA/smimea-completed-template 2015-12-01 Unassigned 54 HIP 55 Host Identity Protocol [RFC8005] NINFO 56 NINFO [Jim_Reid] NINFO/ninfo-completed-template 2008-01-21 RKEY 57 RKEY [Jim_Reid] RKEY/rkey-completed-template 2008-01-21 TALINK 58 Trust Anchor LINK [Wouter_Wijngaards] TALINK/talink-completed-template 2010-02-17 CDS 59 Child DS [RFC7344] CDS/cds-completed-template 2011-06-06 CDNSKEY 60 DNSKEY(s) the Child wants reflected in DS [RFC7344] 2014-06-16 OPENPGPKEY 61 OpenPGP Key [RFC7929] OPENPGPKEY/openpgpkey-completed-template 2014-08-12 CSYNC 62 Child-To-Parent Synchronization [RFC7477] 2015-01-27 ZONEMD 63 message digest for DNS zone [draft-wessels-dns-zone-digest] ZONEMD/zonemd-completed-template 2018-12-12 Unassigned 64-98 SPF 99 [RFC7208] UINFO 100 [IANA-Reserved] UID 101 [IANA-Reserved] GID 102 [IANA-Reserved] UNSPEC 103 [IANA-Reserved] NID 104 [RFC6742] ILNP/nid-completed-template L32 105 [RFC6742] ILNP/l32-completed-template L64 106 [RFC6742] ILNP/l64-completed-template LP 107 [RFC6742] ILNP/lp-completed-template EUI48 108 an EUI-48 address [RFC7043] EUI48/eui48-completed-template 2013-03-27 EUI64 109 an EUI-64 address [RFC7043] EUI64/eui64-completed-template 2013-03-27 Unassigned 110-248 TKEY 249 Transaction Key [RFC2930] TSIG 250 Transaction Signature [RFC2845] IXFR 251 incremental transfer [RFC1995] AXFR 252 transfer of an entire zone [RFC1035][RFC5936] MAILB 253 mailbox-related RRs (MB, MG or MR) [RFC1035] MAILA 254 mail agent RRs (OBSOLETE - see MX) [RFC1035] * 255 A request for some or all records the server has available [RFC1035][RFC6895][RFC8482] URI 256 URI [RFC7553] URI/uri-completed-template 2011-02-22 CAA 257 Certification Authority Restriction [RFC6844] CAA/caa-completed-template 2011-04-07 AVC 258 Application Visibility and Control [Wolfgang_Riedel] AVC/avc-completed-template 2016-02-26 DOA 259 Digital Object Architecture [draft-durand-doa-over-dns] DOA/doa-completed-template 2017-08-30 AMTRELAY 260 Automatic Multicast Tunneling Relay [draft-ietf-mboned-driad-amt-discovery] AMTRELAY/amtrelay-completed-template 2019-02-06 Unassigned 261-32767 TA 32768 DNSSEC Trust Authorities [Sam_Weiler][http://cameo.library.cmu.edu/][ Deploying DNSSEC Without a Signed Root. Technical Report 1999-19, Information Networking Institute, Carnegie Mellon University, April 2004.] 2005-12-13 DLV 32769 DNSSEC Lookaside Validation [RFC4431] Unassigned 32770-65279 Private use 65280-65534 Reserved 65535