`
thinkry
  • 浏览: 39265 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

主程的晋升攻略(3):IP、DNS和CDN

阅读更多

有段时间我面试程序员时,喜欢问这个问题:局域网IP有哪些IP段?由这个问题再追问NAT(网络地址转换)。

 

为什么不是每个设备一个公网IP?

先说个关于QQ的小故事,最早开发QQ时,小马哥他们也没想到QQ会发展成中国互联网基础设施,就用4字节整形表示QQ号了。早期内部的一些项目有用int表示QQ号,能表示的最大值是2^31-1,即21亿多。在QQ号发放近20亿时,腾讯内部搞了个22亿QQ号测试,要求每个项目检查整改,使用unsigned int表示QQ号,以支持21亿以上的QQ号。随着QQ号的不断增长,迟早会超出4字节的范围,那时估计得启动int64转换了。

 

可以看出在底层和协议设计中,字段的扩大是非常麻烦的。IP地址也有类似问题。目前广泛使用的是IPv4,一个IP地址4个字节,理论上共有2^32个IP地址,接近43亿。这个数量还不到人均一个,远远不够,自然也不能每个设备一个公网IP了,所以Internet规定了IPv4地址空间的一部份供专用地址使用,这些地址永远不会被当做公用地址来分配,局域网内部IP就是使用这些专用地址。

 

Internet规定的专用地址有:10.x.x.x,172.16-31.x.x,192.168.x.x,另外127.0.0.1表示本地回环地址,代表设备的本地虚拟接口。

 

了解这个后,如果你发现你在公司的IP是192.168.0.100,在家里的IP也是192.168.0.100时,就不会诧异了。局域网内部IP只用于局域网内部通讯,要连接广域网,还要用到NAT(网络地址转换)技术。

 

NAT常用于局域网内部IP和局域网分配的公网IP之间进行转换,使用最多的是端口多路复用(PAT)方式,简单的描述就是,你在局域网内访问百度时,路由器会记录你的内网IP和端口(假设是192.168.0.100:12345),用路由器的公网IP和一个未使用的端口向公网发网络包(假设是202.96.134.133:23456),路由器还会把202.96.134.133:23456~192.168.0.100:12345配对保存起来。当百度的响应发到202.96.134.133:23456后,路由器通过查找配对表就知道是发给192.168.0.100:12345。

参考:百度百科 内网IP  http://baike.baidu.com/view/1233066.htm

参考:百度百科 网络地址转换 http://baike.baidu.com/view/875777.htm

 

小问题:像华为这种公司内部局域网能用192.168.x.x段么?

 

DNS有话说

搞网络管理的同学对DNS比较熟悉,程序员也需要了解,不管是前端还是后端。

 

IP地址不好记,于是就有了域名。浏览器访问baidu.com时,会先做一次域名解析,把baidu.com这个域名解析成IP地址,然后才能发出IP包。DNS的详细介绍,这篇博客介绍挺详细的,参见http://369369.blog.51cto.com/319630/812889/。

 

在windows和linux下解析域名前,会先从本地hosts文件里查找网址映射关系,如果有,就先调用这个IP地址映射,完成域名解析。 我们在做web开发时,会用这种方式来切换开发环境、测试环境、预发布环境和正式环境。

 

如果你在万网注册了一个个人用的域名,一般会直接用万网的DNS服务器来管理该域名的解析。对于门户网站,则会自己搭建DNS服务器来管理域名,例如baidu.com/qq.com。自建DNS服务器既方便管理,又能提高安全等级,防范DDOS域名攻击。

 

如果域名的访问量比较大,可以让域名对应多个IP地址,操作系统会随机选择其中一个,这是最常见的web负载均衡方式。但因为DNS的变更生效时间最长可达到24~48小时(自建DNS服务器可以配置更短的生效时间),一旦某个IP的机器故障,而DNS又不能立即刷新,会让部分用户服务不可用。于是就有了用LVS/nginx来动态负载均衡的方式,LVS的负载均衡基于IP层,nginx则是用HTTP层的反向代理机制。

参考:百度百科 LVS  http://baike.baidu.com/subview/645050/6406092.htm

 

在中国搞互联网还要考虑到电信/联通/移动三大运营商跨网的问题(有的叫南北互通问题)。运营商因不公开的原因,他们之间的通讯带宽有限,如果你的服务器在广州的电信机房,那么北京的联通用户访问就会比较慢。所以就有了双线机房的出现。双线机房实际是一个机房有电信和联通两条线路接入。通过双线机房内部路由器设置,及BGP自动路由的分析,实现电信用户访问电信线路,联通用户访问联通线路,这样实现电信联通均可以快速访问 。腾讯在搞开放平台后,还提供了TGW服务,实现了电信/联通/移动多网统一接入、外网网络请求转发、支持自动负载均衡。

参考:百度百科 BGP多线  http://baike.baidu.com/view/8584527.htm

参考:腾讯TGW简介  http://wiki.open.qq.com/wiki/TGW%E7%AE%80%E4%BB%8B

 

CDN登场

为了给用户提供更快的访问速度,人们发明了CDN(Content Delivery Network,内容分发网络)。简单的说就是,一个域名对应有多个IP,这些IP分布在全国各地,用户访问域名时,DNS服务器根据用户的来源IP,返回一个就近的IP给用户,从而实现更快的访问速度。

参考:百度百科 内容分发网络  http://baike.baidu.com/view/8689800.htm

 

从上面的描述可以知道,CDN要求各节点的内容是一致的,这样才能让各地用户访问到一致的内容,所以CDN主要用于web静态资源的分发和加速。

 

web性能优化方案一般会有一条动静分离,即把静态资源使用的域名和动态脚本的域名分开,有了CDN后,一般会把静态资源的域名托管给CDN以提高更快的访问速度和更低的成本。

 

分享到:
评论

相关推荐

    Fast-flucos:基于DNS流量的Fast-flux恶意域名检测方法.docx

    Fast-flux恶意域名的检测是一项复杂的任务,因为Fast-flux技术可以与其他正常的DNS技术相似,例如域名循环系统(RRDNS)和内容分发网络(CDN)。这使得检测Fast-flux恶意域名变得非常困难。 Fast-flucos方法通过...

    《企业级web服务之DNS&CDN》.pdf

    3. **DNS架构模型**:DNS服务基于客户端/服务器(C/S)架构。客户端(如用户的电脑)通过操作系统内置的函数(如Linux中的gethostbyname())向DNS服务器发起查询请求。在Linux系统中,DNS配置文件位于/etc/resolv....

    阿里云云计算2023最新视频 :课时27:CDN的计费和使用限制.mp4

    课时3:云服务器ECS的概念.mp4 课时4:ECS实例.mp4 课时5:ECS的优势.mp4 课时6:ECS的使用.mp4 课时7:ECS的计费和使用限制.mp4 课时8:介绍阿里云块存储产品.mp4 课时9:阿里云块存储产品的使用.mp4 课时10:VPC的...

    阿里云云计算2023最新视频 :课时26:CDN的使用.mp4

    课时3:云服务器ECS的概念.mp4 课时4:ECS实例.mp4 课时5:ECS的优势.mp4 课时6:ECS的使用.mp4 课时7:ECS的计费和使用限制.mp4 课时8:介绍阿里云块存储产品.mp4 课时9:阿里云块存储产品的使用.mp4 课时10:VPC的...

    阿里云云计算2023最新视频 :课时25:CDN的概念.mp4

    课时3:云服务器ECS的概念.mp4 课时4:ECS实例.mp4 课时5:ECS的优势.mp4 课时6:ECS的使用.mp4 课时7:ECS的计费和使用限制.mp4 课时8:介绍阿里云块存储产品.mp4 课时9:阿里云块存储产品的使用.mp4 课时10:VPC的...

    CDN获取真实IP

    ### CDN获取真实IP 在互联网应用中,内容分发网络(Content Delivery Network,简称CDN)是一种广泛采用的技术,用于加速网站内容的加载速度、提高访问稳定性和安全性。然而,当用户通过CDN访问网站时,服务器接收...

    Python-通过扫描全网绕过CDN获取网站IP地址

    总结来说,Python通过网络编程和DNS解析可以有效地绕过CDN获取网站的真实IP地址,这在某些情况下,比如网络安全分析、性能测试或者研究中,可能是必要的技能。理解这些技术对于一个专业的Python开发者至关重要。

    CDN下真实ip查询器

    "真实ip查询器"这个工具可能集成了以上的一种或多种技术,以适应不同的CDN环境和需求。使用这样的工具,开发者和运维人员可以更有效地管理他们的服务,确保在CDN保护下的系统依然能够获取到用户的真实身份信息。同时...

    360-CDN技术交流

    在探讨360-CDN技术时,我们需要关注其技术架构、实现原理、核心问题以及关键点和性能等方面。下面详细介绍这些知识点: 1. CDN技术架构: CDN(Content Delivery Network,内容分发网络)的核心作用是通过在互联网...

    cdn环境搭建与测试|cdn服务器搭建软件v1.7

    3. **no-ping.ipsec**:这可能是一个IP安全策略文件,用于配置CDN节点间的加密通信。 4. **【使用必看】视频教程.txt**:包含有关如何使用CDN搭建软件的视频教程链接或说明。 5. **update.txt**:可能是软件更新日志...

    ReplaceGoogleCDN:将 Google CDN 替换为国内的镜像

    标题 "ReplaceGoogleCDN:将 Google CDN 替换为国内的镜像" 指涉的是在遇到因网络限制导致的Google Content Delivery Network (CDN) 访问问题时,如何通过更换为国内镜像来优化加载速度和提高网页访问稳定性。...

    ReplaceGoogleCDN, 一个 Chrome 插件:将 Google CDN 替换为国内的。.zip

    3. **网络请求拦截与重定向**:ReplaceGoogleCDN 的核心功能是拦截浏览器发出的对 Google CDN 的请求,然后将这些请求重定向到国内的 CDN 镜像。这通常通过 Chrome 插件的 `webRequest` API 实现,该 API 允许插件在...

    github-cdn::satellite:Github CDN服务器

    :satellite: Github CDN 是的 Github上用于回购资产的非官方内容交付网络。 :white_medium_star: 产品特点获取回购元数据:分支机构,标签和PR 服务回购和Gist文件即时访问被推送到Github的新更改* 非常适合快速原型...

    CDN学习资料

    - **CNAME解析**:DNS解析服务器可能会将请求CNAME解析到另一个域名,最终指向CDN全局中的DNS负载均衡服务器。 - **GTM(广域网流量管理)**:由GTM根据用户的地理位置信息确定最佳CDN节点,并将该节点的IP地址返回...

    简单CDN——智能DNS的部署view、运行和实现1

    【简单CDN——智能DNS的部署view、运行和实现1】 智能DNS的部署是为了实现更高效、更快速的网络内容分发,通过根据用户所在的地理位置智能解析IP地址,引导用户访问最近的服务器,从而提高网站的加载速度和用户体验...

    Python-通过扫描全网绕过CDN获取网站IP地址.zip

    总之,"Python-通过扫描全网绕过CDN获取网站IP地址"是一个实用的工具,可以帮助IT专业人员在特定场景下获取网站的真实IP,同时也提供了一个深入学习网络编程、DNS解析和CDN工作原理的实践案例。在使用和改进这个项目...

    第07天:信息收集-CDN绕过技术1

    子域名查询邮件服务查询国外地址请求遗留文件,扫描全网黑暗引擎搜索特定文件dns 历史记录,以量打量#CDN 真实 IP 地址获取后绑定指向地址更改本地 HOST

    08 腾讯云CDN加速产品介绍

    CDN访问原理是基于HTTP/HTTPS协议,用户访问CDN时,CDN系统会根据用户的IP地址和浏览器类型,选择最近的edge server提供内容。CDN访问原理主要包括: * DNS解析:将域名解析到最近的edge server。 * HTTP重定向:将...

    服务器集群负载均衡(F5,LVS,DNS,CDN)区别以及选型.docx

    本文将详细介绍服务器集群负载均衡的概念、F5、LVS、DNS 和 CDN 等技术的原理、特点和应用场景,并对它们进行比较和分析,帮助读者更好地理解和选择合适的负载均衡解决方案。 一、F5-BIG-IP-GTM 全球流量管理器 F5...

Global site tag (gtag.js) - Google Analytics