小言_互联网的博客

计算机网络笔记:域名/ip及相互关系知识汇总(思维导图详细解析)

373人阅读  评论(0)

知识框架:


1.ip地址

定义:IP规定网络上所有的设备都必须有一个独一无二的IP地址,就好比是邮件上都必须注明收件人地址,邮递员才能将邮件送到。
同理,每个IP信息包都必须包含有目的设备的IP地址,信息包才可以正确地送到目的地。
ipv4地址由网络地址+主机地址构成

ipv4和ipv6:
ipv4
IPv4是 Internet Protocol version 4 的缩写,表示IP协议的第四个版本。
IPv4使用32位2进制位的地址,因此大约只有43亿个地址。最初每一个连接入互联网的用户都要分配使用一个IPv4 地址,因此未分配的IPv4地址越来越少,
由此产生了IPv4地址耗尽的问题。为了根本解决IPv4地址耗尽的问题,IPv6应运而生。

ipv6
IPv6的优势就在于它大大地扩展了地址的可用空间,IPv6地址有128位长。如果地球表面(含陆地和水面)都覆盖着计算机,那么IPv6允许每平方米拥有7*1023个IP地址;如果地址分配的速率是每微秒100万个,那么需要1019年才能将所有的地址分配完毕。

ipv4地址的构成
连接在 Internet 中的每一台主机 (或路由器) 都分配一个 32 比特的全球唯一的标识符 ,即IP地址 。传统的 IP 地址是分类的地址 ,分为A、B、C、D、E 五类。
无论哪类 IP 地址 ,都由网络号和主机号两部分组成 。即 IP 地址::={<网络号>,<主机号〉} 。 其中网络号标志主机(或路由器) 所连接到的网络 。一个网络号在整个因特网范围内必须是唯一的。主机号标志该主机 (或路由器)。一个主机号在它前面的网络号所指明的网络范围内必须是唯一的。由此可见,一个 IP 地址在整个因特网范国内是唯一的。
分类的 IP 地址如图所示。

每个类别的网络可以使用的网络号的数目:

Cidr:

说Cidr之前先说一下子网掩码
子网掩码
为了告诉主机或路由器对一个 A 类、B 类、C 类网络进行了子网划分 ,使用子网掩码来表达对原网络中主机号的借位 。
子网掩码是一个与 IP 地址相对应的长 32bit 的二进制串,它由一串 1 和跟随的一串 0 组成。 其中,1对应于 IP 地址中的网络号及子网号 ,而 0 对应于主机号 。计算机只需将 IP 地址和其对应的子网掩码运位相 “与” (逻辑 AND 运算),就可得出相应子网的网络地址 。
现在的因特网标准规定 :所有的网络都必须使用子网掩码 。如果一个网络没有划分子网,那么就采用默认子网掩码 。A 、B 、C 类地址的默认子网掩码分别为 255.0.0.0 、255.255.0.0 、 255.255.255.0 。例如,某主机的 IP 地址 136.34.5.56,子网掩码为255.255.255.0 ,进行逐位“与” 运算后,得出该主机所在子网的网络号 136.34.5.0。
Cidr
无分类域间路由选择 (CIDR ) 是在变长子网掩码的基础上提出的一种消除传统 A、B、C 类网络划分,并且可以在软件的支持下实现超网构造的一种IP地址的划分方法 。
比如说,如果一个单位需要2000个地址 ,那么就分配它一个 2048 地址的块 ( 8 个连续的 C 类网络),而不是一个完全的B类地址。这样可以大幅度提高IP地址空间的利用率 ,减小路由器的路由表大小 ,提高路由转发能力。
CIDR 还使用 “斜线记法” (或称 CIDR 记法),即:IP 地址/网络前缀所占比特数 。其中,网络前缀所占比特数对应于网络号的部分 ,等效于子网掩码中连续 1 的部分 。例如 ,对于 128.14.32.5/20 这个地址 ,它的掩码是 20 个连续的 1 和后续 12 个连续的 0,通过逐位相 “与” 的方法可以得到该地址的网络前缀 (或直接截取前 20 位),如下图:

CIDR 虽然不使用子网 ,但仍然使用 “掩码” 这一名词。“CIDR 不使用子网” 是指 CIDR 并没有在 32 位地址中指明若干位作为子网字段 。但分配到一个 CIDR 地址块的组织 ,仍可以在本组织内根据需要划分出一些子网 。例如,某组织分配到地址块 /20,就可以再继续划分为8个子网 (从主机号中借用 3 位来划分子网),这时每个子网的网络前缀就变成23位。

同一个单位的ip一般属于同一个cidr字段,如果我们知道其中一个ip,就可以通过cidr字段从而获得一大片的ip。这是对ip地址扩展的基本原理。
获得cidr字段的python程序:
from ipwhois import IPWhois

def get_cidr():
obj = IPWhois(‘39.156.69.79’)
results = obj.lookup_rdap(depth=1)
#print results
return results[‘asn_cidr’]
print(get_cidr())
运行截图:

ip信息的挖掘

获得ip后我们可以通过nmap获取有关此ip的信息:如os,端口信息
一个简单的nmap api的源代码:
https://blog.csdn.net/weixin_43484977/article/details/103458384
以下是调用nmap flask-api的运行截图

2 域名

域名(英语:Domain Name),又称网域,是由一串用点分隔的名字组成的Internet上某一台计算机或计算机组的名称,用于在数据传输时对计算机的定位标识(有时也指地理位置)。
由于IP地址具有不方便记忆并且不能显示地址组织的名称和性质等缺点,人们设计出了域名,并通过网域名称系统(DNS,Domain Name System)来将域名和IP地址相互映射,使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址数串。
域名服务器
DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地址 (IP address)的表,以解析消息的域名。

3 域名和ip的关系

逻辑关系:一个域名可以对应多个ip,一个ip也可以对应多个域名。
(这个关系很容易弄错)
转化方法:
域名到ip:域名可以通过DNS解析转化为ip。
ip到域名:ip可以通过PTR方法完成DNS反向解析获得域名。


转载:https://blog.csdn.net/weixin_43484977/article/details/104844082
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场