计算机网络
文章平均质量分 93
我乐了.
这个作者很懒,什么都没留下…
展开
-
21 攻防手段介绍:如何抵御 SYN 拒绝攻击?
生活在当今时代,作为个人,网络安全是一件大事。你的购票信息、出行记录、账号密码、位置信息等,都需要你有防范意识,防止被不法分子拿走。在为公司工作的时候,要保管好自己的账号。特别是你工作用的计算机,要远离非正规渠道获得的软件。你的工作计算机一旦中了木马,成了肉鸡,那不法分子完全可以用你的工作计算机作为跳板,登录公司服务器。另一方面,作为公司和团队,也要有较强的安全意识。当然,安全领域有自己的专业知识和人才。原创 2024-01-18 15:15:04 · 791 阅读 · 0 评论 -
20 信任链:为什么可以相信一个 HTTPS 网站?
但是加密算法的计算量较大,而且结果通常比原文体积大。那是否有其他更好的处理方式呢?其实一个更简单的做法,就是利用摘要算法。摘要,顾名思义,和现实中文章的摘要是一样的。相当于给一篇文章,形成一个提要。只不过,计算机世界的摘要算法算出来的结果并不是对原文真的概括总结,而是一个大数字。给计算机一篇文章,计算机用摘要算法(主要是哈希类算法)生成一个字符串,如果文章内容改变,哪怕是一个字,一个标点符号,摘要也会完全改变。和完全加密一篇文章相比,摘要的体积很小,因此非常有利于存储和传输。原创 2024-01-18 15:13:57 · 888 阅读 · 0 评论 -
19 网络安全概述:对称、非对称加密的区别是?
对称加密用同样的密钥,安全系数不够。非对称加密,用公钥 + 私钥的方式加强了安全系数。那么是不是我们所有的加密的应用都应该用非对称加密呢?通常情况,非对称加密需要更多的运算资源。因此很多协议使用非对称加密解决最核心的安全问题,再用对称加密解决其他问题。以 HTTPS 协议为例,客户端和服务器之间会先用非对称加密交换临时对称加密密钥,然后之后的通信会以对称加密执行,直到连接结束。也就是非对称加密仅仅存在于 HTTPS 连接建立后,用于交换密钥(对称加密密钥)的少数几次传输中。原创 2024-01-18 15:12:52 · 877 阅读 · 0 评论 -
18 爬虫和反爬虫:如何防止黑产爬取我的数据?
非法爬取数据是不可能完全杜绝的,我们只能提高非法爬取数据的成本。但是一定要有数据安全的意识。在互联网的世界里,数据是第一生产力,也是生命线。在完成开发工作之余,利用自己的专业知识适当提高爬取数据的成本是非常有必要的。原创 2024-01-18 15:11:15 · 827 阅读 · 0 评论 -
17 流媒体技术:直播网站是如何实现的?
这一讲我们探讨了流媒体技术。流媒体,就是把多媒体数据抽象成为流进行传输。视频本质上是一张张图片在播放,因此非常适合流传输。要知道,流是随着时间产生的数据。通常在一个网络中,等价成本下吞吐量、丢包率和延迟 3 者不能兼得。也就是说,像直播这种吞吐量非常大的视频应用,可能就要牺牲延迟。比如之前 B 站直播没有优化前,用户看到的直播画面会比真实的时间会慢近半分钟。另一方面,像在线会议这类对延迟要求较高的场景,就可能需要降低视频质量,或者部署边缘服务。原创 2024-01-18 15:10:01 · 902 阅读 · 0 评论 -
15 内容分发网络:请简述 CDN 回源如何工作?
总结一下,CDN 是一种网络应用,作用是分发互联网上的资源。CDN 服务的提供商,会在世界(或国家)范围内设立数据中心,帮助分发资源。用户请求的资源会被 CDN 分发到最临近的节点获取。CDN 作为一门生意,CDN 的服务商会大批量的从运营商处获取流量,然后再以较高但是可以接受的价格卖给服务提供方。对于中小型互联网公司来说,购买一定的 CDN 流量成本可控,比如 1G 流量在 1 元以内。对于大型的互联网公司,特别是对 CDN 依赖严重的公司,可能还需要自己建设。原创 2024-01-18 15:08:32 · 345 阅读 · 0 评论 -
14 DNS 域名解析系统:CNAME 记录的作用是?
总结一下,用树状结构来分类和索引符合人类的直觉和习惯,URL 的设计遵循的依然是人的思考方式。URL 中的 HOST 部分需要被解析为 IP 地址,于是就有了域名系统(DNS)。域名系统是一个分级的分布式系统,整体设计也是一个树状结构。顶层的根域名服务器和中间的顶级域名服务器,存储的是目录,最终的 DNS 记录由权威域名服务器提供。DNS 记录并不仅仅只有映射 IP 一种能力,DNS 记录还可以设置网站的别名、邮件服务器、DNS 记录位置等能力。原创 2024-01-18 15:07:22 · 397 阅读 · 0 评论 -
12 网络 IO 模型:BIO、NIO 和 AIO 有什么区别?
这一讲我们从 3 个方面讨论了 I/O 模型。第一个是编程模型,阻塞、非阻塞、异步 3 者 API 的设计会有比较大的差异。通常情况下我们说的异步编程是异步转同步。异步转同步最大的价值,就是提升代码的可读性。可读,就意味着维护成本的下降以及扩展性的提升。第二个在设计系统的 I/O 时,另一件需要考虑的就是数据传输以及转化的成本。传输主要是拷贝,比如可以使用内存映射来减少数据的传输。但是这里要注意一点,内存映射使用的内存是内核空间的缓冲区,因此千万不要忘记回收。原创 2024-01-18 15:05:55 · 861 阅读 · 0 评论 -
11 流和缓冲区:缓冲区的 flip 是怎么回事?
总结一下,流是随着时间产生的数据。数据抽象成流,是因为客观世界存在着这样的现象。数据被抽象成流之后,我们不需要把所有的数据都读取到内存当中进行计算和迭代,而是每次处理或者计算一个缓冲区的数据。缓冲区的作用是缓冲,它在高频的 I/O 操作中很有意义。针对不同场景,也不只有这一种缓冲区的设计,比如用双向链表实现队列(FIFO 结构)可以作为缓冲区;Redis 中的列表可以作为缓冲区;RocketMQ,Kafka 等也可以作为缓冲区。原创 2024-01-18 15:03:52 · 751 阅读 · 0 评论 -
10 Socket 编程:epoll 为什么用红黑树?
总结一下,Socket 既是一种编程模型,或者说是一段程序,同时也是一个文件,一个双向管道文件。你也可以这样理解,Socket API 是在 Socket 文件基础上进行的一层封装,而 Socket 文件是操作系统提供支持网络通信的一种文件格式。在服务端有两种 Socket 文件,每个客户端接入之后会形成一个客户端的 Socket 文件,客户端 Socket 文件的文件描述符会存入服务端 Socket 文件。原创 2024-01-18 15:01:26 · 813 阅读 · 0 评论 -
09 TCP 实战:如何进行 TCP 抓包调试?
在本讲,我对 Wireshark 做了一次开箱教学,希望你听完我的课程后,在自己的机器中也安装一个这个工具,以备不时之需。Wireshark 是个强大的工具,支持大量的协议。还有很多关于 Wireshark 的能力,希望你可以进一步探索,如下图中鼠标右键一次捕获,可以看到很多选项,都是可以深挖的。那么现在你可以尝试来回答我在本讲开头提出的问题:如何进行 TCP 抓包?答案就是用工具,例如 Wireshark。原创 2024-01-18 14:59:26 · 881 阅读 · 0 评论 -
08 局域网:NAT 是如何工作的?
总结一下,链路层发送数据靠的是 MAC 地址,MAC 地址就好像人的身份证一样。局域网中,数据不可能从一个终端直达另一个终端,而是必须经过交换机交换。交换机也叫作链路层交换机,它的工作就是不断接收数据,然后转发数据。通常意义上,交换机不具有路由功能,路由器往往具有交换功能。但是往往路由器交换的效率,不如交换机。已知 IP 地址,找到 MAC 地址的协议,叫作地址解析协议(ARP)。网络和网络的衔接,必须有路由器(或者等价的设备)。原创 2024-01-12 14:31:34 · 863 阅读 · 0 评论 -
07 IPv6 协议:Tunnel 技术是什么?
总结下,IPv6 解决的是地址耗尽的问题。因为解决了地址耗尽的问题,所以很多其他问题也得到了解决,比如说减少了子网,更小的封包头部体积,最终提升了性能等。除了本讲介绍的内容,下一讲你还会从局域网络中看到更多对 NAT 技术的解读、对路由器的作用的探讨。随着 IPv6 彻底普及,你可以想象一下,运营商可以给到每个家庭一大批固定的 IP 地址,发布网页似乎可以利用家庭服务器……总之,林䭽也不知道最终会发生什么,我也对未来充满了期待,让我们拭目以待吧。原创 2024-01-12 14:28:58 · 882 阅读 · 0 评论 -
06 IPv4 协议:路由和寻址的区别是什么?
IP协议InternetProtocol)是一个处于垄断地位的网络层协议。IPv4 就是 IP 协议的第 4个版本,是目前互联网的主要网络层协议。IPv4 为传输层提供 Host-To-Host 的能力,IPv4 需要底层数据链路层的支持。IP 协议并不负责数据的可靠性。传输数据时,数据被切分成一个个数据封包。IP 协议上层的传输层协议会对数据进行一次拆分,IP 协议还会进一步进行拆分。进行两次拆分是为了适配底层的设备。原创 2024-01-12 14:23:14 · 862 阅读 · 0 评论 -
05 UDP 协议:TCP 协议和 UDP 协议的优势和劣势?
这一讲我们针对 UDP 协议的内容进行了探讨,到这里互联网协议群的传输层讲解就结束了。协议对于我们来说是非常重要的,协议的制定让所有参与者一致、有序地工作。学习协议的设计,对你的工作非常有帮助。比如:学习 TCP 协议可以培养你思维的缜密性——序号的设计、滑动窗口的设计、快速重发的设计、内在状态机的设计,都是非常精妙的想法;学习 UDP 协议可以带动我们反思自己的技术架构,有时候简单的工具更受欢迎。Linux 下每个工具都是那么简单、专注,容易理解。相比 TCP 协议,UDP 更容易理解。原创 2024-01-12 14:19:19 · 824 阅读 · 0 评论 -
03 TCP 的封包格式:TCP 为什么要粘包和拆包?
TCP 协议的设计像一台巨大而严密的机器,每次我重新温习 TCP 协议,都会感叹“它庞大,而且很琐碎”。每一个细节的设计,都有很深的思考。比如 Sequence Number 和 Acknowledge Number 的设计,就非常巧妙地利用发送字节数和接收字节数解决了顺序的问题。TCP 协议是如何恢复数据的顺序的,TCP 拆包和粘包的作用是什么?解析】TCP 拆包的作用是将任务拆分处理,降低整体任务出错的概率,以及减小底层网络处理的压力。拆包过程需要保证数据经过网络的传输,又能恢复到原始的顺序。原创 2024-01-12 14:08:55 · 739 阅读 · 0 评论 -
04 TCP 的稳定性:滑动窗口和流速控制是怎么回事?
为了提高传输速率,TCP 协议选择将多个段同时发送,为了让这些段不至于被接收方拒绝服务,在发送前,双方要协商好发送的速率。但是我们不可能完全确定网速,所以协商的方式,就变成确定窗口大小。有了窗口,发送方利用滑动窗口算法发送消息;接收方构造缓冲区接收消息,并给发送方 ACK。滑动窗口的实现只需要数组和少量的指针即可,是一个非常高效的算法。像这种算法,简单又实用,比如求一个数组中最大的连续 k 项和,就可以使用滑动窗口算法。如果你对这个问题感兴趣,不妨用你最熟悉的语言尝试解决一下。原创 2024-01-12 14:05:52 · 804 阅读 · 0 评论 -
02 传输层协议 TCP:TCP 为什么握手是 3 次、挥手是 4 次?
下一个关联的概念是连接(Connection)——连接是数据传输双方的契约。连接是通信双方的一个约定,目标是让两个在通信的程序之间产生一个默契,保证两个程序都在线,而且尽快地响应对方的请求,这就是连接(Connection)。设计上,连接是一种传输数据的行为。传输之前,建立一个连接。具体来说,数据收发双方的内存中都建立一个用于维护数据传输状态的对象,比如双方 IP 和端口是多少?现在发送了多少数据了?状态健康吗?传输速度如何?等。所以,连接是网络行为状态的记录。和连接关联的还有一个名词,叫作。原创 2024-01-12 13:57:47 · 894 阅读 · 0 评论 -
01 漫游互联网:什么是蜂窝移动网络?
互联网是一个非常庞大的结构,从整体来看,互联网是一个立体的、庞大的网状结构。但是如果将它放大、再放大,将镜头拉近,在微观层面,我们会看到一个个网络、一台台设备,还会看到大量的封包在交换、有设备在不断地改变封包的走向、损坏的封包被重发、一个个光电信号被转化和传输。这个过程看似复杂,但任何一个局部的设计都在井然有序地运行着。每次我想要深入研究互联网的设计时,都不禁再次感叹它的浩瀚——如今你看到的网络,是经过几个时代的发展沉淀下来的“宝藏”。不是某个人、某个团队就可以设计出来。原创 2024-01-12 10:01:04 · 900 阅读 · 1 评论