DNS报文中Qtype有哪几种
时间: 2024-05-17 20:14:22 浏览: 351
DNS报文中的Qtype指的是查询的类型(Query Type),它表示查询资源记录的类型。常见的Qtype类型包括以下几种:
1. A记录(Address Record):查询域名对应的IPv4地址。
2. AAAA记录(IPv6 Address Record):查询域名对应的IPv6地址。
3. CNAME记录(Canonical Name Record):查询别名记录,即将一个域名指向另一个域名。
4. MX记录(Mail exchanger Record):查询邮件交换记录,即查询邮件服务器的地址。
5. NS记录(Name Server Record):查询域名服务器记录,即查询该域名对应的DNS服务器。
6. PTR记录(Pointer Record):反向查询记录,即查询一个IP地址对应的域名。
7. SOA记录(Start of Authority Record):查询授权记录,即查询该域名服务器的授权信息。
8. TXT记录(Text Record):查询文本记录,即查询某个域名的文本信息。
以上就是常见的DNS报文中Qtype的类型。
相关问题
DNS报文中qtype有哪几种
DNS报文中qtype表示查询的资源记录类型,常用的qtype包括:
1. A记录(1):查询IPv4地址
2. AAAA记录(28):查询IPv6地址
3. CNAME记录(5):查询别名记录
4. MX记录(15):查询邮件交换记录
5. NS记录(2):查询域名服务器记录
6. PTR记录(12):查询反向解析记录
7. SOA记录(6):查询起始授权机构记录
8. SRV记录(33):查询服务记录
9. TXT记录(16):查询任意文本记录
以上是比较常用的qtype类型,还有一些其他的类型,如AXFR记录、IXFR记录等。
用linux c写dns报文查询代码
下面是一个简单的 DNS 查询代码,使用 C 语言在 Linux 上编写:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#define DNS_QUERY_PORT 53
#define DNS_SERVER_IP "8.8.8.8"
#define DNS_QUERY_NAME "www.google.com"
struct DNS_HEADER
{
unsigned short id;
unsigned char rd :1;
unsigned char tc :1;
unsigned char aa :1;
unsigned char opcode :4;
unsigned char qr :1;
unsigned char rcode :4;
unsigned char cd :1;
unsigned char ad :1;
unsigned char z :1;
unsigned char ra :1;
unsigned short q_count;
unsigned short ans_count;
unsigned short auth_count;
unsigned short add_count;
};
struct QUESTION
{
unsigned short qtype;
unsigned short qclass;
};
int main(int argc, char *argv[])
{
int sockfd;
struct sockaddr_in serv_addr;
char send_buf[1024];
char recv_buf[1024];
int send_len;
int recv_len;
// 创建套接字
if ((sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0)
{
perror("socket error");
exit(EXIT_FAILURE);
}
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(DNS_QUERY_PORT);
serv_addr.sin_addr.s_addr = inet_addr(DNS_SERVER_IP);
struct DNS_HEADER *dns = (struct DNS_HEADER *)send_buf;
struct QUESTION *qinfo = (struct QUESTION *)(send_buf + sizeof(struct DNS_HEADER));
dns->id = (unsigned short)htons(getpid());
dns->qr = 0;
dns->opcode = 0;
dns->aa = 0;
dns->tc = 0;
dns->rd = 1;
dns->ra = 0;
dns->z = 0;
dns->ad = 0;
dns->cd = 0;
dns->rcode = 0;
dns->q_count = htons(1);
dns->ans_count = 0;
dns->auth_count = 0;
dns->add_count = 0;
qinfo->qtype = htons(1);
阅读全文