从“flag助力大红包”到 IPv4
起因是hackgame的“flag助力大红包”题目。
题目不难,X-Forwarded-For写个脚本就搞定了。
但问题是,IP这块我其实完全不懂原理;如果X-Forwarded-For没用就直接G。
所以,简单的了解了一下IPv4。
IPv4使用32位地址,一般采用点分十进制写法(eg:192.168.1.100)
一、IP分类
考虑到有的网络拥有很多主机,而有的网络主机很少,因此为了便于对IP地址进行管理,将IP地址划分为五类,即A类到E类。
当我们说“申请到一个IP地址时”,实际上只是获得了一个网络号;而主机号由我们自己分配。
约定俗成的,有:
此处的IP都是指“公网IP”,即“广域网IP”;
而我们在电脑上查询到的IP,大部分都是内网IP,即“局域网IP”。
广域网和局域网是两种Internet的接入方式;
广域网可以直接接入Internet,而局域网IP需要通过NAT连接Internet。
NAT(Network Address Translation)是网络地址转换,它实现局域网的IP地址与广域网的地址之间的相互转换,将广域网IP地址转换为大量的局域网IP地址,减少对公网IP地址的占用。
因此,我们上述A-E类公网IP表中,需要扣除一些,作为私用IP(内网IP):
二、子网
此处略过一些子网掩码的产生和发展中的规定,仅讲述CIDR(无分类编址)及之后的内容。
之前,我们提到过“申请到一个IP地址“;然而,即使是主机号最少的C类IP地址,也可容纳2^8-2=254台机器。
对于一个只拥有数十台乃至更少台机器的网络,申请这样一个IP会导致大量的地址浪费;而如果数个这样的小网络直接使用一个IP,又会导致这些小网络之间可以直接进行局域网通信,安全性较差。
这时候,我们就要使用子网掩码。它在一个IP地址的内部主机号部分“划分子网”。子网之间不能互相通讯,这就保证了安全性。
将子网掩码和分组中的目的IP地址(用户主机IP地址)进行逐二进制位与运算,即可得到子网的网络地址。外界只能看到这个“子网的网络地址”而看不到内部用户的具体地址。每一个子网中有一个网关,内部计算机通过这个网关访问Internet。
三、举例
校园网:
这显示了公网IP是一个A类IP地址,这台主机被划分在子网10.136.0.0/16中,以10.136.0.1作为网关,子网可容纳2^16-2台主机。
家用网络:
这显示了公网IP是一个C类IP地址,这台主机被划分在子网192.168.3.0/24中,以192.168.3.1作为网关,子网可容纳2^8-2=254台主机。
个人热点:
这显示了公网IP是一个B类IP地址,这台主机被划分在子网172.20.10.0/28中,以172.20.10.1作为网关,子网可容纳2^4-2=14台主机。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?