计算机网络知识总结
一、URI和URL的关系
URI
(统一资源标志符),是用于标识某个互联网资源名称的字符串。这个字符串可以唯一标识出该网络资源,好比人的身份证号。
URL
(统一资源定位符),是我们通常说的网络地址,好比通过居住地址的方式标识出一个人,可以理解为URL
是URI
的一种实现。
二、tcp保活机制(keep-alive)
开启keep-alive后,探测方会在自己一端设计一个计时器,当计时器被触发之后,向对方发送一个探测报文。如果对端给自己回送一个ACK
,那么就代表对方仍存活;如果在指定的时间内多次没有给自己回送ACK
,那么就确认对方已经断开连接,从而断开本次TCP
连接。
但keep-alive
的这种探测报文间隔时间较长,若客户端断开连接(如突然断网),服务端不能立即断开tcp
链接。而心跳检测(heart-beat
)原理和keep-alive
类似,但是间隔时间短,同时heart-beat
属于应用层,可以在断开连接后做出相应的反应。
三、DNS查询
递归查询与迭代查询
DNS
是进行域名解析,从向本地DNS
域名服务器发起请求开始,到拿到IP
地址既包含了递归查询也包含了迭代查询。
简单说,客户电脑上若没有DNS
缓存,则向本地域名服务器发起DNS
查询请求,这个过程属于递归查询。而本地服务器开始向根服务器(.
)发起DNS
查询请求,得到顶级域名(如:.com/.net
)的IP
列表,然后再向顶级域名列表中的DNS
服务器发起查询请求,若没找到则继续返回次级域名列表(baidum.com
),依次迭代下去,直到查询到IP
地址或者报错。
DNS查询为什么基于UDP
由上文可以知道,在DNS
查询过程中会涉及到多次的迭代查询,如果使用TCP
来查询DNS
的话,每次查询都需要三次握手建立链接,通信,然后四次挥手断开连接。这样会造成大量的时间损失,而使用UDP
则会节省出这些建立链接和断开连接的时间。
参考博文:
[1]: http://www.ruanyifeng.com/blog/2016/06/dns.html
[2]: https://zhuanlan.zhihu.com/p/61394192
[3]: https://zhuanlan.zhihu.com/p/28305778