当前位置: 首页 > news >正文

微信分享网站短链接怎么做的做电影网站犯法

微信分享网站短链接怎么做的,做电影网站犯法,网站服务器和空间的区别,最好的wordpressDNS 概述 域名系统 DNS(Domain Name System)是因特网使用的命名系统#xff0c;用来把便于人们使用的机器名字转换成为 IP 地址。域名系统其实就是名字系统。为什么不叫“名字”而叫“域名”呢#xff1f;这是因为在这种因特网的命名系统中使用了许多的“域(domain)”#x…DNS 概述 域名系统 DNS(Domain Name System)是因特网使用的命名系统用来把便于人们使用的机器名字转换成为 IP 地址。域名系统其实就是名字系统。为什么不叫“名字”而叫“域名”呢这是因为在这种因特网的命名系统中使用了许多的“域(domain)”因此就出现了“域名”这个名词。“域名系统”明确地指明这种系统是应用在因特网中。我们都知道IP 地址是由 32 位的二进制数字组成的。用户与因特网上某台主机通信时显然不愿意使用很难记忆的长达 32 位的二进制主机地址。即使是点分十进制 IP 地址也并不太容易记忆。相反大家愿意使用比较容易记忆的主机名字。但是机器在处理 IP 数据报时并不是使用域名而是使用 IP 地址。 这是因为 IP 地址长度固定而域名的长度不固定机器处理起来比较困难。 例如www.baidu.com 就是一个域名那么域名解析的过程就是 www.baidu.com--DNS 服务器(把域名转成 IP)--转换为 IP(http://14.215.177.39/) DNS 协议运行在 UDP 协议上面,是一个 UDP 的“回显”程序,使用 53 号端口 因特网的域名结构 从语法上讲每一个域名都是有标号(label)序列组成而各标号之间用点(小数点)隔开。如下例子所示: 上图这是中央电视台用于手法电子邮件的计算机的域名它由三个标号组成其中标号com 是顶级域名标号 cctv 是二级域名标号 mail 是三级域名。 DNS 规定域名中的标号都有英文和数字组成 每一个标号不超过 63 个字符 ( 为了记忆方 便一般不会超过 12 个字符 ) 也不区分大小写字母。 级别最低的域名写在最左边而级别最高的字符写在最右边。由多个标号组成的完整域名总共不超过 255 个字符。 DNS 既不规定一个域名需要包含多少个下级域名也不规定每一级域名代表什么意思。各级域名由其上一级的域名管理机构管理而最高的顶级域名则由 ICANN 进行管理。用这种方法可使每一个域名在整个互联网范围内是唯一的并且也容易设计出一种查找域名的机制。 DNS 协议 首部格式 DNS 请求与响应的格式是一致的其头部分为 Header 、 Question 、 Answer 、 Authority 、 Additional5 部分如下图所示 Header 部分是一定有的长度固定为 12 个字节其余 4 部分可能有也可能没有并且长度也不一定这个在 Header 部分中有指明。 Header 的结构如下 下面说明一下各个字段的含义 : 1. 标识符占 16 位         ID占 16 位。该值由发出 DNS 请求的程序生成DNS 服务器在响应时会使用该 ID这样便于请求程序区分不同的 DNS 响应。 2. 标志占 16 位         QR占 1 位。指示该消息是请求还是响应。0 表示请求1 表示响应。         OPCODE占 4 位。指示请求的类型有请求发起者设定响应消息中复用该值。0 表示标准查询1 表示反转查询2 表示服务器状态查询。3~15 目前保留以备将来使用。         AAAuthoritative Answer权威应答占 1 位。表示响应的服务器是否是权威DNS 服务器。只在响应消息中有效。         TCTrunCation截断占 1 位。指示消息是否因为传输大小限制而被截断。         RDRecursion Desired期望递归占 1 位。该值在请求消息中被设置响应消息复用该值。如果被设置表示希望服务器递归查询。但服务器不一定支持递归查询。         RARecursion Available递归可用性占 1 位。该值在响应消息中被设置或被清除以表明服务器是否支持递归查询。         Z占 3 位。保留备用。         RCODEResponse code占 4 位。该值在响应消息中被设置。取值及含义如下                 0No error condition没有错误条件                 1Format error请求格式有误服务器无法解析请求                 2Server failure服务器出错。                 3Name Error只在权威 DNS 服务器的响应中有意义表示请求中的域名不存在。                 4Not Implemented服务器不支持该请求类型。                 5Refused服务器拒绝执行请求操作。                 6~15保留备用。QDCOUNT占 16 位无符号。指明 Question 部分的包含的实体数量。         ANCOUNT占 16 位无符号。指明 Answer 部分的包含的 RRResource Record数 量。         NSCOUNT占 16 位无符号。指明 Authority 部分的包含的 RRResource Record数量。         ARCOUNT占 16 位无符号。指明 Additional 部分的包含的 RRResource Record数量。 数据区域 查询名         查询名部分长度不定一般为要查询的域名(也会有 IP 的时候即反向查询)。 此部分由一个或者多个标示符序列组成每个标示符以首字节数的计数值来说明该标示符长度每个名字以 0 结束。计数字节数必须是 0~63 之间。该字段无需填充字节。还是借个例子来说明更直观些查询名为 http://gemini.tuc.noao.edu 的话查询名字段如下 查询类型 查询类         一般为 IN(枚举值 1) 即 Internet 数据 DNS 客户端程序实例 #include sys/types.h /* See NOTES */ #include sys/socket.h #include sys/socket.h #include netinet/in.h #include arpa/inet.h #include linux/socket.h #include stdio.h #include errno.h #include string.h #include stdlib.h #include sys/types.h #include dirent.h #include unistd.hint sock; struct sockaddr_in sa;/* generate_question:解析域名数据 */ void generate_question(char*dns_name,char*buf,int*len) {char*pos dns_name;//指向域名当前位置char*ptr buf;int n 0;*len 0;while(1){n strlen(pos) - (strstr(pos , .) ? strlen(strstr(pos , .)) : 0);//在 pos 中查找.子串//返回.在 pos 中第一次出现的地址若没有找到返回 NULLprintf(%d\n, n);*ptr (unsigned char)n;memcpy(ptr,pos,n);printf(%lu\n,strlen(ptr));printf(%s\n, ptr);*len n 1;ptr n;if(!strstr(pos , .)){*ptr (unsigned char)0;ptr ;*len 1;break;}pos n 1;printf(%s\n, pos);} }/* send_dns_request:解析域名数据并发送数据包 */ void send_dns_request(char * dns_name) {unsigned char request[256] {0}; //保存整个请求报文unsigned char *ptr request;unsigned char question[128];//存储域名解析数据int question_len;//产生请求(把字符串表示的域名转换成 DNS 要求的格式)generate_question(dns_name , question ,question_len);printf(%s\n, question);printf(%d\n, question_len);*((unsigned short*)ptr) 1; //会话标识 IDptr 2;*((unsigned short*)ptr) htons(0x0100); //flagsptr 2;*((unsigned short*)ptr) htons(1); //Quetions 问题数通常为 1ptr 2;*((unsigned short*)ptr) 0;ptr 2;*((unsigned short*)ptr) 0;ptr 2;*((unsigned short*)ptr) 0;ptr 2;//把域名(www.baidu.com)装换为相应的问题格式保存在此处,以\0 结尾memcpy(ptr , question , question_len);ptr question_len;*((unsigned short*)ptr) htons(1); //获取 IPV4 地址查询类型ptr 2;*((unsigned short*)ptr) htons(1); //指互联网地址查询类一般为 1表明是 Internet 数据int re sendto(sock, request,question_len16 ,0, (structsockaddr*)sa, sizeof(sa));printf(re %d\n,re);int i;for(i0;ire;i)//以 16 进制格式打印出来{printf(%02X ,(unsigned char)request[i]);} printf(\n); }/*recv_dns_response:获取域名所对应的 IP 地址并打印 */ void recv_dns_response() {struct sockaddr_in src_addr;socklen_t addrlen sizeof(src_addr);char buf[255] {0};int r recvfrom(sock, buf, 255, 0, (struct sockaddr*)src_addr,addrlen);printf(r %d\n, r);if(r 0)//收到大于 0 的数据{int i;for(ir-4;ir;i)//以 16 进制格式打印出来{if(i ! r-1)printf(%d.,(unsigned char)buf[i]);elseprintf(%d\n,(unsigned char)buf[i]);} } }//例./main www.baidu.com int main(int argc, char *argv[]) {if(argc ! 2){printf(Usage : %s domain name\n,argv[0]);return -1;}//step 1: 创建一个套接字sock socket(AF_INET, SOCK_DGRAM, 0);if (sock -1){perror(socket error:);return -1;}//step 2: 绑定一个地址(ip端口号)memset(sa, 0,sizeof(sa));sa.sin_family AF_INET;sa.sin_port htons(53); //按网络字节序来保存一个整数sa.sin_addr.s_addr inet_addr(114.114.114.114);//发送解析请求send_dns_request(argv[1]);//接收分析结果recv_dns_response();close(sock);return 0; } 可以看到当按正确的报文形式发送给 DNS 服务器后接收到的报文后面四个字节存储了解析的 IP 地址 域名解析函数(gethostbyname) 【头文件】 #include netdb.h #include sys/socket.h extern int h_errno; 【函数原型】 struct hostent *gethostbyname(const char *name); 【函数功能】         使用域名或主机名获取地址 【参数含义】         [name]: 待解析的域名或主机名 【返回值】         失败返回 NULL 指针         成功返回的非空指针指向如下的 hostent 结构体指针 struct hostent {char *h_name; /* 主机正式名称 */char **h_aliases; /* 别名列表。 */int h_addrtype; /* 主机地址类型。*/int h_length; /* 地址的长度。 */char **h_addr_list; /*来自名称服务器的地址列表。 */#ifdef __USE_MISC# define h_addr h_addr_list[0] /* 地址用于向后兼容。*/#endif }; 【示例】 #include sys/socket.h #include arpa/inet.h #include netdb.h #include stdio.h extern int h_errno;int main(int argc, char **argv) {if (argc ! 2) {printf(Use example: %s www.google.com\n, *argv);return -1;}char *name argv[1];struct hostent *hptr;hptr gethostbyname(name);if (hptr NULL) {printf(gethostbyname error for host: %s: %s\n, name, hstrerror(h_errno));return -1;}//输出主机的规范名printf(\tofficial: %s\n, hptr-h_name);//输出主机的别名char **pptr;char str[INET_ADDRSTRLEN];for (pptrhptr-h_aliases; *pptr!NULL; pptr) {printf(\ttalias: %s\n, *pptr);}//输出 ip 地址switch (hptr-h_addrtype) {case AF_INET:pptr hptr-h_addr_list;for (; *pptr!NULL; pptr) {printf(\taddress: %s\n,inet_ntop(hptr-h_addrtype, hptr-h_addr, str, sizeof(str)));}break;default:printf(unknown address type\n);break;}return 0; } 获取本地主机名(gethostname) 【头文件】 #include unistd.h 【函数原型】 int gethostname(char *name, size_t len); 【函数功能】         获取本地主机名 【参数含义】         [name]: 保存获取的主机名         [len]: naem 的最大长度 【返回值】         成功返回 0失败返回-1 【示例】 char buf[256] {0}; int t gethostname(buf,256); if(t 0) {printf(%s\n,buf); } 设置本地主机名(sethostname) 【头文件】 #include unistd.h 【函数原型】 int sethostname(const char *name, size_t len); 【函数功能】         设置本地主机名 【参数含义】         [name]: 设置的主机名         [len]: naem 的最大长度 【返回值】         成功返回 0失败返回-1 【示例】 sethostname ( jiuyue , 6 );
http://www.zqtcl.cn/news/347090/

相关文章:

  • 网站开发优势wordpress 密码破解
  • 做网站空间需要多大深圳服装网站建设
  • 建网站wordpress制作app多少钱一个
  • 怎么做装修网站torrentkitty磁力猫
  • 网站建立站点wordpress手机网站模板制作
  • 宁夏建设工程招标投标信息网站教师做网站赚钱
  • 潍坊网站制作价格网站维护入门教程
  • 微信网站怎么做下载附件wordpress英文主题汉化
  • 桂平网站设计python基础教程第二版
  • wordpress hermit杭州企业seo网站优化
  • 贵州做团队培训的网站法学网站阵地建设
  • 网站死链是什么西宁高端网站开发公司
  • 做团购网站的公司wordpress附件存放位置
  • 成都最专业做网站的仿win8网站模板
  • 国外设计类网站男女做暖暖试看网站
  • 网站设计哪个好珠海微网站进入
  • 云主机开网站教程模板网会员
  • 网站建设无锡虚拟网站官网
  • 品牌网站设计联系东莞网站优化公
  • 自己做整个网站的流程php装修网站源码
  • 天津网站建设班模拟网站建设软件有哪些
  • 服务类的网站怎么做做软件的网站担保网站
  • 最新电子产品网站模板海口网站排名提升
  • 北京社保网站减员怎么做phpcms v9 实现网站搜索
  • 视频运营管理网站济南网站建设 济南货梯
  • html电影网站模板下载工具阿里云网站建设 部署与发布笔记
  • 建设跨境网站微信seo是什么意思
  • 我做彩票网站开发彩票网站搭建织梦如何仿手机网站源码下载
  • 东仓建设网站手机便宜的网站建设
  • 吕梁市住房与城乡建设厅网站wordpress 乐趣公园