短域名解决方案

短域名解决方案
2019年5月6日

  1. 什么是短域名?
    顾名思义,短链接即是长度较短的网址。通过短链接技术,我们可以将长度较长的链接压缩成较短的链接。并通过跳转的方式,将用户请求由短链接重定向到长链接上去。

  2. 为什么要使用短域名?(短域名的好处)
    1.更容易记忆;
    2.更快的速度;
    3.更多的文字表现;
    4.更友好的视觉体验;
    5.更好的SEO;

  3. 短域名的算法

  4. 算法一(自增序列算法)
    算法内容:设置 id 自增,一个10进制 id 对应一个62进制的数值,1对1(如十进制的10000对应62进制的CcQ等);
    注:这里也可以使用base64等,原理相似;
    优点:唯一性;范围很是庞大,500多亿次才可能出现重复,一个长域名可以对应多个短域名;
    缺点:难统计;短域名的生成有一定的规律;

  5. 算法二
    算法内容:
    • 将长网址 md5 生成 32 位签名串,分为 4 段,每段 8 个字节
    • 对这四段循环处理, 取8 个字符,将他看成 16 进制与 0x3fffffff(30使) 与操使;即超过30 位的忽略处理
    • 这30 位分成6段,每5 位的数字作为字母表的索引取得特定字符, 依次进行获得 6 位字符串
    • 总的 md5 串可以获得4 个6位字符串,取里面的任意一个就可作为这个长 url 的短 url 地址
    注:这里也可以使用Hash值等,原理相似;
    优点:不会从一位递增到多位,没有规律可言;
    缺点:存在重复的可能性(虽然很小),短码位数比较固定,长域名对应的短域名固定;

3:算法三
随机数算法:每次对候选字符进行任意次随机位数选择,拼接之后检查是否重复
若要求位数为2,则其对应短地址为计算过程如下:
①设置字符序列“0123456789abcdefghijklmnopqrstuvwxyz”
②根据字符个数设置最大值为35,最小值为0,取2次随机数假设为:6,17
③依次取上述字符的6位和17位,则为6h
其生成之后的短网址为xx.xx/6h
优点:算法简单,便于理解;
缺点:随着短域名的增多,效率低下;

  1. 解析原理
    当我们在浏览器里输入一个短地址(如http://hatzjh.cn/RlB2PdD) 时

  2. DNS首先解析获得 http://hatzjh.cn/ 的 IP 地址

  3. 当 DNS 获得 IP 地址以后(比如:...),会向这个地址发送 HTTP GET 请求,查询短码 RlB2PdD

  4. http://hatzjh.cn/ 服务器会通过短码 RlB2PdD 获取对应的长 URL

  5. 请求通过 HTTP 301 转到对应的长 URL http://www.hatzjh.com/firm2019
    注:301 是永久重定向,302 是临时重定向。短地址一经生成就不会变化,所以用 301 是符合 http 语义的。同时对服务器压力也会有一定减少。
    5.短域名的安全性
    对于短网址服务,建议以下措施提升安全性:
    1、增加单IP访问频率和单IP访问总量的限制,超过阈值进行封禁。
    2、对包含权限、敏感信息的短网址进行过期处理。
    3、对包含权限、敏感信息的长网址增加二次鉴权。
    6.适合我们的短域名解决方案
    我建议选择算法二:

  6. 算法二与算法一相比具有多样性,避免存在着一定的规律性;

  7. 算法二与算法三相比具有一定的复杂性,在安全系数上面有着一定的提升;

  8. 对于算法二的缺点,我们可以进行适当的处理,增强其优势;如长域名只能对应一个短域名,我们可以为长域名增加一定的随机数进行处理;对于个人的长域名生成,我们可以对其预留一定的位置表示,或者是二次生成短域名等方式;

  9. 总结
    短域名的算法有着很多,根据个人的不同有着不同的方式,我们还需要继续的学习总结,不断地去进行完善,以便更好地去服务;

你可能感兴趣的:(开发总结)