正向代理、反向代理、透明代理

代理:它位于用户客户端和服务端之间,顾名思义它是一个中间商,代替客户端向服务端请求资源,并把服务端响应的资源传递给客户端而不用客户端自己去访问。

根据所处位置的不同分为正向代理、反向代理

一、正向代理:

  正向代理主要是代替客户端请求和接受互联网资源,比如当我们直接访问youtube的时候,你知道结果肯定是要扑街的,这时候可以去找个代理,通过代理我们就能访问了。这时候我们把代理服务看着是客户端。

  正向代理的用途 :

(1)访问本地无法访问的服务器;

(2)缓存作用,加速访问资源;

(3)客户端访问授权,进行上网认证;

(4)代理会记录访问记录,对外可以隐藏访问者的行踪。

 二、反向代理:

   它位于服务端,主要是将用户的web请求分发到后面的真实服务器上(负载均衡),并将真实服务器返回的结果交给用户,此时代理服务器位于服务端,对外就表现为一个服务器。

图2反向代理

反向代理的作用:

(1)保证服务端内部网路的安全,大型网站,通常将反向代理作为公网访问地址,Web服务器是内网。

(2)负载均衡,通过反向代理服务器来优化网站的负载,降低服务器压力。

三、透明代理:

   透明代理的意思是客户端根本不需要知道代理服务器的存在,它改变你的request fields(报文),并会传送真实IP,多用于路由器的NAT转发中。

透明代理也称为强制代理、内联代理或拦截代理。与常规代理相反,透明代理不需要对现有设置进行任何更改。它在浏览互联网时在用户不知情的情况下实施。

透明代理不会操纵请求或更改您的IP。它执行重定向并可用于身份验证。透明代理充当由ISP实现的缓存代理。

透明代理常用于缓存某些高带宽资源。例如,视频将被缓存到代理服务器,当请求查看该视频时,将呈现缓存副本而不向目标服务器发送请求。这是为了有效地使用带宽并缩短响应时间。

组织使用透明代理来限制对特定网站的访问。这用于审查内容。透明代理可以根据特定规则阻止对Internet的访问。此类代理服务器也用于防止DDoS攻击。它可以防止此类冗余请求泛滥并关闭实际的目标服务器。

可以在路由器刷OpenWRT安装shadowsocks使用透明代理+去DNS污染

拥有透明代理的缺点之一是用户控制权被透明代理带走,而用户没有意识到这一点。这是一个隐私问题。其次,透明代理不健壮,容易受到中间人攻击。网络流量可以重新路由到不同的代理。

透明代理的主要问题是可以监控您的所有流量。ISP 可以完全跟踪您的网络跟踪。如果您不希望被监控,第一步是检测您是否使用透明代理。一种常见的方法是在 Chrome 地址栏中输入无效的 URL。未找到网站时来自 Chrome 的典型错误消息与使用透明代理连接时显示的错误消息不同。

如果您正在浏览HTTPS网站,您可以通过单击浏览器上的锁定符号来查看SSL证书信息。当它来自 ISP 时,此证书看起来会有所不同。

Nmap 等命令也用于检测透明代理。

通过PHP脚本自动登录WP

WordPress的密码不记得了怎么办?除了通过邮件找回密码、登录phpmyadmin修改密码以外,还可以通过PHP脚本自动登录Wordpress。比如创建一个autologin.php放到wp根目录下,然后访问这个文件,就自动用指定的用户名登录站点,随后删除该文件即可。

为什么要自动登录WordPress

  • 知道网站管理的用户名以及cpanel信息,不知道密码,也不能修改用户的密码。
  • 本地开发图省事,不想每次都要登录站点。

自动登录Wordpress的PHP脚本

将如下内容写入一个文件,名字叫什么都可以,比如autologin.php,放到网站根目录下。

<?php
require('wp-blog-header.php');
// Automatic login //
$username = "admin";
$user = get_user_by('login', $username );

// Redirect URL //
if ( !is_wp_error( $user ) )
{
    wp_clear_auth_cookie();
    wp_set_current_user ( $user->ID );
    wp_set_auth_cookie  ( $user->ID );

    $redirect_to = user_admin_url();
    wp_safe_redirect( $redirect_to );
    exit();
}

然后打开浏览器,输入该文件地址,例如:

https://www.solagirl.net/autologin.php

这样就能用指定的用户名自动登录WordPress了,在线站点上请勿保留此文件。

让Wordpress时刻保持登录状态

如果要让WordPress不论何时都自动登录,可以用下面的代码,代码写成插件或者放到主题的functions.php里。

function auto_login() {

    if( is_user_logged_in() ){
        return;
    }
    $loginusername = 'admin'; //username of the WordPress user account to impersonate

    // get this username's ID
    $user = get_user_by( 'login', $loginusername );

    if( ! $user ){
        return;
    }

    $user_id = $user->ID;

    // login as this user
    wp_set_current_user( $user_id, $loginusername );
    wp_set_auth_cookie( $user_id );
    do_action( 'wp_login', $loginusername, $user );

    // redirect to home page after logging in
    wp_redirect( home_url() );
    exit;
}

add_action( 'wp', 'auto_login', 1 );

这段代码的作用:只要访问站点,就会自动登录。适合某些特殊用途,比如本地站点测试不想重复登录。

国家-防火墙实现原理

不同ISP建立的不同骨干网之间也有数据交换中心,使得信息和数据包可以自由的从全国任何地方流向其他地方。
而数据包在庞大的“网上公路”迷路的可能性。在各个级别的网路(局域网->域域网->广域网)中,分布着无数路由节点,每一张骨干网都有自己负责的路由群组和节点,整个群组统称为as自治系统(Autonomous system)

每一个骨干网管理的as自治系统都经过名为互联网号码分配局的国际机构分配唯一识别代码,例如,中国电信163骨干网的as自治系统编号为AS4134。每一张骨干网都有内部路由协议,每一个节点都在依据某种规定互相交换他们所连通的ip地址信息,作为数据包在“旅行”过程中的指路人。而全国性的骨干网之间也依靠外部路由协议互相交换它们所掌握的“服务器地图“,典型的有BGP协议。

边界网关协议(BGP)是运行于 TCP 上的一种自治系统的路由协议。 BGP 是唯一一个用来处理像因特网大小的网络的协议,也是唯一能够妥善处理好不相关路由域间的多路连接的协议。 BGP 构建在 EGP 的经验之上。 BGP 系统的主要功能是和其他的 BGP 系统交换网络可达信息。网络可达信息包括列出的自治系统(AS)的信息。这些信息有效地构造了 AS 互联的拓扑图并由此清除了路由环路,同时在 AS 级别上可实施策略决策。

国家-防火墙原理

1.基于UDP协议的域名解析服务劫持/DNS缓存污染
GFW会对所有经过骨干出口路由的基于UDP的DNS域名查询请求进行Intrusion Detection Systems(入侵检测系统)检测,一旦发现处于黑名单关键词中相匹配的域名查询请求,防火长城作为中间设备会向查询者返回虚假结果。
也就是说浏览器无法查询到域名对应的正确IP,也就无法对其进行访问,数据包会传输到虚假的IP,从而没有响应。

2.IP地址或传输层端口人工封锁——BGP路由劫持/“路由黑洞”
GFW的重要工作方式之一是在网络层的针对IP的封锁。事实上,GFW采用的是一种比传统的访问控制列表(Access Control List,ACL)高效得多的控制访问方式——路由扩散技术。分析这种新的技术之前先看看传统的技术,并介绍几个概念。

访问控制列表(ACL)

ACL可以工作在网络的二层(链路层)或是三层(网络层),以工作在三层的ACL为例,基本原理如下:想在某个路由器上用ACL控制(比如说是切断)对某个IP地址的访问,那么只要把这个IP地址通过配置加入到ACL中,并且针对这个IP地址规定一个控制动作,比如说最简单的丢弃。当有报文经过这个路由器的时候,在转发报文之前首先对ACL进行匹配,若这个报文的目的IP地址存在于ACL中,那么根据之前ACL中针对该IP地址定义的控制动作进行操作,比如丢弃掉这个报文。这样通过ACL就可以切断对于这个IP的访问。ACL同样也可以针对报文的源地址进行控制。如果ACL工作在二层的话,那么ACL控制的对象就从三层的IP地址变成二层的MAC地址。从ACL的工作原理可以看出来,ACL是在正常报文转发的流程中插入了一个匹配ACL的操作,这肯定会影响到报文转发的效率,如果需要控制的IP地址比较多,则ACL列表会更长,匹配ACL的时间也更长,那么报文的转发效率会更低,这对于一些骨干路由器来讲是不可忍受的。

路由协议与路由重分发

而GFW的网络管控方法是利用了OSPF等路由协议的路由重分发redistribution)功能,可以说是“歪用”了这个本来是正常的功能。

动态路由协议

说路由重分发之前先简单介绍下动态路由协议。正常情况下路由器上各种路由协议如OSPF、IS-IS、BGP等,各自计算并维护自己的路由表,所有的协议生成的路由条目最终汇总到一个路由管理模块。对于某一个目的IP地址,各种路由协议都可以计算出一条路由。但是具体报文转发的时候使用哪个协议计算出来的路由,则由路由管理模块根据一定的算法和原则进行选择,最终选择出来一条路由,作为实际使用的路由条目。

静态路由

相对于由动态路由协议计算出来的动态路由条目,还有一种路由不是由路由协议计算出来的,而是由管理员手工配置下去的,这就是所谓的静态路由。这种路由条目优先级最高,存在静态路由的情况下路由管理模块会优先选择静态路由,而不是路由协议计算出来的动态路由。

路由重分发

刚才说到正常情况下各个路由协议是只维护自己的路由。但是在某些情况下比如有两个AS(自治系统),AS内使用的都是OSPF协议,而AS之间的OSPF不能互通,那么两个AS之间的路由也就无法互通。为了让两个AS之间互通,那么要在两个AS之间运行一个域间路由协议BGP,通过配置,使得两个AS内由OSPF计算出来的路由,能通过BGP在两者之间重分发。BGP会把两个AS内部的路由互相通告给对方AS,两个AS就实现了路由互通。这种情况就是通过BGP协议重分发OSPF协议的路由条目。

另外一种情况,管理员在某个路由器上配置了一条静态路由,但是这条静态路由只能在这台路由器上起作用。如果也想让它在其他的路由器上起作用,最笨的办法是在每个路由器上都手动配置一条静态路由,这很麻烦。更好的方式是让OSPF或是IS-IS等动态路由协议来重分发这条静态路由,这样通过动态路由协议就把这条静态路由重分发到了其他路由器上,省去了逐个路由器手工配置的麻烦。

GFW路由扩散技术的工作原理

前面说了是“歪用”,正常的情况下静态路由是由管理员根据网络拓扑或是基于其他目的而给出的一条路由,这条路由最起码要是正确的,可以引导路由器把报文转发到正确的目的地。而GFW的路由扩散技术中使用的静态路由其实是一条错误的路由,而且是有意配置错误的。其目的就是为了把本来是发往某个IP地址的报文统统引导到一个“黑洞服务器”上,而不是把它们转发到正确目的地。这个黑洞服务器上可以什么也不做,这样报文就被无声无息地丢掉了。更多地,可以在服务器上对这些报文进行分析和统计,获取更多的信息,甚至可以做一个虚假的回应。

有了这种新的方法,以前配置在ACL里的每条IP地址就可以转换成一条故意配置错误的静态路由信息。这条静态路由信息会把相应的IP报文引导到黑洞服务器上,通过动态路由协议的路由重分发功能,这些错误的路由信息可以发布到整个网络。这样对于路由器来讲现在只是在根据这条路由条目做一个常规报文转发动作,无需再进行ACL匹配,与以前的老方法相比,大大提高了报文的转发效率。而路由器的这个常规转发动作,却是把报文转发到了黑洞路由器上,这样既提高了效率,又达到了控制报文之目的,手段更为高明。

这种技术在正常的网络运营当中是不会采用的,错误的路由信息会扰乱网络。正常的网络运营和管控体系的需求差别很大,管控体系需要屏蔽的IP地址会越来越多。正常的网络运营中的ACL条目一般是固定的,变动不大、数量少,不会对转发造成太大的影响。而这种技术直接频繁修改骨干路由表,一旦出现问题,将会造成骨干网络故障。

所以说GFW是歪用了路由扩散技术,正常情况下没有那个运营商会把一条错误的路由信息到处扩散,这完全是歪脑筋。或者相对于正常的网络运营来说,GFW对路由扩散技术的应用是一种小聪明的做法。正常的路由协议功能被滥用至此,而且非常之实用与高效,兲朝在这方面真是人才济济。

3.TCP RST重置
旁路监听的方式一般是将主交换机的数据镜像到控制系统,控制系统可以采用libpcap捕获数据包。在这种情况下要阻断tcp连接的建立只要在监听到第一次握手的时候,控制系统伪造服务器发起第二次握手回应,就能阻断客户端与服务器连接的建立。因为我们的系统在内网,发出的报文肯定比服务器快,这样客户端接收到我们伪造的报文以后会回应第三次握手,当服务器真正的报文到达的时候客户端将不再处理,此时客户端再向服务器请求数据,因为seq号和ack号出错,服务器不会受理客户端的请求。

4.协议检测→根据流量协议拆包→关键词匹配→封锁
HTTP协议有非常明显的特征,可以轻易被GFW系统检测和识别,GFW进而依据HTTP协议规则对数据包进行拆解,由于其表现为明文,所以可以直接进行关键词匹配。例如,从HTTP的GET请求中取得请求的URL。然后GFW拿到这个请求的URL去与关键字做匹配,比如查找Twitter是否在请求的URL中。而关键字匹配使用的依旧是一些高效的正则表达式算。

5.深度包检测(机器学习识别翻墙流量→直接阻断)
对于混淆流量和非传统加密协议,GFW正在使用大家耳熟能详的“人工智能”技术,将这些各种各样难以判断和识别的翻墙流量与正规的政企跨境流量相区分开来。

以上为网友分析,非专业资料

光纤通信网络安全

目前,光纤窃听的方法主要包括光纤弯曲法、V 型槽切口法、散射法、光束分离法、渐近耦合法等

1、直接切断光缆,接入光耦合器,(光分束器),使目标信号分为两个完全相同的信号

2、光纤弯曲在5至10MM可正确导光,用夹式耦合器不破坏光纤就可,

3、V 型槽切口法是通过一个接近纤心的V 型槽导出光纤信号进行窃听的方法。它要求V 型槽的切面与光纤信号传输方向之间的夹角大于完全反射的临界角。当达到这个条件后,在保护层中传输的部分信号和在V 型槽切面发生迭加效应的信号发生完全反射,导致信号通过光纤边界泄露。

  由于这种窃听方法导致的信号衰减很小,因此很难被发现。V 型槽切口法需要精确的切割和切面抛光设备,窃听部署需要持续较长时间,因此,光纤保护层的切割和抛光过程将面临被发现的危险。

4、散射法是采用光纤Bragg 光栅技术实现的一种隐蔽窃听方法,它采用一个紫外光激态激光器产生紫外光的迭加并影响目标光纤信号,通过在目标光纤纤心形成的Bragg 光栅反射出的一部分光信号实现对目标光纤的隐蔽窃听,是目前最先进的光纤窃听技术,常规的网络检测和监控手段都很难识别这种窃听行为。散射法不需要对光纤进行弯曲、切割或抛光,但是它需要更精密的窃听设备并且部署非常困难,比如产生有效的外部干扰干涉光束,并在目标光纤纤心产生光栅耀斑都需要精密的控制技术,而对于光栅耀斑反射出的光信号的检测也需要精密的检测技术。

5、渐近耦合法,渐近耦合法首先抛光光纤的保护层,使窃听光纤纤心尽可能贴近目标光纤纤心,通过减少保护层的反射引出部分信号到窃听光纤里面,由于光纤纤心非常细,实施这种方法非常困难,又由于光纤的保护层被抛光将产生1~2 dB 的光纤损耗,因此很难实现隐蔽的窃听。

  以上几种窃听光纤信号的方法都可以通过一些技术手段得到光纤信号,特别是光纤弯曲法、V 型槽切口法,能够实现隐蔽窃听,又由于实施相关窃听相对容易一些,因此具有较高的实战应用价值。

如何检测是否有窃听:

用光测试仪测试光衰,用光时域反射仪来看光纤中的断点,变形等。

光时域反射仪(OTDR)

  OTDR 的原理是通过精确地发射各种波长的有规律的光脉冲并测量反射光信号返回的时间和反射光信号的强度来分析光纤信道情况。通过跟踪反射光信号的时间和强度,OTDR 能够确定光环路的完整路径。另外,OTDR还可以识别光纤断路的距离。通过测试和保存OTDR 的参数,终端用户可以监控光路的变化并识别任何可能的光路入侵。由于OTDR( 包括偏振OTDR) 能够识别不连续的损耗,可以检测双折射、压力和其他由窃听引起的光信号变形等,因此,具有检测光纤断裂、弯曲、异常损耗和各种窃听等异常情况的能力。

另外可以从技术上防止光纤被窃听而造成的敏感信息泄露。比如加密,目前,比较实用的光纤信号保护手段主要有无规律载波光纤通信技术、基于混沌保密的光纤通信方式和光纤信道加密技术等。使用这些技术,可以在一定程度上增强光纤信号的保密性,这种信息保护方式对于业余窃听爱好者来说可能是一筹莫展,但是它对具有超强计算和分析能力的专业窃听机构并不能提供完全的保密性。

阿里云打开mysql远程连接

先进阿里云控制台,安全组规则打开请允许入方向的3306端口TCP连接

然后再进操作系统

解决mysql不能使用IP链接的问题

1) 修改%xampp%\mysql\bin\my.ini文件,搜索

bind-address=“127.0.0.1”

改成

bind-address=“0.0.0.0”

2) 修改%xampp%\phpMyAdmin\config.inc.php文件,搜索:

/* Authentication type and info */

$cfg[‘Servers’][$i][‘auth_type’] =‘config’;

$cfg[‘Servers’][$i][‘user’] =‘root’;

$cfg[‘Servers’][$i][‘password’] =”;

$cfg[‘Servers’][$i][‘extension’] =‘mysql’;

$cfg[‘Servers’][$i][‘AllowNoPassword’] = true;

改成:

/* Authentication type and info */

$cfg[‘Servers’][$i][‘auth_type’] =‘cookie’;

$cfg[‘Servers’][$i][‘user’] =‘root’;

$cfg[‘Servers’][$i][‘password’] =‘root’;

$cfg[‘Servers’][$i][‘extension’] =‘mysql’;

$cfg[‘Servers’][$i][‘AllowNoPassword’] = true;

3) 启动mysql、apache,登录phpMyAdmin。在“权限”部分添加一个root@%用户,内容参照 root@localhost 的设置;两者的区别就是主机字段,一个写%,一个写localhost;

xampp下mysql开启远端连接

1、进入phpmyadmin管理界面首页,点击“权限”后,再“添加新用户”,用户名:root(随意),主机:%(必须是%),对应的密码可以设置可以不设置,即可开通远程连接;2、或者用工具Navicat链接到本地数据,点击“管理用户”,后添加用户,同上操作即可开通远端连接。

腾讯文档多人协作

要多人共同同时操作一个表或者文档时,可以用腾讯文档,石墨文档等,如下面说下腾讯文档

进腾讯文档后,可新建在线文档,在线EXCEL表,在线PPT,在线信息收集表,在线思维图等,创建人有所有权,

如创建在线表格后,可以通过右上解的分享等功能,或者其它人可扫微信等来得到查看和编辑权限,

有编辑权限后就可以一起操作表格了,如可以进行筛选等表格常用操作,可以用数据验证来设置单元格的格式为下位选框,复选框,日期等,

可以套用模板,用插件等

总体比较好用,别人在编辑一个单元格时也会有标示,以免两个人同时编辑一个单元格,但偶尔会出现别人编辑完,你这边还没显示的情况,

下载评论多的抖音视频和相关的评论

抖音有些评论相当的精彩,所以这次用python加fiddler来下载评论多的视频和相应的评论

刚开始打算用fiddler来抓抖音手机APP的包,按如下配置:

1、fiddler只能抓http/https协议的包,默认只能抓http协议包

如果要抓https协议包,需要如下配置:

Tools-Options-HTTPS-依次勾选全部

2、Actions里面-Trust Root Certificate-确定 来trust信用证书

3、Connections,设置端口号,fiddler默认8888

如果是手机用数据线连电脑就要把里面的 允许远程电脑连接也点上

4、如果是模拟器里装抖音或者手机装抖音并通过WIFI连接网络来抓包就在模拟器或者手机里设置网络代理为装fiddler的电脑IP

5、在手机上打开装fiddler的电脑的IP:8888,下载证书安装

按网上这个步骤来会导致抖音上不了网,按分析有可能是抖音应用证书问题,用了SSL Pinning主要就是来防止中间人攻击的,安卓应用会在HTTPS建立时对服务端返回的证书作校验,如果不一致则无法建立连接,我们用到的抓包工具fiddler或burpsuite实际上就是在起一个中间人的作用。具体可以参考https://zhuanlan.zhihu.com/p/511136064,以后再按这个来试下,今天还是按抖音网页版来抓包分析吧,

此段代码放到fiddler中的script的response中

 if (m_Hide304s && oSession.responseCode == 304) {
      oSession["ui-hide"] = "true";
    }
    
    if (oSession.uriContains("https://aweme.snssdk.com/aweme/v1/general/search/single/")){
      var strBody=oSession.GetResponseBodyAsString();
      var sps = oSession.PathAndQuery.slice(-58,);
      //FiddlerObject.alert(sps)
      var timestamp=new Date().getTime();
      var filename = "D:\抖音评论资料" + "/" + sps + timestamp + ".json";
      var curDate = new Date(); 
      var sw : System.IO.StreamWriter; 
      if (System.IO.File.Exists(filename)){ 
        sw = System.IO.File.AppendText(filename); 
        sw.Write(strBody); 
      } 
      else{ 
        sw = System.IO.File.CreateText(filename); 
        sw.Write(strBody); 
      } 
      sw.Close(); 
      sw.Dispose(); 

替换掉上面的网址和保存地址,这样网页版刷抖音时会把评论的JSON文件下载下来,视频信息JSON也同理操作

下载后用python分析JSON数据,把评论数大于36000的视频下载,并把相应的评论,视频信息插入数据库,相关代码见pycharm代码库

后面将把视频和评论在网站上展示出来。

NAT类型

下载并运行《NatTypeTester》,因工具原地址已失效,将STUN server栏中的地址修改成“stun.voipbuster.com”或者stun.qq.com,点击“GET”即可测试类型。

1. Full Cone NAT:NAT1将来自同一个内部元组X的的所有请求转换为同一个外部元组Y,无论这些请求属于同一个应用程序还是多个应用程序。此外,当X-Y转换关系建立后,任何外部主机都可以随时使用Y中的地址和端口作为目标地址和端口,向内部主机发送UDP消息。因为对外部请求的来源没有限制,所以这个方法足够简单,但是不那么安全。(任何外部主机/端口都可以与前一个内部节点映射到的外部元组通信)


2.Restricted Cone NAT:它是Full Cone的受限版本:来自同一个内部元组X的的所有请求都被NAT转换为同一个外部元组Y,与Full
Cone相同,但不同的是只有当内部主机已经向外部主机发送了消息(假设其IP地址为Z)时,
外部主机可以以Y中的信息作为目标地址和端口向内部主机发送UDP请求消息,这意味着NAT设备只转发(转换目标地址/端口)那些来自当前已知外部主机的UDP消息,从而保证了外部请求源的安全性。
(IP相同,端口任意,可以与前一个内部节点映射到的外部Tuple通信)

Port Restricted Cone NAT(NAT3

端口受限锥型NAT,相比NAT2,NAT3 又增加了端口限制,也就是说IP、端口都会受限。


Symmetric NAT(NAT4

对称型NAT,具有端口受限锥型的受限特性,内部地址每一次请求一个特定的外部地址,都可能会绑定到一个新的端口号。也就是请求不同的外部地址映射的端口号是可能不同的。这种类型基本上就告别 P2P 了。


由上面可以看出从NAT1到NAT4限制越来越多,为了各种需求,我们希望提升NAT类型。提升NAT类型的好处有,浏览网页、观看视频、游戏等更顺畅,下载速度更稳定快速,尤其是对喜欢玩游戏的用户,提升NAT类型后更容易进入游戏房间连线等。

IPv6

IPv6地址表示

  我们知道,IPv4地址长度为32位(4个字节)。书写IPv4的地址是用一个字节来代表一个无符号十进制整数,四个字节写成由3个点分开的四个十进制数,例如:

  10.1.123.56

  对于128位的IPv6地址,定义相似的表示方法是必要的。 考虑到IPv6地址的长度是原来的四倍,RFC1884规定的标准语法建议把IPv6地址的128位(16个字节)写成8个16位的无符号整数,每个整数用四个十六进制位表示,这些数之间用冒号(:)分开,例如:

  3ffe:3201:1401:1:280:c8ff:fe4d:db39

  从上面的例子我们看到了手工管理IPv6地址的难度,也看到了DHCP和DNS的必要性。为了进一步简化IPv6的地址表示,可以用0来表示0000,用1来表示0001,用20来表示0020, 用300来表示0300,只要保证数值不便,就可以将前面的0省略。比如:

  1080:0000:0000:0000:0008:0800:200C:417A

  0000:0000:0000:0000:0000:0000:0A00:0001

  可以简写为:

  1080:0:0:0:8:800:200C:417A

  0:0:0:0:0:0:A00:1

  另外,还规定可以用符号::表示一系列的0。那么上面的地址又可以简化为:

  1080::0:8:800:200C:417A

  A00:1

和IPv4一样,IPv6也分公网和内网,开头只要不是F开头,都是公网IP。

国内三大运营商的IPv6地址分配情况分别是:

电信为240e开头的(240e::/20);移动为2409开头的(2409:8000::/20);联通为2408开头的(2408:8000::/20)。 如果外网获取到的是fe80开头的地址,是不能拿来上网的。

fe80::/10,做内网地址,本地链路地址,用于单一链路,适用于自动配置、邻机发现等,路由器不转发以fe80开头的地址,私网地址是fd00::/8,这相当于IPv4的10.0.0.0/8、172.16.0.0/12、192.168.0.0/16

  IPv6地址的前缀(FP, Format Prefix)的表示和IPv4地址前缀在CIDR中的表示方法类似。比如 0020:0250:f002::/48表示一个前缀为48位的网络地址空间。

IPv6:前缀ID+接口ID/前缀长度,如2001:0000:0000:0000:0011:0000:0000:0010/64

IPv6的数字太多,多到地球上每粒沙子都能分配一个,这么多的ip怎么来划分一块一块的呢、如何区分呢?所以就有了前缀这个概念。

IPv6的前缀就是把IPv6的地址,转换为二进制,从左向右的个数。

例如:fe80::/10

这个/10就是fe80的前缀,我们把fe80转换为二进制,就是:1111 1110 1000 0000,我们从左向右数,十位二进制分别为1111 1110 10,这十位是不能动的,就意味着,前缀是不能动的,固定的,只有后面的118位是可以变动的。那么这个二进制后面就可以写为: 1111 1110 1011 1111 11111 11111 1111 1111………….

综上,fe80::/10的ip范围就是:fe80::—-febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff

比如电信给我家里分配的地址为:240e:fc:b841:700::/56 ,其实就是240e:00fc:b841:0700::,前面不能变动,后面的都属于我,想一想,这得有多少个IPv6,多的数不完。

运营商提供的IPv6线路主要分为支持前缀授权和不支持前缀授权两种,支持前缀授权就是把一整个网段直接给你自己去用,可在路由器设置中开启前缀授权功能,在外部网络/WAN配置里面,连接类型选择Native DHCP即可,有些路由器会是自动获取这个选项,需要注意的是获取到外网IPv6的IP后,可能还需要手动开启内网的DHCP v6用于给该路由器下联的设备分配IP,无特殊需求用默认的stateless即可,设置好路由器的相关参数后,终端(电脑、手机等)勾选IPv6协议,并开启自动获取IPv6地址和DNS服务器即可,

对于不支持前缀授权的运营商线路,无法由路由器给终端分配IPv6地址,终端IPv6地址统一由运营商进行分配,因此需要路由器支持IPV6桥模式,打开桥模式,再把wan和lan的V6功能禁用就可以了

设置好后打开浏览器输入www.test-ipv6.com,就可以看到线路是否支持IPv6了。

::1/128,即0:0:0:0:0:0:0:1,回环地址,就是IPv4中的localhost(127.0.0.1)

RFC1884中指出了三种类型的IPv6地址,他们分别占用不同的地址空间:

  单点传送:这种类型的地址是单个接口的地址。发送到一个单点传送地址的信息包只会送到地址为这个地址的接口。

  任意点传送:这种类型的地址是一组接口的地址,发送到一个任意点传送地址的信息包只会发送到这组地址中的一个(根据路由距离的远近来选择)

  多点传送:这种类型的地址是一组接口的地址,发送到一个多点传送地址的信息包会发送到属于这个组的全部接口。 和IPv4不同的是,IPv6中出现了任意点传送地址,并以多点传送地址代替了IPv4中的广播地址。

  

IPV6地址在线ping

Emoji表情插入Mysql时表字符集要转改成 utf8mb4

问题描述:

  插入Mysql时失败了,python代码报如下异常:

  pymysql.err.InternalError: (1366, “Incorrect string value: ‘\\xF0\\x9D\\x90\\xBF;……

原因分析:

  UTF-8编码有可能是两个、三个、四个字节。Emoji表情是4个字节,而Mysql的utf8编码最多3个字节,所以数据插不进去。

解决方案:

  修改Mysql表的字符集和Pymysql连接库时的字符集。

  1、修改Mysql表的字符集

    说明:将已经建好的表字符集转改成 utf8mb4,排序规则改为 utf8mb4_bin

    命令:alter table TABLE_NAME convert to character set utf8mb4 collate utf8mb4_bin; (将TABLE_NAME替换成你的表名)

    注意:排序规则不是 utf8mb4_general_ci,而是utf8mb4_bin,不要想当然

  2、修改数据库连接的字符集        

    conn = pymysql.connect(host=’localhost’, user=’root’, password=’root’, port=3306, db=’cncb’, charset=’utf8mb4′)