目录
文章背景
GitHub简介
国内无法直接进入GitHub的原因
访问网页的过程
前置知识
1.检查本地缓存是否有该域名对应的IP地址
2.浏览器向操作系统发起DNS解析请求
3.本地服务器向根服务器发送域名解析请求
4.浏览器再向该IP地址发起实际的HTTP请求
DNS污染
修改Hosts文件
Hosts文件的作用
Hosts文件的位置
修改用户权限
查询GitHub域名对应的ip地址
将GitHub域名和ip地址的映射关系写入Hosts文件
刷新DNS本地缓存
进入GitHub
文章背景
文章目的:分享GitHub的进入方法
知其然应知其所以然,所以本文会尽可能简要地从原理层面解释如何进入GitHub
GitHub简介
GitHub是一个软件代码托管平台
上面有大量的开源项目,也可以上传自己的项目
GitHub上不仅有项目,还有很多技术分享的帖子
对程序员来说是一所藏经阁,所以我们有必要掌握进入GitHub的方法
不需要了解原理的直接看修改Hosts文件部分即可
国内无法直接进入GitHub的原因
网上找的解释:
随着互联网技术的飞速发展,GitHub成为了全球最大的开放式软件开发平台。许多国家的程序员和开发人员都在GitHub上发布和管理自己的项目。然而,近年来,GitHub被一些国家政府封锁,无法访问。这种情况发生的原因是什么?为什么国家要封GitHub呢?本文就此进行探讨。
首先,GitHub作为一个全球性的互联网平台,其对于国家信息安全的威胁依然存在。在GitHub上用户上传的开发源码往往较为敏感,包含一些国家涉密技术和政府机密。对此,许多国家的政府和安全机构认为,这些代码会给国家安全带来潜在威胁,因此需要通过屏蔽GitHub的方式来避免泄密事件的发生。
其次,GitHub的存在也可以被用于政治敏感的活动。GitHub可以被用来发布政治言论、代理服务器、工具和软件等,以绕过政府的审查制度。对于一些政府而言,这些活动会被视为破坏其国家安全和政治稳定的行为,因此需要采取措施进行限制。
此外,GitHub的大量使用也会带来更深层次的安全隐患。开发者在GitHub上协作时,可能会借由GitHub来进行数据传输,甚至是敏感数据,如果不加限制,GitHub甚至可能成为黑客攻击和企业内部安全漏洞的重要入口。
此外,一些国家的政府和企业也使用了GitHub的服务。如果国家限制了GitHub的使用,那么这些政府和企业将无法使用这项服务,可能会产生很大的困扰。
总之,国家封锁GitHub的原因主要集中在信息安全和政治稳定两个层面,虽然这种措施在短期内可以保护国家的安全,但在长期来看,也会对科技创新和IT产业发展产生不良影响。因此,国家在采取这种限制措施之前,需要进行充分的评估和权衡,尊重公民的知情权和自由选项,同时维护国家的长期发展。
虽然国家限制了对GitHub的访问,但是并没有完全禁止,而是采用了DNS污染的技术手段,因此依旧可以访问GitHub
访问网页的过程
我们先了解一下我们究竟是怎样访问一个网页的,比如,当我在浏览器地址栏中输入www.baidu.com并回车的时候,究竟发生了什么?
前置知识
1.www.baidu.com是一个域名
2.服务器有很多种,如Web服务器、DNS服务器、文件服务器、数据库服务器,可以把服务器理解成一台电脑,这台电脑会被安装相关服务的软件,并且会有相关的程序
比如我做了一个网站,如果有很多人访问我的网站,那么就会向我的网络发送很多请求,我的电脑会根据用户的请求运行对应的程序以回应用户,显然我的电脑的硬件配置是完全无法承受的,那么这时候我就会想买一台电脑,这台电脑不需要图形化界面,不需要花里胡哨的应用,他只需要可以满足用户的需求即可,我就可以把网站部署到这台电脑上,这台电脑就被称为服务器
3.我们要访问一个网站,就是要访问这个网站对应的服务器,就需要访问这个服务器对应的ip地址,但是ip地址很难被记住,比如192.168.1.1,因此就产生了域名,域名可以通过DNS服务器被解析为ip地址,从而我们可以访问对应的网站
4.DNS服务器就是域名解析服务器,负责把域名解析成一个ip地址
1.检查本地缓存是否有该域名对应的IP地址
输入www.baidu.com并回车后,浏览器会检查本地缓存中是否有该域名对应的IP地址,如果有,则直接使用该IP地址进行访问,跳过后续步骤,如果没有,就进入下一步
2.浏览器向操作系统发起DNS解析请求
如果本地缓存中没有该域名对应的ip地址,操作系统会查找本地配置的DNS服务器地址,然后将域名解析请求发送到该DNS服务器
3.本地服务器向根服务器发送域名解析请求
本地配置的DNS服务器并不具备解析公网域名ip的能力,因此会将域名解析请求发送给根服务器,根服务器负责解析顶级域名(即www.baidu.com中的com),再把请求传给其子服务器,子服务器负责解析二级域名、三级域名等,解析完成后把该域名对应的ip地址返回给浏览器,浏览器把ip地址返回给浏览器
4.浏览器再向该IP地址发起实际的HTTP请求
浏览器再向该IP地址发起实际的HTTP请求,获取网页内容并显示在浏览器中
DNS污染
上面简要的说明了网络请求的过程,下面解释为什么国内无法正常访问GitHub
在DNS服务器返回给操作系统ip地址的过程中,如果返回的ip地址被恶意修改,浏览器将无法正常访问该网站,这种情况就被称为DNS污染
我国通过一些技术手段实现了DNS污染,返回一个错误的ip地址,因此无法正常访问GitHub
修改Hosts文件
那么应该如何解决?第一种方法简单粗暴,就是使用VPN访问,由于数据是加密的,且使用了代理服务器,返回的数据包不会被篡改,自然也不会发生DNS污染。但是我国公民未经允许使用VPN时违法行为!因此我们采用第二种方法,即修改本地Hosts文件
Hosts文件的作用
我们在阐述访问www.baidu.com的过程中,第一步就是检查本地缓存是否有该域名对应的IP地址,而这个本地缓存就是Hosts文件(也可能是包含关系,了解不深)。Hosts文件中存储着大量的域名和ip地址的映射关系,因此我们只要把GitHub的域名和其正确的ip地址写入到该文件中,就可以正常访问GitHub
Hosts文件的位置
C:\Windows\System32\drivers\etc
etc文件夹中的hosts文件
修改用户权限
操作系统对一些比较重要的文件设定了权限,用户对hosts文件只有读取的权限,没有写入的权限,因此我们需要修改权限
右击hosts文件->属性->安全->编辑->在组或用户名栏中选中Users->完全控制
查询GitHub域名对应的ip地址
经过上面操作我们已经可以修改Hosts文件,下面我们查找GitHub的域名github.com对应的ip地址
可以使用IP/IPv6查询,服务器地址查询 - 站长工具
查询
将GitHub域名和ip地址的映射关系写入Hosts文件
在hosts文件最后一行添加映射关系即可
刷新DNS本地缓存
windows+R打开运行窗口->输入cmd并回车打开命令行->输入ipconfig/flushdns并回车
进入GitHub
在满园弥漫的沉静光芒中,一个人更容易看到时间,并看到自己的身影。
——史铁生