一张图,三分钟看懂什么是动态IP,内网和外网

今天在写爬虫的时候碰到封禁IP的问题,顺带了解一下IP相关知识

大家都知道中国是一个IPV4地址严重缺乏的国家,所以我们的拨号宽带一直都是动态IP,没有固定IP,后来更过分的是很多城市出现了内网IP,还有我们所有的二级宽带ISP提供的都是内网IP,内网IP越来越多的出现在我们生活中,所以我们才衍生出了DDNS,内网穿透等等。有的坛友问,什么是内网IP,今天我就试着用一张图,来说明内网IP,和外网IP的区别。

在这里插入图片描述

什么是外网IP

我们的互联网就好比一条宽阔的马路,网上的各种网站,提供服务的IDC,就好比马路边上的各种底商。大家都知道底商是直接开在马路边上的,他们的大门直接对着马路,目的是为了方便顾客进出购物,消费。马路的门牌号1,2,3……就好比一个个的外网IP,当我们要去某个地方的时候,我们直接按着门牌号,就可以找到了,这就是所谓的外网IP。例如左边的麦当劳,7-11超市等等。

什么是动态IP

后来这条路,越来越热闹,左边的地方都占满了(IPV4地址分配了很多,发现不够了),
越来越多的人来到这个路上,有购物的,有做小买卖的,但是人太多没有这么多地方,怎么办呢?由于这些人的特点流动性很强,为了方便管理,我们就把右边的地方2,4号留了出来,告诉这些推车做小买卖的,你们只能在2,4号这两个地方,别的地方不许去,先来先得,没有固定摊位。(这就是所谓的动态IP,先拨号先得IP,不固定)。后来做小买卖的太多了,2个位置不够用的,经常有来晚了发现没有位置了,就回去的。(早期的拨号时期,拨不上号,因为没有IP地址分配给你了)。当一个人收摊后,空出了一个位置,正好这是又来了一个摆摊的,那么他就接着这个位置,继续做生意了。(当一个人下线后,IP空闲出来,给新的拨号用户,让IP地址复用),以此类推,周而复始。

什么是内网ip

但是后来经济发达,想做生意的实在太多了,但是只剩下一个位置了6号,怎么办呢?为了经济发展,我们盖起来写字楼,所有的人都在写字楼里办公吧,一人一个房间,门牌号为101,102,103,104.。。。。。, 这些门牌号就是所谓的内网IP。

内网IP的缺点:
大家知道,大多数做生意是等着人来上门的,而不是主动去街上拉客人,所以这些内网IP的生意人开始打广告,我在101,我是搞美容的,另外一个我在102,我是搞贷款的,你们快来啊。(我们把内网ip,告诉我们的朋友,让他们访问),但是等了很久,没有人来,怎么回事?实际上,很多看了广告的人,都很有兴趣,但是他们在大街上找了半天,也没有找到所谓的101,102,于是只好回家了。(当我们直接访问一个内网IP时,找不到地址,于是就丢包处理了)。内网最大的缺点是,找不到地址,不能直接访问。

什么是端口转发:

写字楼的人一看,这不行啊,生意还是要做的,怎么办呢?于是就雇了一个前台,告诉她,如果有人问你美容院在哪,你告诉他在101。(开始设置端口转发)。于是又重新打广告,我的生意开业了,在骨干网路6号美容院啊,在骨干网路6号美容院啊。

IP地址 : 端口
骨干网6号 : 美容院
201.113.233.111 : 80

于是人们就到了6号,说我要去美容院,前台妹妹说,去101号房。(路由器端口转发到对应的端口)。如果没有设置端口转发,就好比一个人到了6号大喊,我要去美容院,我要去美容院,我要去美容院,没人理他,就回家了(访问失败,丢包了。)

什么是封80端口

慢慢的,人们都知道了美容院赚钱,以后只要建一个写字楼就开一个美容院(WEB服务器),由于最开始的美容院是在101房,于是人们就默认101房就是美容院,不需要再特殊说明了。(80端口为web默认访问端口)。但是由于一些人在美容院里玩出花样了,管理员一看,这不行这不要乱套了吗,于是下个命令说,以后所有写字楼的101号房间,不许开门,想开门必须审查。(强制封80端口,审核制度),其他房间的生意正常。

什么是内网穿透

“端口转发”也可以达到访问内网设备的作用,但是需要路由端开相应的端口转发才可以。但是也就是在这点上,上级路由(运营商)是不会给一般用户开放端口转发的,所以才出现了“内网穿透”,相当于:“你不给门 ,我就爬窗户硬闯”。

  • 14
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
各位网友大家好,要运行此工具必需先设置好网页信息,点击菜单栏设置或用快捷键(Alt+E)进入到设置页面,设置页面其中包括三个Tab:基本配置、网页信息和数据库。基本配置:如果要运行页面点击时自动刷新外网IP就要配置ADSL帐号,现在暂时只支持ADSL刷新外网IP。单独页面执行是已Html中div的id为标志,意思是循环只执行此选中项,默认是所有项目。IP数据表就是每执行一下点击网页都会记录下本次的IP,记录文件放在此工具的路径下的Data目录下的iptables.log文件,最小化启动程序就是启动此工具或最小化窗口后台托管运行,就像QQ一样挂着。循环重启软件运行此项是为了和刷新ADSL一起配合产生独立IP,因为每个浏览器都有Cookies,关闭浏览器就可以彻底清除Cookies产生独立访客(UV)了。如果同时选择了最小化启动程序可以用全局快捷键Ctrl+Alt+空格解除循环。网页信息:是一个表格可以进行添加、修改和删除。页面执行方式有两种:一是completed意思是等网页加载完毕后执行点击,二是thread多线程执行意思是加载页面3秒钟后再执行页面点击。各有各自的优点,如果发现其中一种执行方式实现不了可以用另外一种试一下。类型就是网页的链接返回类型,有两种一时纯url链接如:http://www.baidu.com,另一种是数据库SQL语句返回链接集。用数据库名加@加地址标志,在数据库Tab中配置。SQL语句一定要返回link结果集如:select concat('http://www.google.com/', url) link from table,在SQL语句中不要用双引号,要用单引号,否则会出错。现在支持MYSQL和MSSQL数据库。链接就是类型对应的文本。htmlID是html中div的id,这个是网站网页中要点击的定位点,是这个表的主键必须唯一。偏移坐标就是htmlID的相对偏移点,用英文逗号隔开如0,0。状态有两种Y和N,意思是是和否,默认是Y,就是如果您想停用此条记录不加入循环就改为N。独立IP,默认是N,就是在Data/iptables.log文件中没出现过的当为独立ip。双击单元格可以修改文本内容。点击最后的删除可以删除此行记录。修改或添加后可别忘记了按右下角的保存按钮哦。数据库tab表格简单明了就不多加说明了。如果有出现运行异常可以可以查看Data下的error.log错误日志文件。如果对此工具有何意见或建议可以点击意见反馈发送你的宝贵信息。此工具支持在线更新。如收到您的来信,我会尽快的修改更新。温馨提示:目标执行标签(htmlID)要保持在预览窗口显示,建议最大化窗口最小化后台托管运行。希望此工具可以帮得了大家。
好的,@Mapper注解是Mybatis框架中用于标识数据访问层接口的注解,用于告诉Spring容器将该接口类实例化并注入到其他Bean中。其使用步骤如下: 1. 在Spring Boot项目中引入Mybatis和Mybatis-Spring的依赖 2. 在配置文件中配置数据源和Mybatis的相关属性 3. 创建一个数据访问层接口,使用@Mapper注解标识该接口 4. 在该数据访问层接口中定义需要操作的数据库方法 5. 在Service或Controller中注入该数据访问层接口的实例,并调用其中的方法 下面是一个示例: 1. 在pom.xml中添加Mybatis和Mybatis-Spring的依赖: ```xml <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.6</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.1</version> </dependency> ``` 2. 在application.properties中配置数据源和Mybatis的相关属性: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=123456 mybatis.type-aliases-package=com.example.demo.entity mybatis.mapper-locations=classpath:mapper/*.xml ``` 3. 创建一个数据访问层接口UserMapper,使用@Mapper注解标识该接口: ```java @Mapper public interface UserMapper { User selectByPrimaryKey(Integer id); int insert(User record); int updateByPrimaryKey(User record); int deleteByPrimaryKey(Integer id); } ``` 4. 在mapper目录下创建UserMapper.xml,定义需要操作的数据库方法: ```xml <mapper namespace="com.example.demo.mapper.UserMapper"> <resultMap id="BaseResultMap" type="com.example.demo.entity.User"> <id column="id" property="id" jdbcType="INTEGER"/> <result column="username" property="username" jdbcType="VARCHAR"/> <result column="password" property="password" jdbcType="VARCHAR"/> </resultMap> <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer"> select * from user where id = #{id,jdbcType=INTEGER} </select> <insert id="insert" parameterType="com.example.demo.entity.User" useGeneratedKeys="true" keyProperty="id"> insert into user (username, password) values (#{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}) </insert> <update id="updateByPrimaryKey" parameterType="com.example.demo.entity.User"> update user set username = #{username,jdbcType=VARCHAR}, password = #{password,jdbcType=VARCHAR} where id = #{id,jdbcType=INTEGER} </update> <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer"> delete from user where id = #{id,jdbcType=INTEGER} </delete> </mapper> ``` 5. 在Service或Controller中注入UserMapper的实例,并调用其中的方法: ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public User selectByPrimaryKey(Integer id) { return userMapper.selectByPrimaryKey(id); } @Override public int insert(User user) { return userMapper.insert(user); } @Override public int updateByPrimaryKey(User user) { return userMapper.updateByPrimaryKey(user); } @Override public int deleteByPrimaryKey(Integer id) { return userMapper.deleteByPrimaryKey(id); } } ``` 这就是使用@Mapper注解的基本步骤,希望对你有所帮助。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值