`
lobin
  • 浏览: 427442 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

网络协议 第6篇: DNS

 
阅读更多

 

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;
	}
}

 

0
1
分享到:
评论

相关推荐

    这是一篇总结网络协议的说明文档

    本文主要总结了网络协议的相关知识,特别是TCP/IP协议栈的处理流程和一些常见的应用层协议。TCP/IP协议族是互联网的核心,它定义了不同层次的协议,确保数据在网络中的可靠传输。 TCP/IP处理流程涉及四个主要层次:...

    TCP/IP协议与网络编程技术

    第6章:简要的介绍了一下TCP/IP协议在Windows和LINUX操作系统下的实现原理TCP/IP协议的二进制代码。 下篇包含以下6章内容: 第7章:介绍了网络程序设计有关的基础知识、一个网络程序入门实例和Winsock中编写网络程序...

    C# DNS Client 实现

    本篇文章将深入探讨如何在C#中创建一个DNS客户端,并详细讲解相关知识点。 首先,我们需要了解C#中的`System.Net.Dns`命名空间,这个命名空间包含了处理DNS查询的类和方法。主要涉及以下关键知识点: 1. **Dns....

    【信息收集篇】第03篇:假设知道服务器IP,如何找到它绑定的域名?1

    在网络安全和信息收集的过程中,有时候我们只掌握到服务器的IP地址,却需要找出它所绑定的域名。以下是一些有效的技术方法,可以帮助我们完成这个任务: 1. **IP历史解析记录**: 通过查询IP地址的历史解析记录,...

    第01篇:搭建匿名SMTP服务器1

    电子邮件欺骗,特别是通过SMTP协议,是一个严重的网络安全问题。SMTP(Simple Mail Transfer Protocol)不强制要求身份验证,使得攻击者能够轻易地伪造电子邮件头信息,从而伪装成任何发件人地址。这种行为被称为...

    网络数据包分析从入门到精通视频.zip

    第二章:协议篇 课时1 ARP协议的数据包分析 课时2 Wireshark眼中的IP协议 课时3 TCP与UDP协议详解 课时4 TCP中也有一个窗口 课时5 TCP重传技术的研究 课时6 用途广泛的ICMP协议 课时7 容易被忽视的DHCP协议 课时8 不...

    计算机网络技术(第六版)课程标准.doc

    教材名称:《计算机网络技术》(第六版) 主 编: 出版时间:2017年8月 适用专业:计算机专业及各类工科高职网络基础课程教学 建议学时:48~64学时 一、编写说明 (一)本课程的性质和任务 性质:《计算机网络技术...

    Linux图解DNS域名解析全过程

    本篇文章将深入探讨Linux环境下DNS解析的详细步骤,通过图文并茂的方式,以“美河学习在线eimhe.com_DNS域名解析过程.gif”作为辅助,帮助读者轻松理解这一复杂但基础的网络概念。 DNS是互联网上的一个关键服务,它...

    嵌入式网络那些事 - mini板完全手册(作者:老衲五木)

    手册详细介绍了硬件平台、网络协议栈的移植、以及一系列实战应用案例,帮助开发者快速进入嵌入式网络开发领域。 知识点一:如何获取开发板和软件服务 读者可通过提供的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 ...

    2022年市场-计算机网络服务器的管理.pptx

    本篇主要关注的是DNS服务和DHCP服务,以及IIS的安装。 **DNS服务** DNS(Domain Name System)是互联网的重要组成部分,它负责将易于记忆的域名转换为IP地址,实现网络资源的定位。DNS服务包括以下关键概念: 1. ...

    ONVIF2.0协议珍藏版

    1. **范围**(第16页):ONVIF 2.0协议旨在定义用于视频监控和其他物理安全应用的网络视频产品的接口。这些接口包括但不限于媒体流传输、设备控制、事件管理和设备管理等功能。 2. **引用标准**(第17页):此部分...

    计算机网络复习大纲文.pdf

    这篇复习大纲主要涵盖了计算机网络的基础知识、数据通信、数据链路层、局域网、网络层、传输层、会话层及高层协议,以及TCP/IP协议簇。以下是这些知识点的详细说明: **第一部分:计算机网络基础** - **计算机网络...

    计算机网络篇.pdf

    #### 第六章:应用层 ##### 30. DNS域名解析协议? DNS(Domain Name System)协议用于将易于记忆的域名转换为对应的IP地址,实现了网络的易用性。 ##### 31. FTP文件传输协议? FTP(File Transfer Protocol)...

    7-3网络配置文件介绍.pdf

    本篇内容将详细解释这些网络配置文件及其作用。 1. **网络配置文件**: - **`/etc/sysconfig/network-scripts/ifcfg-eth0`**(或其他接口名称如`ifcfg-enp0s3`):这是Red Hat系Linux(如CentOS、Fedora)中用来...

    计算机考研复试面试常问问题 计算机网络篇

    计算机网络是计算机科学与技术领域中的一门重要学科,涉及到计算机系统之间的通信、数据传输和网络协议等方面。在计算机考研复试面试中,计算机网络篇是必不可少的一部分。本文将对计算机网络的主要知识点进行系统的...

    Redhat_Linux下DNS配置

    在Redhat Linux下配置DNS服务器是一项关键任务,尤其对于企业局域网环境,它涉及到网络的正常运行和域名解析。在这个过程中,我们需要熟悉Linux命令行操作以及DNS服务的核心组件——BIND(Berkeley Internet Name ...

    第二十八课:基于MSF发现内网存活主机第六季1

    第六季涉及的后渗透测试模块: 1. `windows/gather/arp_scanner`:在Meterpreter会话中运行,使用ARP协议来检测网络中活动的Windows主机。 2. `windows/gather/enum_ad_computers`:枚举活动目录中的计算机,对于...

    网络编程实例汇总(第一到第七章)

    **第六章:文件浏览与管理** 在这一章,读者将学习如何通过网络进行文件的浏览、搜索和管理。实例可能涵盖创建一个网络文件浏览器,允许用户远程查看和操作文件系统,以及实现文件的上传和下载功能。 **第七章:...

Global site tag (gtag.js) - Google Analytics