cdn 原理

没有前言 直接原理

cdn原理分为4步:

1)、用户向浏览器提供要访问的域名;

2)、浏览器调用域名解析函数库对域名进行解析,以得到此域名对应的IP地址;

3)、浏览器使用所得到的IP地址,域名的服务主机发出数据访问请求;

4)、浏览器根据域名主机返回的数据显示网页的内容。

下面看一段c代码

 #include <sys/socket.h>
 #include <stdio.h>
 int main()
 {
     char *ptr,**pptr;
     struct hostent *hptr;
     char str[32];
    char str[32];
    ptr = "www.baidu.com";
    if((hptr=gethostbyname(ptr))==NULL)
    {   
        printf("gethostbyname error for host:%s\n",ptr);
        return 0;
    }   
    //将主机规范名打印出来
    printf("official hostname:%s\n",hptr->h_name);
    //主机可能有多个别名,将所有别名分别打印出来
    for(pptr=hptr->h_aliases;*pptr!=NULL;pptr++)
        printf("alias:%s\n",*pptr);
    //根据地质类型,将地址打印出来
    switch(hptr->h_addrtype)
    {   
        case AF_INET:
        case AF_INET6:
            pptr=hptr->h_addr_list;
        //将刚才得到的所有地址都打印出来,其中调用了inet_ntop()函数
            for(;*pptr!=NULL;pptr++){
                printf(" address:%s\n",inet_ntop(hptr->h_addrtype,*pptr,str,sizeof(str)));
            }   
            break;
        default:
            printf("unknow address type\n");
            break;
    }   
    return 0;
}


输出的结果:

official hostname:www.a.shifen.com
alias:www.baidu.com
 address:119.75.218.77
 address:119.75.217.56

它用gethostbyname函数访问baidu会返回两个ip地址,一般客户端只需要一个ip地址,浏览器是不会区分哪个ip地址更有效率的,所以就需要设置服务器中间层,具体步骤是  :

    1.客户端(浏览器)gethostbyname -> 公网名字服务器 -> 中间缓存层名字服务器 计算客户ip地址 返回真正的ip

    2.客户端通过socket绑定ip地址访问边缘服务器 返回数据   

以上步骤是我猜的 希望高手指点                            



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值