一、IP地址

1、IANA

  IANA 就是指(Internet Assigned Numbers Authority) ,Internet号分配的机构。负责对IP地址分配规划以及对TCP/UDP公共服务的端口定义。

端口:用于标记进程

 0-65535

Socket:ip:port

  172.16.100.7:80

  172.16.100.8:80 


2、IP地址的基本格式

  IPv4使用32位(4字节)地址因此整个地址空间中有4,294,967,296(2^32)个地址,也就是近43亿个地址。IPv4地址在计算机内部是以二进制形式表示,是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节)。

  IP地址通常用“点分十进制”表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数。

例:点分十进IP地址(100.4.5.6),实际上是32位二进制数(01100100.00000100.00000101.00000110)。

地址格式为IP地址=网络地址+主机地址 或 IP地址=网络地址+子网地址+主机地址。 


3、子网掩码

  子网掩码的作用就是获取主机IP地址中的网络地址信息,用于区别主机通信不同情况,选择不同路由

子网掩码与IP地址一样,也是由32位二进制组成的。它被分成“网络ID”和“主机ID”两部分。

“网络ID”部分全是“1”;“主机ID”部分全是“0”表示。


4、IP地址分类 

IPv4地址的基本分类:

五个类别:A、B、C、D和E

  A、B和C类用于单播通信中设备IP地址分配,D类属于组播地址,用于组播通信,E类是保留地址。

它们均有不同的网络类别(也就是“网络ID”)长度,用来标识不同的网络类别,剩余的部分被用来识别网络内的主机(称之为“主机ID”)。

网络ID”用来确定每类网络中有的网络数

主机ID”则用来确定每个网络中有的IP地址数

  最初设计互联网络时,为了便于寻址以及层次化构造网络,每个IP地址包括两个标识码(ID),即网络ID和主机ID。

 同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机(包括网络上工作站,服务器和路由器等)有一个主机ID与其对应。IP地址根据网络ID的不同分为5种类型,A类地址、B类地址、C类地址、D类地址和E类地址。

大:0 000 0000-0 111 1111: 0-127     #A类网

中:10 00 0000-10 11 1111: 128-191    #B类网

小:110 0 0000-110 1 1111: 192-223    #C类网

   1110  0000-1110 11111: 224-239   #组(多)播地址

   1111  0000-1111 1111: 240-255    #留作实验使用

主机位全0:网络地址

主机位全1:广播地址


A类IP地址 

  A类地址的网络ID为1~126。

  一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”, 

地址范围从1.0.0.0 到126.0.0.0,默认网络掩码为:255.0.0.0;可用的A类网络有126个,每个网络能容纳1亿多个主机。 

注意:数字0和 127不作为A类地址,数字127保留给内部回送函数,而数字0则表示该地址是本地宿主机,不能传送。

A:1-126  #127段网络做回环测试

    2^7-2个网络:126个网络

    每个网络的主机:2^24-2


B类IP地址 

  B类地址的网络ID为128~191。

  一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,地址范围从128.0.0.0到191.255.255.255,默认网络掩码为:255.255.0.0;可用的B类网络有16382个,每个网络能容纳6万多个主机 。

B:128-191

    2^14个网络

    每个网络中的主机:2^16-2

 

C类IP地址 

  C类地址网络ID为192~223。

  一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”

范围从192.0.0.0到223.255.255.255,默认网络掩码为:255.255.255.0;C类网络可达209万余个,每个网络能容纳254个主机。 

C:192-223

    2^21个网络

    每个网络中的主机:2^8-2 


这里每个网段中的主机数为什么要减去2?  

  ip地址中全零(“0.0.0.0”)地址对应于当前主机,全“1”的IP地址(“255.255.255.255”)是当前子网的广播地址,所有主机数中这里每个网段都减去了2个


D类地址用于多点广播(Multicast): 

  D类IP地址第一个字节以“1110”开始,它是一个专门保留的地址。它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。 

E类IP地址: 

  以“11110”开始,为将来使用保留。 


5、私有IP地址

在IP地址3种主要类型里,各保留了3个区域作为私有地址,其地址范围如下: 

A类地址:10.0.0.0/8(255.0.0.0 ) 

        10.0.0.0 - 10.0.0.254,1个网络,每个网络的主机数:2^24 -2

B类地址:172.16.0.0/12(172.16.0.0,255.255.0.0)

        172.16.0.1 - 172.31.255.254,16个网络,每个网络的主机数:2^20 -2

C类地址:192.168.0.0/16(255.255.255.0) 

        192.168.0.0 -192.168.255.0,256个网络,每个网络的主机数:2^16 -2


二、常用的几个ip地址

1、本机地址

  通常指的是绑定在物理或虚拟网络接口上的IP地址,可供其他设备访问到;

  一般情况下,并不会把 127.0.0.1当作本机地址——因为没必要特别说明,大家都知道。
本机地址是与具体的网络接口绑定的。比如以太网卡、无线网卡或者PPP/PPPoE拨号网络的虚拟网卡,想要正常工作都要绑定一个地址,否则其他设备就不知道如何访问它。

  如果服务端套接字绑定在这个ip上面(就是某个服务监听在这个ip地址上),客户端程序就可以通过这个ip来访问这个服务。当ip发生变化时,套接字绑定的ip也需要发生改变,否则访问不到。


2、127.0.0.0

  整个127.* 网段通常被用作loopback网络接口的默认地址,按惯例通常设置为127.0.0.1。这个地址在其他计算机上不能访问,就算你想访问,访问的也是自己,因为每台带有TCP/IP协议栈的设备基本上都有localhost/127.0.0.1。

  如果服务端套接字绑定在它上面,你的客户端程序就只能在本机访问


3、localhost

  localhost 是个域名,不是地址,它可以被配置为任意的 IP 地址,不过通常情况下都指向 127.0.0.1(ipv4)和 [::1](ipv6)
  不能直接绑定套接字,必须先gethostbyname转成IP才能绑定


4、0.0.0.0

1)严格说来,0.0.0.0已经不是一个真正意义上的IP地址了。它表示的是这样一个集合:所有不清楚的主机和目的网络这里的“不清楚”是指在本机的路由表里没有特定条目指明如何到达。对本机来说,它就是一个“收容所”,所有不认识的“三无”人员,一 律送进去。如果你在网络设置中设置了缺省网关,那么Windows系统会自动产生一个目的地址为0.0.0.0的缺省路由。

2)网络中0.0.0.0的IP地址表示整个网络,即网络中的所有主机。

  它的作用是帮助路由器发送路由表中无法查询的包。如果设置了全零网络的路由,路由表中无法查询的包都将送到全零网络的路由中去。

 如果服务端套接字绑定在它上面,你的客户端程序可以通过它上面所有的“本机地址”访问


5、169.254开头的IPv4地址

 “自动专用IP地址”,其地址范围为:169.254.0.0/16,子网掩码为255.255.0.0。

  当计算机设定了由DHCP自动分配IP地址,而又无法由DHCP得到IP时(网络断开、DHCP服务器、路由器失效等等),就会自动分配一个169.254段的IP给自己。


6、localhost与127.0.0.1有什么不同?

  要比较两个东西有什么不同,首先要弄清两者的概念。所以,我们从概念开始:

localhost:也叫local ,正确的解释是:本地服务器

127.0.0.1:在windows等系统的正确解释是:本机地址(本机服务器)

  通过本机的host文件,windows自动将localhost解析为127.0.0.1

  一个是“本地”,一个是“本机”。不过从这两个词来看,还是不能比较两者的区别。我们再看看他们的工作原理。

  localhot(local)是不经网卡传输!而使用Unix socket这点很重要,它不受网络防火墙和网卡相关的的限制。

  127.0.0.1是通过网卡传输,依赖网卡,并受到网络防火墙和网卡相关的限制。

一般设置程序时本地服务用localhost是最好的,localhost不会解析成ip,也不会占用网卡、网络资源。


三、子网划分

1、有类网络

A、B、C、D、E类IPv4地址

  每类IPv4地址都有固定长度的网络ID,有固定的子网掩码

  大大降低了IPv4地址的利用率和可用的网络数


2、无类网络(VLSM,可变长子网掩码

  每个IPv4地址的网络ID长度都可以不固定

  通常把以前的有类网络称之为标准网络,而把网络ID长度大于对应标准网络的网络称之为“子网”

网络地址

  用来标识一个有类或无类网络的地址,是对应网络或子网的第一个IPv4地址,即“主机ID”部分全为0的IPv4地址

广播地址

  是一个有类或无类网络中的最后一个IPv4地址,即“主机ID”部分全为1的IPv4地址

主机地址

  除了网络地址和广播地址这两个一头一尾的地址外,中间的其他所有地址都是主机地址,可以直接分配给主机使用

IPv4地址前缀表示形式

  在一个IPv4地址后面先加上一个斜杠(/),然后在这个斜杠后面直接写出该地址所在网络的“网络ID”,或者“子网掩码”长度

如:192.168.1.10/24代表的是一个标准的C类网络IPv4地址,而10.1.0.10/8则代表了一个标准的A类网络IPv4地址


3、VLSM子网划分

  把原来标准网络IPv4地址中的“网络ID”部分向“主机ID”部分借位,把一部分原来属于“主机ID”部分的位变成“网络ID”的一部分(通常称之为“子网ID”

原来的“网络ID”+“子网ID”=新“网络ID”

子网ID”长度决定了可以划分子网的数量

wKioL1hPmsSBXCgDAAAmxYyA3JI914.png

全0子网:“全0子网”代表的是对应子网的“子网ID”部分各位都是0,是第一个子网

全1子网:“全1子网”代表的是对应子网的“子网ID”部分各位都是1,是最后一个子网

wKiom1YdzOuCRKcjAAFjzO4WloA780.jpg

wKiom1Yd8qCDrRE3AAFCCgJDwZ4696.jpg

子网掩码是一个网络或一个子网的重要属性:

  路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器。

  路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码。

  若一个路由器连接在两个子网上就拥有两个网络地址和两个子网掩码。


wKiom1Yd-VuCLIlyAAEkzX-FP00655.jpg


wKioL1hPnBbhz_DvAAEQtAfMTVY279.png


练习:

1、一公司原来使用的是192.168.1.0/24这个标准网络,现在想为公司中每个部门(共6个)单独配置一个子网,其中最大一个部门要分配IPv4地址的数量不超过25个。求每个子网的子网掩码、地址范围、网络地址和广播地址。

192.168.1.0是C类网络,默认掩码为255.255.255.0

子网数: 2^2<6<2^3,就是要像主机位借3个位当作网络位

子网掩码为:/27,   255-(2**5-1)=224  所以掩码为255.255.255.224

每个子网的可用主机数:主机位还剩下5位:2^5 -2=30>25(减去全是0的网络地址和全是1广播地址

每个子网的地址范围

192.168.1.1 - 192.168.1.30   0,31

33 - 62               32,63

65 - 94               64,95

97 - 126              96,127            

129 - 158             130,159

161 - 190             161,191

193 - 222             192,223

225 - 254             224,255

就是说192.168.1.30/27和192.168.1.60/27属于不同网络,要三层路由能才互通

  这个示例是已知要划分的子网数和最大地址数。具体的划分方法很简单,先结合所需的子网数和最大地址数确定子网的网络ID”主机ID”,然后根据主机ID”确定子网的地址块大小,其它的就自然确定了。

下面是具体的计算步骤:

 (1)本示例中,部门数为6个,但我们知道VLSM所划分的子网数都必须是2n数,可以看到与6最接近的就是划分成8个子网。而划分8个子网需要向主机ID”3位,这样子网的主机ID”位数就仅有5位(8-3)了,则每个子网可使用的IPv4地址数为30个(25=32,再减去每个子网中不可分配给节点使用的网络地址和广播地址),恰好符合该公司中各部门的最大地址数要求。

 (2)知道了新主机ID”大小,也就是知道了各子网的地址块大小。本示例中新主机ID”5位,大小为3225)。

 (3)根据以上得出的地址块大小,再根据以上节介绍的公式可得出子网掩码为:原网络ID”255.255.255.256-32),即255.255.255.224

 (4)同样,知道了地址块大小,也就是知道了每个子网的地址范围。本示例的地址块大小为32,也就是把整个原来C类网络中256个地址按每块32地址划分成8等份(要注意的是,第一个地址要从0开始计算),得到的8个子网的地址范围如下:192.168.1.0~192.168.1.31192.168.1.32~192.168.1.63192.168.1.64~192.168.1.95192.168.1.96~192.168.1.127192.168.1.128~192.168.1.159192.168.1.160~192.168.1.191192.168.1.192~192.168.1.223192.168.1.224~192.168.1.225

   各子网的地址范围知道了,自然就知道了它们的网络地址和广播地址了。每个子网的网络地址是对应地址段中的第一个地址,每个子网的广播地址是对应地址段中的最后一个地址。然后随便选择其中5个子网使用即可,最好是5个连续的子网,这样方便进行路由汇总。同时如果你的设备不支持全0子网和全1子网的话,则不要选择第一个和最后一个子网。


2、每个子网有不超过58个节点要分配IPv4地址,最合适的子网掩码是(    )。

A:255.255.255.192B:255.255.255.248

C:255.255.255.224D:255.255.255.240

不超过58个主机,肯定是C类地址,标准掩码为/24

2**5<58<2**6,所以主机位至少要有6位,可以借2位给网络位,那掩码为/26,255-(2**6—1)=192


答案:A


3、IPv4地址为202.112.14.137,子网掩码为255.255.255.224,求:所在子网的网络地址和广播地址各是什么?

IP:   202.112.14.1000 01001

掩码:255.255.255.1110 0000

子网:202.112.14.1000 0000   

子网数:2^3=8

每个子网的地址范围:0-31,32-63,64-95,96-127,128-159,160-191,192-223,224-255

答案:网络地址:202.112.14.128

    广播地址:202.112.14.159


超网(supernetting)

子网划分是把一个网络划分成为多个不同的网络,而构造超网则是把网络前缀都相同的连续的ip地址组成一个“CIDR地址块”。

其中CIDR(Classless Inter_Domain Routing)是无分类域间路由选择。使用超网能够减少路由表中的项目、减轻路由表的负担。

CIDR消除了传统的A类、B类和C类地址以及划分子网的概念,把32位的IP地址划分为两个部分。如:128.14.35.7/20是某个CIDR地址块中的一个地址,其前20位是网络前缀(用下划线表示的部分),后面的12位为主机号:

128.14.35.7/20= 10000000 00001110 00100011 00000111

其地址掩码,也叫子网掩码是:11111111 11111111 11110000 00000000 (20个连续的1),即斜线后面的数字就是地址掩码中1的个数。

若某个公司拥有地址块 206.0.64.0/18 ,即相当于有64个C类网络。

再举个简单的例子:

192.168.0.0/24   192.168.1.0/24   192.168.2.0/24   192.168.3.0/24  这四个网络,通过CIDR可以汇总成一个超网192.168.0.0/22 ,因为这四个网络 的前22 位网络号相同。

就是向网络位借主机位咯,增加主机数,


1、利用子网数目计算子网掩码

把B类地址172.16.0.0划分成30个子网络,它的子网掩码是多少?

①将子网络数目30转换成二进制表示11110

②统计一下这个二进制的数共有5位

③注意:当二进制数中只有一个1的时候,所统计的位数需要减1(例如:10000要统计为4位)

④将B类地址的子网掩码255.255.0.0主机地址部分的前5位变成1

⑤这就得到了所要的子网掩码(11111111.11111111.11111000.00000000)255.255.248.0。

 

2、利用主机数目计算子网掩码

把B类地址172.16.0.0划分成若干子网络,每个子网络能容纳500台主机,它的子网掩码是多少?

①把500转换成二进制表示111110100

②统计一下这个二进制的数共有9位

③将子网掩码255.255.255.255从后向前的9位变成0

④这就得到了所要的子网掩码(11111111.11111111.11111110.00000000)255.255.254.0。


3、利用子网掩码计算最大有效子网数

A类IP地址,子网掩码为255.224.0.0,它所能划分的最大有效子网数是多少?

①将子网掩码转换成二进制表示11111111.11100000.00000000.00000000

②统计一下它的网络位共有11位

③A类地址网络位的基础数是8,二者之间的位数差是3

④最大有效子网数就是2的3次方,即最多可以划分8个子网络。

 

4、利用子网掩码计算最大可用主机数

A类IP地址,子网掩码为255.252.0.0,将它划分成若干子网络,每个子网络中可用主机数有多少?

①将子网掩码转换成二进制表示11111111.11111100.00000000.00000000

②统计一下它的主机位共有18位

③最大可用主机数就是2的18次方减2(除去全是0的网络地址和全是1广播地址),即每个子网络最多有262142台主机可用。

 

5、利用子网掩码确定子网络的起止地址

B类IP地址172.16.0.0,子网掩码为255.255.192.0,它所能划分的子网络起止地址是多少?

利用子网掩码计算,最多可以划分2**2个子网络

利用子网掩码计算,每个子网络可容纳2**14台主机(包括网络地址和广播地址)

用2**14除以2**8(网段内包括网络地址和广播地址的全部主机数),结果是2**6

④具体划分网络起止方法如下:

172.16.0.0~172.16.63.255

172.16.64.0~172.16.127.255

172.16.128.0~172.16.191.255

172.16.192.0~172.16.255.255

 

A类IP地址段:1.0.0.0~126.255.255.255 私有地址段:10.0.0.0~10.255.255.255

wKiom1hSg2KTmQC6AAMmCxmw9dA675.jpg


B类IP地址段:128.0.0.0~191.255.255.255 私有地址段:172.16.0.0~172.31.255.255wKioL1hSg1nQDPl3AAIyyyDds9s100.jpg


C类IP地址段:192.0.0.0~223.255.255.255 私有地址段:192.168.0.0~192.168.255.255
wKiom1hSg1Lg17mgAAFDWBatLe0621.jpg