亚洲综合极品香蕉久久网,久久夜精品综合缴情五月 ,亚洲动漫成人一区二区,国产在线不卡视频,国产丝袜精品不卡,亚洲乱码日产精品bd,久久久久久国产精品免费网站,亚洲综合av一区二区三区
×

c語(yǔ)言域名解析方法是怎樣的?域名解析的流程有哪些?

分類:域名資訊 編輯:互聯(lián)網(wǎng)觀察 瀏覽量:142
2021-04-28 14:00:39

  現(xiàn)在有很多朋友對(duì)于域名解析的情況不是很了解,它其實(shí)指的是把域名轉(zhuǎn)化為對(duì)應(yīng)的ip地址的過(guò)程,這個(gè)工作是由dns服務(wù)器來(lái)完成的,這個(gè)過(guò)程其實(shí)并不是很復(fù)雜,但是很多朋友會(huì)對(duì)各種解析的方式容易混淆,比如做c語(yǔ)言域名解析,這個(gè)看起來(lái)非常的抽象,不容易理解,那么c語(yǔ)言域名解析方法是怎樣的?域名解析的流程有哪些呢?下面新網(wǎng)就給大家詳細(xì)的來(lái)闡述一下。


  c語(yǔ)言域名解析方法是怎樣的?
  typedef struct _DNSHEAD{ //dns 頭部
  USHORT ID;
  USHORT tag; // dns 標(biāo)志(參數(shù))
  USHORT numQ; // 問(wèn)題數(shù)
  USHORT numA; // 答案數(shù)
  USHORT numA1; // 權(quán)威答案數(shù)
  USHORT numA2; // 附加答案數(shù)
  }DnsHead;
  typedef struct _DNSQUERY //dns 查詢結(jié)構(gòu)
  {
  // char name[64];
  // //查詢的域名,這是一個(gè)大小在0到63之間的字符串;
 
      c語(yǔ)言域名解析
  USHORT type;
  //查詢類型,大約有20個(gè)不同的類型
  USHORT classes;
  //查詢類,通常是A類既查詢IP地址。
  }DnsQuery;
  #pragma comment(lib,"ws2_32.lib")
  // 初始化操作
  bool initWSA();
  //顯示錯(cuò)誤
  void displayErrWSA(char *str);
  //創(chuàng)建套接字
  SOCKET CreateSocket(int type);
  //UDP sendto
  int MySendto(SOCKET sockTo, const char FAR * buf,int len,char *addr,USHORT port);
  //TCP 連接
  bool MyConnect(SOCKET s, char *addr,USHORT );
  // UDP recvfrom
  int MyRecvFrom(SOCKET s, char FAR * buf,int len,char *addr,USHORT port);
  //設(shè)置DNS 頭部
  bool SetDNSHead(char *name,char *buf);
  int main(int arg,char *are[])
  {
  int Result=0;
  char buf[1024]={0};
  char addr[16] = "61.187.72.8";// dns 服務(wù)器地址
  char *name = 0; //要查詢的域名
  if ( !initWSA() )//初始化
  {
  displayErrWSA("initWSA err!");
  return 1;
  }
  //創(chuàng)建套接字
  SOCKET sockTo ;
  if ( (sockTo = CreateSocket(SOCK_DGRAM)) == 0)
  {
  displayErrWSA("CreatSocket err!");
  return 1;
  }
  while (1)
  {
  if (arg 
  {
  char temp[1024]={0};
  printf("\n請(qǐng)輸入要查詢的域名:");
  scanf("%s",temp);
  if (temp[0] == 'q' ||temp[0] == 'Q')
  {
  break;
  }
  name = temp;
  }
  else
  {
  arg = 1;
  name = are[1];
  }
  //設(shè)置dns 頭部
  SetDNSHead(name,buf);
  //發(fā)送出去的請(qǐng)求數(shù)據(jù)長(zhǎng)度
  int len = sizeof(DnsHead)+sizeof(DnsQuery)+strlen(name)+2;
  // for (int i =0;i 
  // {
  // printf("x",(UCHAR)buf[i]);
  // printf("x ",(UCHAR)buf[i+1]);
  // }
  //發(fā)送DNS 請(qǐng)求
  if ( ( Result =MySendto(sockTo,buf,len,addr,53) ) 
  {
  displayErrWSA("sendto err!");
  continue;
  }
  //接收應(yīng)答
  if ( (Result =MyRecvFrom(sockTo,buf,1024,addr,53) ) 
  {
  displayErrWSA("recvfrom err!");
  continue;
  }
  //簡(jiǎn)單的取得返回的 IP 地址( 收到的最后4字節(jié) )
  DnsHead *DnsH = (DnsHead *)buf;
  if (DnsH->numA == 0)
  {
  printf("無(wú)法解析 %s 的IP 地址。\n",name);
  continue;
  }
  char *getIP =(char *)buf +Result - 4;
  printf("%s 的IP地址為: ",name);
  for (int Result= 0 ;Result 
  {
  printf("%u.",(UCHAR )getIP[Result]);
  }
  printf("\n");
  }
  return 0;
  }
  // 初始化操作
  bool initWSA()
  {
  WORD wVersionRequested;
  WSADATA wsaData;
  int Result;
  wVersionRequested = MAKEWORD( 2, 2 );
  Result = WSAStartup( wVersionRequested, &wsaData );
  if(Result != 0 )
  {
  return false;
  }
  if( LOBYTE( wsaData.wVersion) != 2 ||
  HIBYTE(wsaData.wVersion)!= 2 )
  {
  WSACleanup();
  return false;
  }
  return true;
  }
  /
  SOCKET CreateSocket(int type)
  {
  SOCKET sock=socket(AF_INET,type,0);
  if (sock == INVALID_SOCKET )
  {
  return 0;
  }
  return sock;
  }
  /
  int MySendto(SOCKET sockTo, const char FAR * buf,int len,char *addr,USHORT port)
  {
  //設(shè)置發(fā)送數(shù)據(jù)到的 套接字及地址結(jié)構(gòu)
  SOCKADDR_IN addrTo;
  addrTo.sin_addr.S_un.S_addr=inet_addr(addr);
  addrTo.sin_family=AF_INET;
  addrTo.sin_port=htons(port);
  return sendto( sockTo, buf, len, 0,
  (sockaddr*)&addrTo, sizeof(sockaddr) );
  }
  /
  bool MyConnect(SOCKET sockTo, char *addr,USHORT port)
  {
  int Result;
  //設(shè)置連接到的 套接字及地址結(jié)構(gòu)
  SOCKADDR_IN addrTo;
  addrTo.sin_addr.S_un.S_addr=(inet_addr(addr));
  addrTo.sin_family=AF_INET;
  addrTo.sin_port=htons(port);
  //連接
  Result = connect(sockTo,(sockaddr *)&addrTo,sizeof(SOCKADDR_IN));
  if(SOCKET_ERROR == Result)
  {
  return false;
  }
  return true;
  }
  /
  int MyRecvFrom(SOCKET s, char FAR * buf,int len,char *addr,USHORT port)
  {
  //設(shè)置發(fā)送數(shù)據(jù)到的 套接字及地址結(jié)構(gòu)
  SOCKADDR_IN addrFrom;
  addrFrom.sin_addr.S_un.S_addr=inet_addr(addr);
  addrFrom.sin_family=AF_INET;
  addrFrom.sin_port=htons(port);
  int addrlen = sizeof(SOCKADDR_IN);
  return recvfrom( s, buf, len, 0, (SOCKADDR *)&addrFrom, &addrlen);
  }
  /
  int ChName(char *fname,char *tname);//域名轉(zhuǎn)化
  bool SetDNSHead(char *name,char *buf)
  {
  memset(buf,0,sizeof(DnsHead));
  //設(shè)置頭部
  DnsHead *DnsH = (DnsHead *)buf;
  DnsH->ID = (USHORT)1;
  DnsH->tag = htons(0x0100);
  DnsH->numQ = htons(1);
  DnsH->numA = 0;
  DnsQuery *DnsQ =(DnsQuery *) ( buf+ sizeof(DnsHead) );
  int NameLen = ChName(name,(char *)DnsQ);
  //設(shè)置查詢信息
  DnsQ = (DnsQuery *)( (char *)DnsQ + NameLen );
  DnsQ->classes = htons(1);
  DnsQ->type = htons(1);
  return true;
  }
  //顯示錯(cuò)誤信息
  void displayErrWSA(char *str)
  {
  printf("\n%s,err = %d\n",str,WSAGetLastError());
  getchar();
  }
  //域名轉(zhuǎn)化
  int ChName(char *fname,char *tname)
  {
  int j =0;
  int i =strlen(fname)-1;
  tname[i+2] = 0;
  int k = i+1;
  for (; i>=0;i--,k--)
  {
  if (fname[i] == '.')
  {
  tname[k] = j;
  j=0;
  }
  else
  {
  tname[k] = fname[i];
  j++;
  }
  }
  tname[k] = j;
  return strlen(tname)+1;
  }
 
  DNS域名解析流程剖析
  域名解析的流程,每個(gè)步驟如下:
  1) 客戶端通過(guò)瀏覽器訪問(wèn)域名網(wǎng)站,發(fā)起查詢?cè)撚蛎?IP 地址的 DNS 請(qǐng)求。該請(qǐng)求發(fā)送到了本地 DNS 服務(wù)器上。本地 DNS 服務(wù)器會(huì)首先查詢它的緩存記錄,如果緩存中有此條記錄,就可以直接返回結(jié)果。如果沒(méi)有,本地 DNS 服務(wù)器還要向 DNS 根服務(wù)器進(jìn)行查詢。
  2) 本地 DNS 服務(wù)器向根服務(wù)器發(fā)送 DNS 請(qǐng)求,請(qǐng)求域名的 IP 地址。
  3) 根服務(wù)器經(jīng)過(guò)查詢,沒(méi)有記錄該域名及 IP 地址的對(duì)應(yīng)關(guān)系。但是會(huì)告訴本地 DNS 服務(wù)器,可以到域名服務(wù)器上繼續(xù)查詢,并給出域名服務(wù)器的地址(.com 服務(wù)器)。
  4) 本地 DNS 服務(wù)器向 .com 服務(wù)器發(fā)送 DNS 請(qǐng)求,請(qǐng)求域名、的 IP 地址。
  5).com 服務(wù)器收到請(qǐng)求后,不會(huì)直接返回域名和 IP 地址的對(duì)應(yīng)關(guān)系,而是告訴本地 DNS 服務(wù)器,該域名可以在 baidu.com 域名服務(wù)器上進(jìn)行解析獲取 IP 地址,并告訴域名服務(wù)器的地址。
  6) 本地 DNS 服務(wù)器向域名服務(wù)器發(fā)送 DNS 請(qǐng)求,請(qǐng)求域名的 IP 地址。
  7) 服務(wù)器收到請(qǐng)求后,在自己的緩存表中發(fā)現(xiàn)了該域名和 IP 地址的對(duì)應(yīng)關(guān)系,并將IP地址返回給本地 DNS 服務(wù)器。
  8) 本地 DNS 服務(wù)器將獲取到與域名對(duì)應(yīng)的 IP 地址返回給客戶端,并且將域名和 IP 地址的對(duì)應(yīng)關(guān)系保存在緩存中,以備下次別的用戶查詢時(shí)使用。
  域名解析有哪些注意事項(xiàng)?域名解析基本知識(shí)詳解
  一、A記錄解析
  A記錄解析是最為常見(jiàn)的域名解析方式,記錄類型選擇”A”,記錄值填寫空間商提供的主機(jī)IP地址,MX優(yōu)先級(jí)不需要設(shè)置,TTL設(shè)置默認(rèn)的3600即可。選擇A記錄時(shí),需要設(shè)定域名或者子域名指向,通常需要注意以下3點(diǎn):
  1. 做A記錄時(shí), 對(duì)應(yīng)值必須是IP地址;
  2. 主機(jī)名必須填寫,用@可以表示主機(jī)名為空;
  3. 泛域名解析,請(qǐng)?jiān)谥鳈C(jī)名處輸入*,增加A記錄即可。
  A記錄對(duì)于網(wǎng)站優(yōu)化來(lái)說(shuō)是蜘蛛最為喜歡的一種方式,因?yàn)橹┲朊看闻廊【W(wǎng)站都是固定的一個(gè)IP,能夠避免不必要的錯(cuò)誤。不過(guò)A記錄對(duì)于使用不同網(wǎng)絡(luò)訪問(wèn)網(wǎng)站的用戶來(lái)說(shuō),有一定的短處,例如網(wǎng)站放在電信服務(wù)器上,如果是聯(lián)通的用戶訪問(wèn),網(wǎng)站打開(kāi)速度就會(huì)有一定的影響。
  二、CNAME記錄解析
  CNAME類型解析設(shè)置的方法和A記錄類型基本是一樣的,其中將記錄類型修改為”CNAME”,并且記錄值填寫服務(wù)器主機(jī)地址即可。不過(guò)對(duì)應(yīng)的值不是一個(gè)固定的IP,而是主機(jī)的別名地址,以新網(wǎng)為例別名解析步驟為:
  1. 在主機(jī)名處填寫www或者其他名稱;
  2. 在記錄類型選擇類型為CNAME記錄;
  3. 在記錄值填寫別名地址;
  4. 點(diǎn)擊立即添加,完成添加別名解析。
  三、MX記錄解析

  MX記錄是相對(duì)用到較少的一種解析,MX記錄是做郵箱解析使用的。記錄類型選擇MX,線路類型選擇通用或者同時(shí)添加三條線路類型為電信、網(wǎng)通、教育網(wǎng)的記錄;記錄值填寫郵局商提供的服務(wù)器IP地址或別名地址;TTL設(shè)置默認(rèn)的3600即可,MX優(yōu)先級(jí)填寫郵局提供商要求的數(shù)據(jù),或是默認(rèn)10,有多條MX記錄的時(shí)候,優(yōu)先級(jí)要設(shè)置不一樣的數(shù)據(jù)。


  c語(yǔ)言域名解析方法是怎樣的?以上就給大家介紹了關(guān)于c語(yǔ)言域名解析方法的問(wèn)題,大家在做c語(yǔ)言域名解析的時(shí)候,就可以按照上面的步驟去做,這個(gè)是需要耐心的去做的,千萬(wàn)不要著急,要不然就可能會(huì)出錯(cuò)了。如果大家在做c語(yǔ)言域名解析的過(guò)程中,還有不懂的地方,可以咨詢新網(wǎng)。


聲明:免責(zé)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),也不承認(rèn)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請(qǐng)發(fā)

送郵件至:operations@xinnet.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)

需注明出處:新網(wǎng)idc知識(shí)百科

免費(fèi)咨詢獲取折扣

Loading
主站蜘蛛池模板: 在线看免费无码的av天堂| 亚洲综合一区国产精品| 国语少妇高潮对白在线| 色综合久久无码中文字幕| 国产亚洲精品第一综合麻豆 | 怡春院久久国语视频免费| 国产吃奶在线观看| 国产性夜夜春夜夜爽免费下载| 亚洲成a人片在线观看无码下载| 岛国在线观看无码不卡| 国产亚洲精品第一综合麻豆 | 久久无码潮喷a片无码高潮| 亚洲 欧洲 日韩 综合色天使 | 精品亚洲韩国一区二区三区| 中文天堂网www新版资源在线| 久久人人97超碰caoporen| 八区精品色欲人妻综合网| 国产精品18久久久久久欧美| 亚洲欧美在线综合色影视| 国产毛片毛多水多的特级毛片| 亚洲色大成网站www永久在线观看| 一区二区人妻无码欧美| 51被公侵犯玩弄漂亮人妻| 成人亚洲欧美在线观看| 国产熟女露脸大叫高潮| 久久免费视频精品在线| 久久精品久久精品中文字幕| 精品国产aⅴ一区二区三区| 国产香蕉97碰碰视频va碰碰看| 九九热爱视频精品| 特大巨黑吊av在线播放| 日本特黄特色特爽大片| 茄子视频国产在线观看| 精品少妇人妻av久久久| 亚洲精品国产免费无码网站| 久久精品国产曰本波多野结衣| 午夜成人1000部免费视频| 精品麻豆丝袜高跟鞋av| 狠狠五月深爱婷婷| 99久久久无码国产麻豆| 人人妻人人爽日日人人|