OS DNS缓存
>ipconfig /displaydns
Windows IP Configuration
hm.e.shifen.com
----------------------------------------
Record Name . . . . . : hm.e.shifen.com
Record Type . . . . . : 1
Time To Live . . . . : 105
Data Length . . . . . : 4
Section . . . . . . . : Answer
A (Host) Record . . . : 111.206.209.249
hm.e.shifen.com
----------------------------------------
Record Name . . . . . : hm.e.shifen.com
Record Type . . . . . : 28
Time To Live . . . . : 152
Data Length . . . . . : 16
Section . . . . . . . : Answer
AAAA Record . . . . . : 2408:80f0:410b:2ae:0:ff:b089:569d
kunpeng.csdn.net
----------------------------------------
Record Name . . . . . : kunpeng.csdn.net
Record Type . . . . . : 1
Time To Live . . . . : 144
Data Length . . . . . : 4
Section . . . . . . . : Answer
A (Host) Record . . . : 101.201.173.208
hub5pr.sandai.net
----------------------------------------
Record Name . . . . . : hub5pr.sandai.net
Record Type . . . . . : 1
Time To Live . . . . : 603169
Data Length . . . . . : 4
Section . . . . . . . : Answer
A (Host) Record . . . : 121.9.209.134
stats.l.doubleclick.net
----------------------------------------
Record Name . . . . . : stats.l.doubleclick.net
Record Type . . . . . : 1
Time To Live . . . . : 47
Data Length . . . . . : 4
Section . . . . . . . : Answer
A (Host) Record . . . : 114.250.65.38
zhannei-dm.csdn.net
----------------------------------------
Record Name . . . . . : zhannei-dm.csdn.net
Record Type . . . . . : 1
Time To Live . . . . : 130
Data Length . . . . . : 4
Section . . . . . . . : Answer
A (Host) Record . . . : 101.201.173.208
www-google-analytics.l.google.com
----------------------------------------
Record Name . . . . . : www-google-analytics.l.google.com
Record Type . . . . . : 1
Time To Live . . . . : 12
Data Length . . . . . : 4
Section . . . . . . . : Answer
A (Host) Record . . . : 114.250.66.33
www.google-analytics.com
----------------------------------------
Record Name . . . . . : www.google-analytics.com
Record Type . . . . . : 5
Time To Live . . . . : 10722
Data Length . . . . . : 4
Section . . . . . . . : Answer
CNAME Record . . . . : www-google-analytics.l.google.com
www.google-analytics.com
----------------------------------------
Record Name . . . . . : www.google-analytics.com
Record Type . . . . . : 5
Time To Live . . . . : 10722
Data Length . . . . . : 4
Section . . . . . . . : Answer
CNAME Record . . . . : www-google-analytics.l.google.com
test.com
----------------------------------------
Record Name . . . . . : test.com
Record Type . . . . . : 1
Time To Live . . . . : 603169
Data Length . . . . . : 4
Section . . . . . . . : Answer
A (Host) Record . . . : 192.168.0.109
dl2.iteye.com
----------------------------------------
Record Name . . . . . : dl2.iteye.com
Record Type . . . . . : 5
Time To Live . . . . : 7
Data Length . . . . . : 4
Section . . . . . . . : Answer
CNAME Record . . . . : dl2-iteye-com-idvfzoo.qiniudns.com
dl2.iteye.com
----------------------------------------
Record Name . . . . . : dl2.iteye.com
Record Type . . . . . : 5
Time To Live . . . . : 7
Data Length . . . . . : 4
Section . . . . . . . : Answer
CNAME Record . . . . : dl2-iteye-com-idvfzoo.qiniudns.com
dl2.iteye.com
----------------------------------------
Record Name . . . . . : dl2.iteye.com
Record Type . . . . . : 5
Time To Live . . . . : 7
Data Length . . . . . : 4
Section . . . . . . . : Answer
CNAME Record . . . . : dl2-iteye-com-idvfzoo.qiniudns.com
kunyu.csdn.net
----------------------------------------
Record Name . . . . . : kunyu.csdn.net
Record Type . . . . . : 1
Time To Live . . . . : 129
Data Length . . . . . : 4
Section . . . . . . . : Answer
A (Host) Record . . . : 47.95.182.167
qd-update.qq.com
----------------------------------------
Record Name . . . . . : qd-update.qq.com
Record Type . . . . . : 1
Time To Live . . . . : 2089
Data Length . . . . . : 4
Section . . . . . . . : Answer
A (Host) Record . . . : 58.251.112.242
Record Name . . . . . : qd-update.qq.com
Record Type . . . . . : 1
Time To Live . . . . : 2089
Data Length . . . . . : 4
Section . . . . . . . : Answer
A (Host) Record . . . : 58.251.112.89
Record Name . . . . . : qd-update.qq.com
Record Type . . . . . : 1
Time To Live . . . . : 2089
Data Length . . . . . : 4
Section . . . . . . . : Answer
A (Host) Record . . . : 58.250.11.124
Record Name . . . . . : qd-update.qq.com
Record Type . . . . . : 1
Time To Live . . . . : 2089
Data Length . . . . . : 4
Section . . . . . . . : Answer
A (Host) Record . . . : 113.96.12.221
lobin.iteye.com
----------------------------------------
Record Name . . . . . : lobin.iteye.com
Record Type . . . . . : 1
Time To Live . . . . : 2
Data Length . . . . . : 4
Section . . . . . . . : Answer
A (Host) Record . . . : 101.201.174.210
beacon.tingyun.com
----------------------------------------
Record Name . . . . . : beacon.tingyun.com
Record Type . . . . . : 1
Time To Live . . . . : 18
Data Length . . . . . : 4
Section . . . . . . . : Answer
A (Host) Record . . . : 140.143.52.226
Record Name . . . . . : beacon.tingyun.com
Record Type . . . . . : 1
Time To Live . . . . : 18
Data Length . . . . . : 4
Section . . . . . . . : Answer
A (Host) Record . . . : 140.143.49.61
zz.bdstatic.com
----------------------------------------
Record Name . . . . . : zz.bdstatic.com
Record Type . . . . . : 5
Time To Live . . . . : 1209
Data Length . . . . . : 4
Section . . . . . . . : Answer
CNAME Record . . . . : sslzz.jomodns.com
zz.bdstatic.com
----------------------------------------
Record Name . . . . . : zz.bdstatic.com
Record Type . . . . . : 5
Time To Live . . . . : 1209
Data Length . . . . . : 4
Section . . . . . . . : Answer
CNAME Record . . . . : sslzz.jomodns.com
safebrowsing.google.com
----------------------------------------
Record Name . . . . . : safebrowsing.google.com
Record Type . . . . . : 5
Time To Live . . . . : 9944
Data Length . . . . . : 4
Section . . . . . . . : Answer
CNAME Record . . . . : sb.l.google.com
safebrowsing.google.com
----------------------------------------
Record Name . . . . . : safebrowsing.google.com
Record Type . . . . . : 5
Time To Live . . . . : 9944
Data Length . . . . . : 4
Section . . . . . . . : Answer
Chrome DNS缓存
访问chrome://net-internals/#dns
也可以访问chrome://net-internals,然后选择“DNS”
报文头
typedef struct { unsigned id :16; // query identification number #if BYTE_ORDER == BIG_ENDIAN // fields in third byte unsigned qr: 1; // response flag unsigned opcode: 4; // purpose of message unsigned aa: 1; // authoritive answer unsigned tc: 1; // truncated message unsigned rd: 1; // recursion desired // fields in fourth byte unsigned ra: 1; // recursion available unsigned unused :3; // unused bits (MBZ as of 4.9.3a3) unsigned rcode :4; // response code #endif #if BYTE_ORDER == LITTLE_ENDIAN || BYTE_ORDER == PDP_ENDIAN // fields in third byte unsigned rd :1; // recursion desired unsigned tc :1; // truncated message unsigned aa :1; // authoritive answer unsigned opcode :4; // purpose of message unsigned qr :1; // response flag // fields in fourth byte unsigned rcode :4; // response code unsigned unused :3; // unused bits (MBZ as of 4.9.3a3) unsigned ra :1; // recursion available #endif // remaining bytes unsigned qdcount :16; // number of question entries unsigned ancount :16; // number of answer entries unsigned nscount :16; // number of authority entries unsigned arcount :16; // number of resource entries } HEADER;
响应报文解析
import java.io.IOException; import java.nio.ByteBuffer; import java.nio.channels.SocketChannel; import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; public class SocketChannelInput extends AbstractInput { private SocketChannel channel; public SocketChannelInput(SocketChannel channel) { this.channel = channel; } private ByteBuffer readBuffer(int bytes) throws IOException { ByteBuffer dst = ByteBuffer.allocate(bytes); while (dst.hasRemaining()) { channel.read(dst); } dst.rewind(); return dst; } private int readLength() throws IOException { ByteBuffer dst = readBuffer(2); return dst.getShort(); } private ByteBuffer readMessage(int length) throws IOException { return readBuffer(length); } /** * question section */ private void readSection2(ByteBuffer src, int n) { for (int i = 0; i < n; i++) { StringBuffer qname = new StringBuffer(); int ll = 0; while ((ll = src.get()) != 0) { qname.append(ll); for (int j = 0; j < ll; j++) { qname.append((char) src.get()); } } qname.append(0); int qtype = src.getShort(); int qclass = src.getShort(); Entry entry = new Entry(qname.toString(), (short) qtype, (short) qclass); System.out.println(ToStringBuilder.reflectionToString(entry, ToStringStyle.MULTI_LINE_STYLE)); } } /** * resource record */ private void readRecord(ByteBuffer src) { String name = null; int prefix = src.getShort(); int flag = (prefix << 16) >>> 30; if (flag == 3) { int offset = (prefix << 18) >>> 18; int position = src.position(); src.position(offset); StringBuffer sb = new StringBuffer(); int ll = 0; while ((ll = src.get()) != 0) { sb.append(ll); for (int j = 0; j < ll; j++) { sb.append((char) src.get()); } } sb.append(0); name = sb.toString(); src.position(position); } else { } System.out.println(name); int type = src.getShort(); System.out.println(type); int clazz = src.getShort(); System.out.println(clazz); int ttl = src.getInt(); System.out.println(ttl); int length = src.getShort(); System.out.println(length); StringBuffer data = new StringBuffer(); ByteBuffer db = readRecordData(src, length); int position = db.position(); prefix = db.getShort(); db.position(position); flag = (prefix << 16) >>> 30; if (flag == 3) { int offset = (prefix << 18) >>> 18; position = src.position(); src.position(offset); int ll = 0; while ((ll = src.get()) != 0) { data.append(ll); for (int j = 0; j < ll; j++) { data.append((char) src.get()); } } data.append(0); src.position(position); } // position = db.position(); int suffix = db.getShort(db.limit() - 2); int term = db.get(db.limit() - 2); // db.position(position); flag = (suffix << 16) >>> 30; if (flag == 3) { int ll = 0; while ((ll = db.get()) != term) { data.append(ll); for (int j = 0; j < ll; j++) { data.append((char) db.get()); } } int offset = (suffix << 18) >>> 18; position = src.position(); src.position(offset); ll = 0; while ((ll = src.get()) != 0) { data.append(ll); for (int j = 0; j < ll; j++) { data.append((char) src.get()); } } data.append(0); src.position(position); } flag = db.get(db.limit() - 1); if (flag == 0) { int ll = 0; while ((ll = db.get()) != 0) { data.append(ll); for (int j = 0; j < ll; j++) { data.append((char) db.get()); } } data.append(0); } System.out.println(data); } /** * answer, authority, additional section */ private void readSection(ByteBuffer src, int n) { for (int i = 0; i < n; i++) { readRecord(src); } } /** * answer section */ private void readSection3(ByteBuffer src, int n) { readSection(src, n); } /** * authority section */ private void readSection4(ByteBuffer src, int n) { readSection(src, n); } /** * additional section */ private void readSection5(ByteBuffer src, int n) { readSection(src, n); } public void reply() throws IOException { // 0, 12, 0, 17, -128, 1, 0, 0, 0, 0, 0, 0, 0, 0 // 2, 8, 0, 17, -127, 0, 0, 1, 0, 0, 0, 13, 0, 15, 3, 119, 119, 119, 6, 104, 97, 111, 49, 50, 51, 3, 99, 111, 109, 0, 0, 1, 0, 1, -64, 23, 0, 2, 0, 1, 0, 2, -93, 0, 0, 20, 1, 104, 12, 103, 116, 108, 100, 45, 115, 101, 114, 118, 101, 114, 115, 3, 110, 101, 116, 0, -64, 23, 0, 2, 0, 1, 0, 2, -93, 0, 0, 4, 1, 99, -64, 46, -64, 23, 0, 2, 0, 1, 0, 2, -93, 0, 0, 4, 1, 101, -64, 46, -64, 23, 0, 2, 0, 1, 0, 2, -93, 0, 0, 4, 1, 98, -64, 46, -64, 23, 0, 2, 0, 1, 0, 2, -93, 0, 0, 4, 1, 109, -64, 46, -64, 23, 0, 2, 0, 1, 0, 2, -93, 0, 0, 4, 1, 97, -64, 46, -64, 23, 0, 2, 0, 1, 0, 2, -93, 0, 0, 4, 1, 103, -64, 46, -64, 23, 0, 2, 0, 1, 0, 2, -93, 0, 0, 4, 1, 108, -64, 46, -64, 23, 0, 2, 0, 1, 0, 2, -93, 0, 0, 4, 1, 105, -64, 46, -64, 23, 0, 2, 0, 1, 0, 2, -93, 0, 0, 4, 1, 102, -64, 46, -64, 23, 0, 2, 0, 1, 0, 2, -93, 0, 0, 4, 1, 100, -64, 46, -64, 23, 0, 2, 0, 1, 0, 2, -93, 0, 0, 4, 1, 107, -64, 46, -64, 23, 0, 2, 0, 1, 0, 2, -93, 0, 0, 4, 1, 106, -64, 46, -64, -116, 0, 1, 0, 1, 0, 2, -93, 0, 0, 4, -64, 5, 6, 30, -64, 108, 0, 1, 0, 1, 0, 2, -93, 0, 0, 4, -64, 33, 14, 30, -64, 76, 0, 1, 0, 1, 0, 2, -93, 0, 0, 4, -64, 26, 92, 30, -64, -36, 0, 1, 0, 1, 0, 2, -93, 0, 0, 4, -64, 31, 80, 30, -64, 92, 0, 1, 0, 1, 0, 2, -93, 0, 0, 4, -64, 12, 94, 30, -64, -52, 0, 1, 0, 1, 0, 2, -93, 0, 0, 4, -64, 35, 51, 30, -64, -100, 0, 1, 0, 1, 0, 2, -93, 0, 0, 4, -64, 42, 93, 30, -64, 44, 0, 1, 0, 1, 0, 2, -93, 0, 0, 4, -64, 54, 112, 30, -64, -68, 0, 1, 0, 1, 0, 2, -93, 0, 0, 4, -64, 43, -84, 30, -64, -4, 0, 1, 0, 1, 0, 2, -93, 0, 0, 4, -64, 48, 79, 30, -64, -20, 0, 1, 0, 1, 0, 2, -93, 0, 0, 4, -64, 52, -78, 30, -64, -84, 0, 1, 0, 1, 0, 2, -93, 0, 0, 4, -64, 41, -94, 30, -64, 124, 0, 1, 0, 1, 0, 2, -93, 0, 0, 4, -64, 55, 83, 30, -64, -116, 0, 28, 0, 1, 0, 2, -93, 0, 0, 16, 32, 1, 5, 3, -88, 62, 0, 0, 0, 0, 0, 0, 0, 2, 0, 48, -64, 108, 0, 28, 0, 1, 0, 2, -93, 0, 0, 16, 32, 1, 5, 3, 35, 29, 0, 0, 0, 0, 0, 0, 0, 2, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 // 2, 8, 0, 17, -128, 0, 0, 1, 0, 0, 0, 13, 0, 15, 3, 119, 119, 119, 6, 104, 97, 111, 49, 50, 51, 3, 99, 111, 109, 0, 0, 1, 0, 1, -64, 23, 0, 2, 0, 1, 0, 2, -93, 0, 0, 20, 1, 99, 12, 103, 116, 108, 100, 45, 115, 101, 114, 118, 101, 114, 115, 3, 110, 101, 116, 0, -64, 23, 0, 2, 0, 1, 0, 2, -93, 0, 0, 4, 1, 108, -64, 46, -64, 23, 0, 2, 0, 1, 0, 2, -93, 0, 0, 4, 1, 100, -64, 46, -64, 23, 0, 2, 0, 1, 0, 2, -93, 0, 0, 4, 1, 107, -64, 46, -64, 23, 0, 2, 0, 1, 0, 2, -93, 0, 0, 4, 1, 103, -64, 46, -64, 23, 0, 2, 0, 1, 0, 2, -93, 0, 0, 4, 1, 104, -64, 46, -64, 23, 0, 2, 0, 1, 0, 2, -93, 0, 0, 4, 1, 97, -64, 46, -64, 23, 0, 2, 0, 1, 0, 2, -93, 0, 0, 4, 1, 109, -64, 46, -64, 23, 0, 2, 0, 1, 0, 2, -93, 0, 0, 4, 1, 106, -64, 46, -64, 23, 0, 2, 0, 1, 0, 2, -93, 0, 0, 4, 1, 98, -64, 46, -64, 23, 0, 2, 0, 1, 0, 2, -93, 0, 0, 4, 1, 101, -64, 46, -64, 23, 0, 2, 0, 1, 0, 2, -93, 0, 0, 4, 1, 102, -64, 46, -64, 23, 0, 2, 0, 1, 0, 2, -93, 0, 0, 4, 1, 105, -64, 46, -64, -100, 0, 1, 0, 1, 0, 2, -93, 0, 0, 4, -64, 5, 6, 30, -64, -52, 0, 1, 0, 1, 0, 2, -93, 0, 0, 4, -64, 33, 14, 30, -64, 44, 0, 1, 0, 1, 0, 2, -93, 0, 0, 4, -64, 26, 92, 30, -64, 92, 0, 1, 0, 1, 0, 2, -93, 0, 0, 4, -64, 31, 80, 30, -64, -36, 0, 1, 0, 1, 0, 2, -93, 0, 0, 4, -64, 12, 94, 30, -64, -20, 0, 1, 0, 1, 0, 2, -93, 0, 0, 4, -64, 35, 51, 30, -64, 124, 0, 1, 0, 1, 0, 2, -93, 0, 0, 4, -64, 42, 93, 30, -64, -116, 0, 1, 0, 1, 0, 2, -93, 0, 0, 4, -64, 54, 112, 30, -64, -4, 0, 1, 0, 1, 0, 2, -93, 0, 0, 4, -64, 43, -84, 30, -64, -68, 0, 1, 0, 1, 0, 2, -93, 0, 0, 4, -64, 48, 79, 30, -64, 108, 0, 1, 0, 1, 0, 2, -93, 0, 0, 4, -64, 52, -78, 30, -64, 76, 0, 1, 0, 1, 0, 2, -93, 0, 0, 4, -64, 41, -94, 30, -64, -84, 0, 1, 0, 1, 0, 2, -93, 0, 0, 4, -64, 55, 83, 30, -64, -100, 0, 28, 0, 1, 0, 2, -93, 0, 0, 16, 32, 1, 5, 3, -88, 62, 0, 0, 0, 0, 0, 0, 0, 2, 0, 48, -64, -52, 0, 28, 0, 1, 0, 2, -93, 0, 0, 16, 32, 1, 5, 3, 35, 29, 0, 0, 0, 0, 0, 0, 0, 2, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 int length = readLength(); ByteBuffer bb = readMessage(length); int id = bb.getShort(); int b = bb.get(); int qr = b >> 7; boolean query = qr == 0 ? true : false; int opcode = (b << 25) >> 28; int aa = (b << 29) >> 31; int tc = (b << 30) >> 31; int rd = (b << 31) >> 31; b = bb.get(); int ra = b >> 7; int rcode = b & 0x0F; // number of entries in the question section int n2 = bb.getShort(); System.out.println(n2); // number of resource records in the answer section int n3 = bb.getShort(); System.out.println(n3); // number of name server resource records in the authority // records section int n4 = bb.getShort(); System.out.println(n4); int n5 = bb.getShort(); System.out.println(n5); readSection2(bb, n2); readSection3(bb, n3); readSection4(bb, n4); readSection5(bb, n5); } private ByteBuffer readRecordData(ByteBuffer src, int length) { ByteBuffer dst = ByteBuffer.allocate(length); while (dst.hasRemaining()) { dst.put(src.get()); } dst.rewind(); return dst; } }
相关推荐
本文主要总结了网络协议的相关知识,特别是TCP/IP协议栈的处理流程和一些常见的应用层协议。TCP/IP协议族是互联网的核心,它定义了不同层次的协议,确保数据在网络中的可靠传输。 TCP/IP处理流程涉及四个主要层次:...
第6章:简要的介绍了一下TCP/IP协议在Windows和LINUX操作系统下的实现原理TCP/IP协议的二进制代码。 下篇包含以下6章内容: 第7章:介绍了网络程序设计有关的基础知识、一个网络程序入门实例和Winsock中编写网络程序...
本篇文章将深入探讨如何在C#中创建一个DNS客户端,并详细讲解相关知识点。 首先,我们需要了解C#中的`System.Net.Dns`命名空间,这个命名空间包含了处理DNS查询的类和方法。主要涉及以下关键知识点: 1. **Dns....
在网络安全和信息收集的过程中,有时候我们只掌握到服务器的IP地址,却需要找出它所绑定的域名。以下是一些有效的技术方法,可以帮助我们完成这个任务: 1. **IP历史解析记录**: 通过查询IP地址的历史解析记录,...
电子邮件欺骗,特别是通过SMTP协议,是一个严重的网络安全问题。SMTP(Simple Mail Transfer Protocol)不强制要求身份验证,使得攻击者能够轻易地伪造电子邮件头信息,从而伪装成任何发件人地址。这种行为被称为...
第二章:协议篇 课时1 ARP协议的数据包分析 课时2 Wireshark眼中的IP协议 课时3 TCP与UDP协议详解 课时4 TCP中也有一个窗口 课时5 TCP重传技术的研究 课时6 用途广泛的ICMP协议 课时7 容易被忽视的DHCP协议 课时8 不...
教材名称:《计算机网络技术》(第六版) 主 编: 出版时间:2017年8月 适用专业:计算机专业及各类工科高职网络基础课程教学 建议学时:48~64学时 一、编写说明 (一)本课程的性质和任务 性质:《计算机网络技术...
本篇文章将深入探讨Linux环境下DNS解析的详细步骤,通过图文并茂的方式,以“美河学习在线eimhe.com_DNS域名解析过程.gif”作为辅助,帮助读者轻松理解这一复杂但基础的网络概念。 DNS是互联网上的一个关键服务,它...
手册详细介绍了硬件平台、网络协议栈的移植、以及一系列实战应用案例,帮助开发者快速进入嵌入式网络开发领域。 知识点一:如何获取开发板和软件服务 读者可通过提供的QQ联系作者获得Mini板。在购买开发板的同时,...
111 5.5.5 利用工具监视网络安全 112 5.6 例题分析 115 第6章 网络系统的评价 117 6.1 系统评价 117 6.1.1 系统能力的限制 117 6.1.2 潜在的问题分析 119 6.1.3 系统评价的要点 120 6.2 ...
本篇主要关注的是DNS服务和DHCP服务,以及IIS的安装。 **DNS服务** DNS(Domain Name System)是互联网的重要组成部分,它负责将易于记忆的域名转换为IP地址,实现网络资源的定位。DNS服务包括以下关键概念: 1. ...
1. **范围**(第16页):ONVIF 2.0协议旨在定义用于视频监控和其他物理安全应用的网络视频产品的接口。这些接口包括但不限于媒体流传输、设备控制、事件管理和设备管理等功能。 2. **引用标准**(第17页):此部分...
这篇复习大纲主要涵盖了计算机网络的基础知识、数据通信、数据链路层、局域网、网络层、传输层、会话层及高层协议,以及TCP/IP协议簇。以下是这些知识点的详细说明: **第一部分:计算机网络基础** - **计算机网络...
#### 第六章:应用层 ##### 30. DNS域名解析协议? DNS(Domain Name System)协议用于将易于记忆的域名转换为对应的IP地址,实现了网络的易用性。 ##### 31. FTP文件传输协议? FTP(File Transfer Protocol)...
本篇内容将详细解释这些网络配置文件及其作用。 1. **网络配置文件**: - **`/etc/sysconfig/network-scripts/ifcfg-eth0`**(或其他接口名称如`ifcfg-enp0s3`):这是Red Hat系Linux(如CentOS、Fedora)中用来...
计算机网络是计算机科学与技术领域中的一门重要学科,涉及到计算机系统之间的通信、数据传输和网络协议等方面。在计算机考研复试面试中,计算机网络篇是必不可少的一部分。本文将对计算机网络的主要知识点进行系统的...
在Redhat Linux下配置DNS服务器是一项关键任务,尤其对于企业局域网环境,它涉及到网络的正常运行和域名解析。在这个过程中,我们需要熟悉Linux命令行操作以及DNS服务的核心组件——BIND(Berkeley Internet Name ...
第六季涉及的后渗透测试模块: 1. `windows/gather/arp_scanner`:在Meterpreter会话中运行,使用ARP协议来检测网络中活动的Windows主机。 2. `windows/gather/enum_ad_computers`:枚举活动目录中的计算机,对于...
**第六章:文件浏览与管理** 在这一章,读者将学习如何通过网络进行文件的浏览、搜索和管理。实例可能涵盖创建一个网络文件浏览器,允许用户远程查看和操作文件系统,以及实现文件的上传和下载功能。 **第七章:...