问题形容
在 Windows
操作系统上,push
代码到 git
的时候,呈现了 Failed to connect to github.com port 443: Timed out
的谬误。一脸懵逼,浏览器网页也拜访不了。
思路以及解决方案
一开始,我认为本人代理网络呈现了问题,关掉之后,还是一样的问题。首先咱们能够应用以下的命令,删除代理配置:
git config --global --unset http.proxy
而后关上ipaddress.com
, 查问以下的域名,记录其 ip:
- github.com
- github.global.ssl.fastly.net
而后关上 C:\Windows\System32\drivers\etc\hosts
文件,把两个 ip 配置进去:
保留之后,关上CMD
,刷新DNS
, 从新push
:
ipconfig /flushdns
以上做法能够解决局部连贯 github
慢的问题,次要是超时的问题,如果不是超时的问题,下面的做法是不会起作用的,这个只是把对应的域名和 ip
的对应关系间接映射在 DNS
配置上,不必去查找了,间接找到 ip
地址。
为什么刷新 DNS 就失效了呢 ?
这就波及到一个面试常常问的一个问题了,先把问题变成:在浏览器输出一个www.baidu.com
, 会产生什么?间不固定。
为什么刷新 DNS
就失效了呢?这就波及到一个面试常常问的一个问题了,先把问题变成:在浏览器输出一个www.baidu.com
, 会产生什么?
- 解析域名:首先须要依据域名去查找该域名的
ip
地址,解析前会先查看浏览器的缓存,浏览器会保留一段时间拜访的网址的DNS
地址,依据浏览器不同工夫不固定(在chrome
浏览器中输出:chrome://dns/
,能够看到chrome
浏览器的DNS
缓存。)。 - 如果浏览器的缓存没有这个记录,那么就回去查找零碎的缓存,零碎缓存没有的状况会去查找
hosts
文件外面的ip
地址(如果存在的话)。 - 如果本地的
hosts
文件外面没有该域名对应的ip
地址,那么就会发送一个DNS
申请到本地DNS
服务器,个别是由网络接入服务器商提供(譬如中国移动)。 - 申请达到本地
DNS
服务器之后,也会先查问缓存,缓存有则间接返回,没有则递归查问,本地DNS
服务器须要向根服务器查问。 - 根服务器不记录具体的域名和
ip
对应关系,会通知DNS
服务器,到域服务器(给出地址)上查问。 - 持续往域服务器查问,譬如
“baidu.com”
,.
->.com
->baidu.com.
->www.baidu.com.
, 查问到之后,写入缓存并且返回 ip。 - 拿到
ip
之后,会建设TCP
链接,也就是三次握手。 - 三次握手胜利之后,浏览器发动
HTTP
申请,申请包含三局部:申请办法URI
协定 / 版本,申请头,注释。 - 服务器解决申请,返回。
- 敞开
TCP
链接,四次握手(或称四次挥手)。 - 浏览器解析报文或者资源,渲染。
上述只是一个概述,具体的细节很多,这个下次具体聊聊,然而咱们能够看出,在这个过程中的确波及到了 DNS
的服务器以及缓存,所以咱们刷新缓存之后,拜访 github
就能够申请到对应的 ip 下来。
【刷题笔记】
Github 仓库地址:https://github.com/Damaer/cod…
笔记地址:https://damaer.github.io/code…
【作者简介】:
秦怀,公众号【秦怀杂货店】作者,技术之路不在一时,山高水长,纵使迟缓,驰而不息。集体写作方向:Java 源码解析,JDBC,Mybatis,Spring,redis,分布式,剑指 Offer,LeetCode 等,认真写好每一篇文章,不喜爱题目党,不喜爱花里胡哨,大多写系列文章,不能保障我写的都完全正确,然而我保障所写的均通过实际或者查找材料。脱漏或者谬误之处,还望斧正。
2020 年我写了什么?
开源刷题笔记
素日工夫贵重,只能应用早晨以及周末工夫学习写作,关注我,咱们一起成长吧~