前面的 Blog 也提到了,DHCP 服务只负责分配 IP,路由器里面 DHCP 服务并不是入网服务,那么真正的入网是哪一部份负责呢?
这里提一个大家都很熟悉的名字:网关。

网关的在 Wiki 定义是:转发其他服务器通信数据的服务器,接受客户端发送来的请求时,它就像自己拥有资源的服务器一样对请求进行处理。
无损压缩(下简称”压缩”)是计算机存储方面很重要的一种课题(至少在过去是),这是一种典型的时间换空间的方案。
过去由于存储介质普遍很贵,所以压缩方式存储文件可以更大化的利用存储介质的空间(就问你有没有见过只有 40G 的 PC 硬盘,想想都可怕)。
压缩,顾名思义就是把大文件的体积变小,让他在存储的时候能够少用一点存储空间,而且压缩后的文件能保证可以反向解算出来并且内容不会变化,但是压缩后的文件不能直接被文件系统识别和读取,需要先对文件进行解压之后才能读取其中内容,解压的时候会消耗一定时间,所以说是时间换空间。
压缩存储其实也就是对文件进行了特殊编码然后存储,今天主要介绍两种压缩编码:哈夫曼编码、LZ77 编码。
今天讲一讲 hash 算法。
hash 算法不可逆,大家都知道,因为这是一个一对多的问题,一个 MD5/SHA1 值理论上是可以对应多个原始数据的,所以 MD5/SHA1 是无法还原出原始信息的。
但是,如果我指定范围,你能通过 MD5/SHA1 倒推出原始数据吗?
举个例子:定义一个 hash 算法,取值在 255 下的模,这样的 hash 值也是不能直接反推数据的,但是如果我说我数据就是在 1 ~ 255 之间的值,那我给定一个 hash 值,无疑你是能得到原始数据的。
但是 MD5/SHA1 呢?
这里容我先卖个关子,今天主要是先介绍 MD5/SHA1 算法,最后我们会讨论这个问题。
AES 加密是一种对称加密算法,全称为 Advanced Encryption Standard,高级加密标准,在密码学中又称 Rijndael 加密法。它是一种区块加密标准,目前是最流行的一种对称加密算法。该算法为比利时密码学家 Joan Daemen 和 Vincent Rijmen 所设计,结合两位作者的名字,以 Rijndael 为名投稿高级加密标准的甄选流程。
AES 加密流程很简单,整体过程可以用下面这张图表示(点击可查看大图):

其中,中间的 9/11/13 轮分别是在秘钥长度为 128 bits、192 bits 和 256 bits 时使用的轮数。
图片上很多步骤如果不了解肯定是一脸懵逼,这些步骤都是在 AES 中定义好的一些操作,后面分开来讲一下每一步都要干嘛。
PPPoE(Point-to-Point Protocol Over Ethernet)协议是一个以太网上的点对点协议,是将点对点协议(PPP)封装在以太网(Ethernet)框架中的一种网络隧道协议。
它是一个链路层协议,如果要想自己实现一个 PPPoE 服务器需要了解链路层编程的相关知识。
网络五层架构中:应用——传输——网络——链路——物理。链路层属于比较靠底层的一层,所以难度还是有的。编程的时候相当于是直接与网卡打交道,编写难度比较高。
DHCP 协议(Dynamic Host Configuration Protocol)是一个网络层协议,主要用于给接入设备分配 IP,是目前所有路由设备中重要的协议之一。
本文主要记录博主以前编写 DHCP 时查询的所有资料和记录编写中遇到的坑,还有编写之后对于 DHCP 整个流程的理解,希望对后来者有些帮助。