DNS域名解析

本文探讨了DNS域名系统的工作原理,详细解释了如何通过代码实现域名解析的过程,旨在帮助读者深入了解互联网上名称到IP地址转换的关键技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DNS(Domain Name System) :域名系统

   服务器IP地址:114.114.114.114 端口号:53

实现域名解析

在执行时可能会出现已经发送了数据包过去,但收不到服务端响应的
数据,可以再重新编译换个域名运行可执行文件。

代码如下:

#include <sys/types.h>			
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>

#define DNS_PORT 53
#define DNS_IP   "114.114.114.114"
/*
	将domain指向的域名翻译成DNS数据包要求的格式
	并将其保存到dns指向的空间中去
		@返回值:成功返回翻译后的字符串的长度,失败返回0
*/
int Generate_Domainname(char *domain,char *dns)
{
   
	unsigned char *pos = domain;
	int len = 0;

	int n;
	while(1)
	{
   
		//strstr(str1,str2)函数用于判断str2是否为str1的子串
		//如果是该函数会返回str2在str1中首次出现的地址,否则返回NULL
		n = strlen(pos) - (strstr(pos,".") ? strlen(strstr(pos,".")) : 0);

		//将求出来的字符'.'之前的字符串的长度保存起来
		*dns++ = (unsigned char)n;

		strncpy(dns,pos,n);

		dns += n;

		len += n + 1;

		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_60265426

都是好兄弟

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值