1. Git简介

》》点赞,收藏+关注,理财&技术不迷路《《

(**版权声明,该篇文章是楼主零零散散从各类科普网站找的,非原创,若有侵权立删**)

Git诞生:

很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。

Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码,那Linux的代码是如何管理的呢?

事实是,在2002年以前,世界各地的志愿者把源代码文件通过diff的方式发给Linus,然后由Linus本人通过手工方式合并代码!

你也许会想,为什么Linus不把Linux代码放到版本控制系统里呢?不是有CVS、SVN这些免费的版本控制系统吗?因为Linus坚定地反对CVS和SVN,这些集中式的版本控制系统不但速度慢,而且必须联网才能使用。有一些商用的版本控制系统,虽然比CVS、SVN好用,但那是付费的,和Linux的开源精神不符。

不过,到了2002年,Linux系统已经发展了十年了,代码库之大让Linus很难继续通过手工方式管理了,社区的弟兄们也对这种方式表达了强烈不满,于是Linus选择了一个商业的版本控制系统BitKeeper,BitKeeper的东家BitMover公司出于人道主义精神,授权Linux社区免费使用这个版本控制系统。

安定团结的大好局面在2005年就被打破了,原因是Linux社区牛人聚集,不免沾染了一些梁山好汉的江湖习气。开发Samba的Andrew试图破解BitKeeper的协议(这么干的其实也不只他一个),被BitMover公司发现了(监控工作做得不错!),于是BitMover公司怒了,要收回Linux社区的免费使用权。

Linus可以向BitMover公司道个歉,保证以后严格管教弟兄们,嗯,这是不可能的。实际情况是这样的:

Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之内,Linux系统的源码已经由Git管理了!牛是怎么定义的呢?大家可以体会一下。

Git迅速成为最流行的分布式版本控制系统,尤其是2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等。

历史就是这么偶然,如果不是当年BitMover公司威胁Linux社区,可能现在我们就没有免费而超级好用的Git了。

集中式VS分布式:

Linus一直痛恨的CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统,集中式和分布式版本控制系统有什么区别呢?

先说集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。

集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟,这还不得把人给憋死啊。

版本库:版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。

那分布式版本控制系统与集中式版本控制系统有何不同呢?首先,分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的电脑坏掉了不要紧,随便从其他人那里复制一个就可以了。而集中式版本控制系统的中央服务器要是出了问题,所有人都没法干活了。

在实际使用分布式版本控制系统的时候,其实很少在两人之间的电脑上推送版本库的修改,因为可能你们俩不在一个局域网内,两台电脑互相访问不了,也可能今天你的同事病了,他的电脑压根没有开机。因此,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。

当然,Git的优势不单是不必联网这么简单,后面我们还会看到Git极其强大的分支管理,把SVN等远远抛在了后面。

CVS作为最早的开源而且免费的集中式版本控制系统,直到现在还有不少人在用。由于CVS自身设计的问题,会造成提交文件不完整,版本库莫名其妙损坏的情况。同样是开源而且免费的SVN修正了CVS的一些稳定性问题,是目前用得最多的集中式版本库控制系统。

除了免费的外,还有收费的集中式版本控制系统,比如IBM的ClearCase(以前是Rational公司的,被IBM收购了),特点是安装比Windows还大,运行比蜗牛还慢,能用ClearCase的一般是世界500强,他们有个共同的特点是财大气粗,或者人傻钱多。

微软自己也有一个集中式版本控制系统叫VSS,集成在Visual Studio中。由于其反人类的设计,连微软自己都不好意思用了。

分布式版本控制系统除了Git以及促使Git诞生的BitKeeper外,还有类似Git的Mercurial和Bazaar等。这些分布式版本控制系统各有特点,但最快、最简单也最流行的依然是Git!

局域网,广域网,因特网:

局域网 :

英文是 LAN ( Local Area Network),Local,本地的、当地的,比如在上海有人问:你是本地人吗?潜台词:你是不是出生在上海并长大?这是一个区域概念,所以局域网也是一个区域概念,比如家庭网络就是一个小型的局域网,一般包含一个电信免费送的光猫,由于光猫无线信号不好,用户会光猫的LAN口接上一个无线路由器,于是就有了小型的家庭局域网,示意图:

 PC --- 无线路由器----(LAN)光猫(WAN广域网 (Wide area network))---ISP---Internet GW---Internet 

猫只是俗称 学名其实应该叫做调制解释器,主要作用是将模拟信号或光信号翻译成数字信号,信号转换,它的后端接口除了连接电脑,还可以连接电视或电话。

路由器的主要功能是转发数据包,负责将你发的网络数据封装后转发给下一个设备,路由器主要用来传输网络信号,后端的接口只有WAN和LAN两种,用来接收和发送网络信号。

你可以这样理解 猫就像一个翻译 只不过这个翻译只会把模拟信号或光信号翻译成0和1(0代表无电1代表有电)

路由器就好比事快递公司 负责运送你的快递 比如说你家在湖南 你从北京买了个东西 北京的物流就要把你的物流先送到河南的物流点 然后河南的物流点把东西送到湖南的物流点 湖南的物流点负责把东西送到你家 这个过程中每一个物流点都是一个路由器 而你家就是你的电脑 当然发送数据的流程也是一样的。

如果家里只用光猫上网,每次都要拨号才能上网,而且光猫只能完成信号的转换,并不能发射网络信号。如果家庭只有一台设备需要联网,只用光猫还是可以的。

但把光猫连上路由器,不仅可以省却拨号步骤,而且信号更稳定,通过发射WiFi信号,还能让更多设备共同联网。

所以虽然光猫可以满足你的上网条件,但因为功能不同,光猫路由器还是无法互相替代的

回到局域网广域网:

这个示意图虽然简单,却把LAN、WAN、Internet 三者全包含了。无线路由器把电脑、手机等设备连接到局域网LAN上,并分配IP地址,即私有IP,我们可以称之为 LAN_IP,LAN_IP所能溜达之处,称LAN路由域。

光猫是一个边界,国家与国家之间有边界,网络之间也有边界,光猫就是局域网LAN与广域网WAN的边界。局域网LAN_IP可以在局域网LAN里遨游,但是到了边界处,即这里的光猫,就没有那么自由了,LAN_IP是光猫分配的IP,跨越边界就进入WAN了,WAN可是运营商的地盘,WAN 有自己IP,WAN_IP,组成一个WAN路由域。

光猫通过PPPoE拨号,从ISP拿到了WAN_IP,这是WAN路由域的特别通行证,所有局域网的上网流量,必须在光猫处,完成 LAN_IP <—>WAN_IP 地址转载(NAT),统一换成特别通行证才可以在WAN路由域里继续遨游。 

PPPoE(英语:Point-to-Point Protocol over Ethernet),以太网上的点对点协议,是将点对点协议(PPP)封装在以太网(Ethernet)框架中的一种网络隧道协议。以太网(英语:Ethernet)是一种计算机局域网技术。互联网服务供应商 (Internet service provider)。

持有WAN_IP的IP包顺利到达下一个边界,Internet Gateway,这是通往互联网 Internet 的最后一道关卡,即边界。左边是WAN路由域,右边是互联网路由域,如果运营商财大气粗,WAN_IP全是IANA分配的Global IP (全球唯一,可以在世界任何地方访问此IP),则这些携带WAN_IP的IP包直接进入互联网。 

IANA(The Internet Assigned Numbers Authority,互联网数字分配机构)是负责协调一些使Internet正常运作的机构。

如果运营商的WAN_IP也是私有的,则也要做WAN_IP 与 Global_IP 的地址转换,然后用Global_IP 这个全球通用通行证遨游互联网。

互联网:

如果局域网是小溪,很多条小溪就汇聚成大的干流,比如长江、黄河,干流就是广域网,然后再流入大海,大海就是互联网。

互联网就是由无数个局域网,通过WAN线路汇聚到运营商,然后运营商之间互联起来,就形成了互联网。 

互联网开放、互联,如果一个公司、机构的局域网没有连接到互联网,那这个局域网就不属于互联网。

公司局域网、广域网、互联网的概念:

局域网与互联网与以上的概念相同,无非公司局域网增加了一些交换机、AP、防火墙,和家庭局域网没有任何实质的差别。但是这里更多地谈谈广域网WAN。

 一个公司总部在北京,分公司在上海。总部是一个局域网,分公司也是一个局域网,示意图: 

公司总部LAN1 --- 网关1---Internet 

分公司LAN2---网关2---Internet 

既然公司总部与分公司都连接在互联网上,那LAN1 内的电脑能直接和LAN2的电脑通信吗?非常艰难,需要在网关1,2 上做静态NAT映射,大家都用global IP 就可以通信了。这种方案不具有扩展性,没有公司会用这种方案。 

那在网关1,2 之间拉一根线不就可以了吗? 

公司总部LAN1 --- Internet 网关1---1根线---Internet 网关2---分公司LAN2 

当然可以,但是价格昂贵啊,从北京拉一根光纤1000多公里呢,怎么想价格也不会便宜。但是这也是一个方案,这根线及其接口,即为广域网WAN。 

那有没有便宜的,不拉线了,运营商拿来了套餐,有二层MPLS VPN,三层MPLS VPN,价格虽贵,但是咬咬牙还可以接受,网关1到网关2 之间的网络为广域网。 

公司总部LAN1 --- Internet 网关1---MPLS VPN---Internet 网关2---分公司LAN2 

但是还有一些中小企业,还是觉得贵,老总对IT工程师训话:三天之内不把两个局域网连起来,都TMD滚蛋。于是工程师连夜加班在两个网关之间,依靠现有Internet线路,配置了加密VPN,示意图: 

公司总部LAN1 --- Internet 网关1---加密VPN(跑在Internet)---Internet 网关2---分公司LAN2。

两个网关之间的网络也是广域网。

LAN_IP,WAN_IP,Global_IP,分别为家庭局域网的IP,运营商内部使用IP,互联网公共IP。

Global_IP 可以到达全球任何角落,包括家庭局域网: 

Global_IP :局域网路由域+ 广域网路由域+互联网路由域 

WAN_IP:局域网路由域+ 广域网路由域 

 LAN_IP:局域网路由域 

既然LAN_IP 只在局域网路由域合法,那如果进入广域网路由域是否要换一个合法的身份? 

同理,WAN_IP在互联网路由域不合法,则必须做身份转换,这些工作都是NAT的基本职责,这方面内容不再遨述。 

公司基于Internet线路的WAN互联 

公司有了internet 线路,又不想再掏钱买专线来满足分公司与总部的互联,可以在这两个site 之间建立安全VPN,这个没有什么花头,就是一个安全隧道,内容加密,流经公共Internet路由域时第三方无法篡改、偷窥,安全性高。 

以路由技术的眼光,就是将LAN_IP的流量,封装在一个Global_IP 专车里,Global_IP在外层,LAN_IP在内层,以Global_IP合法的身份穿越Internet,到达隧道终点(公司的另一个分部),然后去掉外部的Global_IP,继续以LAN_IP的身份在公司局域网路由域里行走。 

那Global_IP是谁的呢?谁负责加密就是谁的,负责加密,那这个专车开到哪里?当然是公司的另一个site,专车开到了,需要解密,下车(去掉外层Global_IP),然后步行(LAN_IP)进入公司。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值