《计算机网络》这本书终于啃完了,通读一遍,对网络方面理解更加透彻了,书很不错,推荐阅读。
从个域网、城域网、广域网,最后引申出「互联网」。通过 ISP 服务商提供的网络,可以称为「独立网络」,而多个独立网络连接在一起,就形成了「互联网」。
OSI 模型是「Opent Systems Interconnection」参考模型,文章简单描述了物理层、数据链路层、网络层、传输层、应用层的负责的工作。
两台电脑的数据传输不是从 A 电脑直接到 B 电脑,而是通过 A 电脑的「应用层、传输层、网络层、数据链路层、物理层」传输 bit 到 B 电脑的「物理层、数据链路层、网络层、传输层、应用层」。
A 电脑负责封装加密信息,B 电脑负责拆包解密信息(每一层都拥有相同的协议)。
拨号上网、有线电视、光纤,这是互联网「进化」的基础设施。拨号上网用的是电话线,速度慢;有线电视是在原有的电视网络基础设施中重新实现网络提供,速度比电话线快,成本稍微高一些;光纤速度最快,成本最贵。
只要传输速度高于「拨号上网」,就可以称为「宽带」,宽带并不指的是具体的传输速率。
互联网还在不断进步,而未来的数据传输大概率会基于「星链」这种基础设施。
物理层传输数据通过介质,比如双绞线、同轴电缆、电力线、光纤,文章从传输速率低到高方式介绍了介质的作用,着重介绍了一下光纤,它占空间小、速率高、不易被破坏,只是成本高一些,非常适合高速率的传输场景。
随着成本越来越低,光纤入户的口号响起,市场上其他传输介质逐步被光纤取代。
蜂窝网络其实是圆形的,只不过用「六角形」方便表示,所以模型都以六角形来画。
每个蜂窝网络都连接到移动电话交换局(MTSO)设备,来进行数据通信。
如果距离太广了,则在区域内建立二级交换局,交换局内的设备会连接到二级交换局,这样形成一个金字塔模型。因为蜂窝是有边界的,所以你在北京与河北的交界处打电话,并不一定使用的是北京交换局,还是河北交换局,在此期间信号会产生「漂移」。
大型活动、音乐节等都会涉及到大量人群聚集,为了解决数据传输问题,会增加很多便捷交换局设备,以此来形成微蜂窝。
将物理层传输的比特流转成「帧」就是数据链路层的核心功能,帧由头、内容、尾等部分构成。当数据传输错误时,根据传输介质的不同,光纤、网线传输帧会产生「检错码」因为传输效率快,出错就直接重传数据,而 WiFi 传输的帧会产生「纠错码」,尽量利用纠错码恢复原始码,减少重传的次数。
文章介绍了蓝牙的发展史和结构的相关资料,蓝牙系统会形成一个自己的微网,架构为主/从模式,「主设备」去操作或者传输数据给「从设备」,而从设备不可以传数据或操作主设备。还提到了关于「蓝牙」安全配对的机制。
网络层会将数据发送给离它最近的路由器,路由器再将数据通过「路由表」发送给其他路由,最终到达目标主机。路由器内部会维护一套路由表,如果路由太多,会分成组,最终也是以金字塔形式来呈现路由表之间的关系。
路由算法负责计算最优路径,还会涉及到拥塞控制、路由长度、流量控制、负载脱落等技术来维护网络的稳定性。
Internet 协议是网络互联的基础协议,通过这个协议将全球电脑连接在一起。
每台电脑都有自己的 IP 地址,相当于唯一身份证。当 A 电脑和 B 电脑通信的时候,A 电脑数据在传输前就确定好了 B 电脑的 IP 地址,通过网络就可以将数据正确的传送到 B 电脑上。IPv4 地址是有限的,中国大概在 3.5 亿个,当地址用完后,就无法再生,所以 IPv5、IPv6 诞生。
IPv6 在可预见的将来,地址完全够用,就此解决了地址资源问题。
我们当前电脑每启动一个应用,都会在进程里注册一个端口,所有应用端口都存储在「端口映射器」中,因此当 A 电脑接收到数据后,拆解数据包,就可以知道当前数据包需要发送给哪个进程端口,以此来实现通信。
UPD 和 TCP 是两种不同的协议,具体选择要根据当前项目的需求,如果对数据准确性要求不高,可以选择 UDP ,如果对准确性要求比较好,要适当的偏向 TCP。
RTP 基于 UDP 实现的,数据流会生成 RTP 包,然后通过 UDP 发送出去。
我们可以保证发出去的数据是同一时间,但当音频和视频流一起发送的时候,并不能保证它们是同一时间到达的,因此添加了「时间戳」机制,收到数据后,根据时间戳重新组织数据。
但这还不够,播放音视频的时候本地需要先做一个「蓄水池」缓存,为此保证了更流畅的观看体验。
TCP 是可靠的端到端的数据传输协议,每台计算机都有一个 TCP 实体,用来处理数据。当连接建立后,TCP 实体会整理接收到的数据,并发送给相应的进程。
文中还介绍了握手和断开连接方案、计时器管理、拥塞控制。
DNS 主要目的是为了将域名解析成 IP 地址,为什么要解析呢?因为 IP 地址难以记忆,把 IP 地址映射成域名,例如:company.com 就方便记忆,利于传播。
DNS 有自己的一套规范,他有自己的一级域名、二级域名等等,它还有自己的缓存管理。通常 DNS 查询是通过 UDP 协议来传输数据。
www 是万维网(World Wide Web)的俗称。
它得以应用广泛主要原因之一是「超文本链接」,超文本链接由「请求头、域名、资源文件地址」等组成,我们通过点击超文本链接,就可以跳转到另一个网页,在另一个网页上再点击,可以继续跳转到其他页面。现在的互联网上存在有数十亿网页,资源十分丰富。
随着网络带宽的增长,以及麦克风的普及,音频和视频的使用率得到大幅度提升,丰富了我们的生活。我们所见到的音频、视频大多都经过压缩算法处理过,而没处理过的我们称为「无损音视频」。
而音频视频的压缩都有专业的压缩算法,如:JPEG、MPEG 等。
当在视频网站点击视频播放器的时候,会发生两个动作:
一、去请求当前视频的播放地址,一个短链接;
二、通过这个短链接,去向 RTSP 服务器请求视频数据流;我们在网页中见到的视频播放器做了很多很多的功能,比如:快进、后退、倍速播放、缓冲区等等功能,都是需要和 RTSP 服务器进行交互的。
视频传输方案中 UDP 并不是最优的,因此具体选择 TCP 还是 UDP 要根据具体情况去评估。
根据齐普夫定律,最流行的电影是第 7 名电影和播放量的 7 倍。并且 80% 的网站流量被 20% 的网站吸引走了,因此当最受欢迎的单一服务器支撑不住那么多流量时,就引申出来 内容分发网络(CDN,Content Delivery Network).
而内容分发网络最核心的技术就是 DNS 方法。根据我们当前位置最近的 DNS,来映射出离我们最近的 CDN 节点服务器,来提供给我们流量。
这样既避免了单一服务器的崩溃,也缩短了访问速度。
P2P 文件共享网络的基本思路是将多台计算机连接到一起,共享它们的资源,形成一个内容分发系统。
在这样的系统中,共享内容必须解决三个问题:系统内容如何找到用户想要下载的内容?如何快速复制内容并提供给其他用户下载?如何鼓励用户上传内容给他人?
最成功的还是 BT 的免费协议。
在密码学中最重要的两个点:密码编码学和密码分析学。在密码学中,通常使用「密钥」来控制加密和解密过程,基于 Kerckhoff 原则:所有的算法必须是公开,而密钥是保密的。
这样可以吸引大家去攻破密码,如果某个算法在五年内没有被破解掉,那才算是真正的可靠。密码学有两个原则:消息必须包含冗余度,必须可以对抗重放攻击。
最后这篇文章详细的介绍了如果通过 DNS 一步一步的更改用户的访问内容。先获取被攻击者要访问的地址,诱骗他访问一个不存在的地址,来获取 DNS 通信的序列号,最后再向他的 DNS 服务商提供一个假的 DNS 地址,而假 DNS 指向的则是攻击者自己已经编写好的页面。
我们可以通过加密通信、异常行为检测等方法,来降低 DNS 攻击的风险。
内容来源:《计算机网络》
如果您对本篇文章中提到的问题有任何疑问或想法,请在评论区留言,我将尽力回复。
微信公众号「小道研究」,获取更多关于前端技术的深入分析和实践经验。