国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

《TCP/IP網(wǎng)絡(luò)編程》閱讀筆記--域名及網(wǎng)絡(luò)地址

這篇具有很好參考價(jià)值的文章主要介紹了《TCP/IP網(wǎng)絡(luò)編程》閱讀筆記--域名及網(wǎng)絡(luò)地址。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

目錄

1--域名系統(tǒng)

2--域名與 IP 地址的轉(zhuǎn)換

2-1--利用域名來獲取 IP 地址

2-2--利用 IP 地址獲取域名

3--代碼實(shí)例

3-1--gethostbyname()

3-2--gethostbyaddr()


1--域名系統(tǒng)

????????域名系統(tǒng)(Domain Name System,DNS)是對 IP 地址和域名進(jìn)行相互轉(zhuǎn)換的系統(tǒng),其核心是 DNS 服務(wù)器;

? ? ? ? 一般來說,IP 地址比較難記且經(jīng)常變化,而域名容易記且易表述,并不會輕易改變域名;(Naver 網(wǎng)站的 IP 地址是222.122.195.5 而其域名為 www.naver.com)

? ? ? ? 域名是賦予服務(wù)器端的虛擬地址,并非實(shí)際地址,因此需要通過 DNS 服務(wù)器將虛擬的域名地址轉(zhuǎn)換為實(shí)際的 IP 地址;

? ? ? ? 通常,計(jì)算機(jī)會向內(nèi)置的默認(rèn) DNS 服務(wù)器請求獲得域名對應(yīng)的 IP 地址,若默認(rèn) DNS 服務(wù)器無法解析,則默認(rèn) DNS 服務(wù)器會不斷向上級 DNS 服務(wù)器詢問,直至獲得域名對應(yīng)的 IP 地址;

程序中使用域名的必要性:

? ? ? ? ① IP 地址比域名發(fā)生變更的概率要高,因此一般不會利用 IP 地址來編寫程序;

? ? ? ? ② 域名一般不會變更,通過域名編寫程序,在程序中根據(jù)域名來獲取 IP 地址,再通過轉(zhuǎn)換的 IP 地址接入相應(yīng)的服務(wù)器,就比直接使用 IP 地址顯得更為高效;

2--域名與 IP 地址的轉(zhuǎn)換

2-1--利用域名來獲取 IP 地址

#include <netdb.h>
struct hostent* gethostbyname(const char* hostname);
// 成功時(shí)返回 hostent 結(jié)構(gòu)體地址,失敗時(shí)返回 NULL 指針

// hosttent結(jié)構(gòu)體的定義如下:
struct hostent{
    char* h_name;
    char** h_aliases;
    int h_addrtype;
    int h_length;
    char** h_addr_list;
}

????????在上述 hostent 結(jié)構(gòu)體中,h_name 表示官方域名h_aliases 表示其它域名信息(因?yàn)槎鄠€(gè)域名可以訪問同一主頁,同一個(gè) IP 也可以綁定多個(gè)域名);h_addrtype 表示地址族信息(例如 IPv4,則對應(yīng)為 AF_INET); h_length 表示 IP 地址的長度(IPv4 則為 4,IPv6 則為 16);h_addr_list 表示已整數(shù)形式保存的 IP 地址

2-2--利用 IP 地址獲取域名

#include <netdb.h>
struct hostent* gethostbyaddr(const char* addr, socklen_t len, int family);
// 成功時(shí)返回 hostent 結(jié)構(gòu)體變量地址值,失敗時(shí)返回 NULL 指針
// addr 表示函數(shù) IP 地址信息的 in_addr 結(jié)構(gòu)體指針,為了同時(shí)傳遞 IPv4 地址之外的其他信息,該變量的類型聲明為 char 指針
// len 表示向第一個(gè)參數(shù)傳遞的地址信息的字節(jié)數(shù),IPv4 為 4,IPv6 為 16
// family 表示傳遞的地址族信息,IPv4 為 AF_INET,IPv6 為 AF_INET6

3--代碼實(shí)例

3-1--gethostbyname()

// gcc gethostbyname.c -o gethostbyname
// ./gethostbyname www.baidu.com

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <netdb.h>

void error_handling(char *message){
    fputs(message, stderr);
    fputc('\n', stderr);
    exit(1);
}

int main(int argc, char *argv[]){
    int i;
    struct hostent *host;
    if(argc != 2){
        printf("Usage : %s <port>\n", argv[0]);
        exit(1);
    }

    host = gethostbyname(argv[1]);
    if(!host){
        error_handling("gethost... error");
    }

    printf("Official name: %s \n", host->h_name);
    for(i = 0; host->h_aliases[i]; i++){
        printf("Aliases %d: %s \n", i+1, host->h_aliases[i]);
    }
    printf("Address type: %s \n", (host->h_addrtype == AF_INET)?"AF_INET":"AF_INET6");
    for(i = 0; host->h_addr_list[i]; i++){
        printf("IP addr %d: %s \n", i+1, inet_ntoa(*(struct in_addr*)host->h_addr_list[i]));
    }
    return 0;
}

《TCP/IP網(wǎng)絡(luò)編程》閱讀筆記--域名及網(wǎng)絡(luò)地址,網(wǎng)絡(luò)編程筆記,tcp/ip

3-2--gethostbyaddr()

// gcc gethostbyaddr.c -o gethostbyaddr
// ./gethostbyaddr 199.59.148.206

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <netdb.h>

void error_handling(char *message){
    fputs(message, stderr);
    fputc('\n', stderr);
    exit(1);
}

int main(int argc, char *argv[]){
    int i;
    struct hostent *host;
    struct sockaddr_in addr;
    if(argc != 2){
        printf("Usage : %s <port>\n", argv[0]);
        exit(1);
    }

    memset(&addr, 0, sizeof(addr));
    addr.sin_addr.s_addr = inet_addr(argv[1]);
    host = gethostbyaddr((char*) &addr.sin_addr, 4, AF_INET);
    if(!host){
        error_handling("gethost... error");
    }

    printf("Official name: %s \n", host->h_name);
    for(i = 0; host->h_aliases[i]; i++){
        printf("Aliases %d: %s \n", i+1, host->h_aliases[i]);
    }
    printf("Address type: %s \n", (host->h_addrtype == AF_INET)?"AF_INET":"AF_INET6");
    for(i = 0; host->h_addr_list[i]; i++){
        printf("IP addr %d: %s \n", i+1, inet_ntoa(*(struct in_addr*)host->h_addr_list[i]));
    }
    return 0;
}

《TCP/IP網(wǎng)絡(luò)編程》閱讀筆記--域名及網(wǎng)絡(luò)地址,網(wǎng)絡(luò)編程筆記,tcp/ip文章來源地址http://www.zghlxwxcb.cn/news/detail-700113.html

到了這里,關(guān)于《TCP/IP網(wǎng)絡(luò)編程》閱讀筆記--域名及網(wǎng)絡(luò)地址的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 《TCP/IP網(wǎng)絡(luò)編程》閱讀筆記--Timewait狀態(tài)和Nagle算法

    《TCP/IP網(wǎng)絡(luò)編程》閱讀筆記--Timewait狀態(tài)和Nagle算法

    ? ? ? ? 對于服務(wù)器端/客戶端,當(dāng)一端結(jié)束連接時(shí),會向另一端發(fā)送 FIN 消息;兩端的在經(jīng)過四次揮手過程后,其 Socket 不會馬上消除,而是會處于一個(gè) Time-wait 狀態(tài)的階段,此時(shí) Socket 擁有的 端口號并沒有得到釋放 ,因此 不能使用相同的端口號 ; ? ? ? ? 只有先斷開連接

    2024年02月09日
    瀏覽(33)
  • 《TCP/IP網(wǎng)絡(luò)編程》閱讀筆記--基于TCP的服務(wù)器端/客戶端

    《TCP/IP網(wǎng)絡(luò)編程》閱讀筆記--基于TCP的服務(wù)器端/客戶端

    目錄 1--TCP/IP協(xié)議棧 2--TCP服務(wù)器端默認(rèn)函數(shù)調(diào)用順序 3--TCP客戶端的默認(rèn)函數(shù)調(diào)用順序 4--Linux實(shí)現(xiàn)迭代回聲服務(wù)器端/客戶端 5--Windows實(shí)現(xiàn)迭代回聲服務(wù)器端/客戶端 6--TCP原理 7--Windows實(shí)現(xiàn)計(jì)算器服務(wù)器端/客戶端 ????????TCP/IP協(xié)議棧共分 4 層,可以理解為數(shù)據(jù)收發(fā)分成了 4 個(gè)層

    2024年02月10日
    瀏覽(29)
  • 《TCP/IP網(wǎng)絡(luò)編程》閱讀筆記--基于UDP的服務(wù)器端/客戶端

    《TCP/IP網(wǎng)絡(luò)編程》閱讀筆記--基于UDP的服務(wù)器端/客戶端

    目錄 1--TCP和UDP的主要區(qū)別 2--基于 UDP 的數(shù)據(jù) I/O 函數(shù) 3--基于 UDP 的回聲服務(wù)器端/客戶端 4--UDP客戶端Socket的地址分配 5--UDP存在數(shù)據(jù)邊界 6--UDP已連接與未連接的設(shè)置 ① TCP 提供的是可靠數(shù)據(jù)傳輸服務(wù),而 UDP 提供的是不可靠數(shù)據(jù)傳輸服務(wù); ② UDP 在結(jié)構(gòu)上比 TCP 更簡潔,其不會

    2024年02月09日
    瀏覽(53)
  • 《TCP/IP網(wǎng)絡(luò)編程》閱讀筆記--基于Windows實(shí)現(xiàn)Hello Word服務(wù)器端和客戶端

    《TCP/IP網(wǎng)絡(luò)編程》閱讀筆記--基于Windows實(shí)現(xiàn)Hello Word服務(wù)器端和客戶端

    目錄 1--Hello Word服務(wù)器端 2--客戶端 3--編譯運(yùn)行 3-1--編譯服務(wù)器端 3-2--編譯客戶端 3-3--運(yùn)行 運(yùn)行結(jié)果:

    2024年02月10日
    瀏覽(62)
  • TCP IP網(wǎng)絡(luò)編程(三) 地址族與數(shù)據(jù)序列

    網(wǎng)絡(luò)地址 IP地址分為兩類: IPv4 4字節(jié)地址族 IPv6 16字節(jié)地址族 IPv4和IPv6的差別主要是表示在IP地址所用的字節(jié)數(shù),目前通用的地址族為IPv4,而IPv6是為了應(yīng)對IP地址耗盡的問題而提出的標(biāo)準(zhǔn),目前主要還是使用IPv4 IPv4標(biāo)準(zhǔn)的4字節(jié)IP地址分為網(wǎng)絡(luò)地址和主機(jī)地址,且分為A、B、C、

    2024年02月10日
    瀏覽(33)
  • Python網(wǎng)絡(luò)編程基礎(chǔ)之ip地址,端口號,TCP,socket

    Python網(wǎng)絡(luò)編程基礎(chǔ)之ip地址,端口號,TCP,socket

    IP地址 IP地址 (Internet Protocol Address)是指互聯(lián)網(wǎng)協(xié)議地址,又譯為網(wǎng)際協(xié)議地址。 IP地址是IP協(xié)議提供的一種統(tǒng)一的地址格式,它為互聯(lián)網(wǎng)上的每一個(gè)網(wǎng)絡(luò)和每一臺主機(jī)分配一個(gè)邏輯地址,以此來屏蔽物理地址的差異。 換而言之,IP 地址就是標(biāo)識網(wǎng)絡(luò)中設(shè)備的一個(gè)地址,好比

    2024年02月02日
    瀏覽(21)
  • 網(wǎng)絡(luò)編程1—— IP地址 + 端口號 +TCP/IP協(xié)議 + 協(xié)議分層的封裝與應(yīng)用

    網(wǎng)絡(luò)編程1—— IP地址 + 端口號 +TCP/IP協(xié)議 + 協(xié)議分層的封裝與應(yīng)用

    本人是一個(gè)剛剛上路的IT新兵,菜鳥!分享一點(diǎn)自己的見解,如果有錯(cuò)誤的地方歡迎各位大佬蒞臨指導(dǎo),如果這篇文章可以幫助到你,勞請大家點(diǎn)贊轉(zhuǎn)發(fā)支持一下! 從本篇文章開始就要分享網(wǎng)絡(luò)編程的內(nèi)容了,越發(fā)的感受到了編程的魅力,雞湯來嘍!! 1??單機(jī)階段:計(jì)算機(jī)跟計(jì)算

    2024年02月12日
    瀏覽(25)
  • Linux 網(wǎng)絡(luò)編程學(xué)習(xí)筆記——一、TCP/IP 協(xié)議族

    Linux 網(wǎng)絡(luò)編程學(xué)習(xí)筆記——一、TCP/IP 協(xié)議族

    數(shù)據(jù)鏈路層實(shí)現(xiàn)了網(wǎng)卡接口的網(wǎng)絡(luò)驅(qū)動(dòng)程序,以處理數(shù)據(jù)在物理媒介(以太網(wǎng)、令牌環(huán)等)上的傳輸,不同的物理網(wǎng)絡(luò)具有不同的電氣特性,網(wǎng)絡(luò)驅(qū)動(dòng)程序隱藏了這些細(xì)節(jié),為上層協(xié)議提供一個(gè)統(tǒng)一的接口。最常用的協(xié)議是 ARP(Address Resolve Protocol,地址解析協(xié)議)和 RARP(

    2024年02月02日
    瀏覽(40)
  • [C++ 網(wǎng)絡(luò)協(xié)議編程] 域名及網(wǎng)絡(luò)地址

    [C++ 網(wǎng)絡(luò)協(xié)議編程] 域名及網(wǎng)絡(luò)地址

    DNS(Domain Name System):是對IP地址和域名(如:www.baidu.com等)進(jìn)行相互轉(zhuǎn)換的系統(tǒng),其核心是DNS服務(wù)器。 我們輸入的www.baidu.com是域名,是一種虛擬地址,而非實(shí)際地址,DNS服務(wù)器會將這個(gè)虛擬地址轉(zhuǎn)換為實(shí)際地址,即IP地址。若我們直接輸入IP地址,則不會發(fā)生上面的轉(zhuǎn)換。

    2024年02月12日
    瀏覽(23)
  • 《TCP IP網(wǎng)絡(luò)編程》

    《TCP IP網(wǎng)絡(luò)編程》

    ? ? ? ? 2023.6.28 正式開始學(xué)習(xí)網(wǎng)絡(luò)編程。 每一章每一節(jié)的筆記都會記錄在博客中以便復(fù)習(xí)。 ? ? ? ? 網(wǎng)絡(luò)編程又叫套接字編程。所謂網(wǎng)絡(luò)編程,就是編寫程序使兩臺連網(wǎng)的計(jì)算機(jī)相互交換數(shù)據(jù)。 為什么叫套接字編程? 我們平常將插頭插入插座上就能從電網(wǎng)中獲取電力,同

    2024年02月11日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包