不用的子网内有相同的ip_漫话TCP/IP:网络层-IP寻址(1)

2c411c18faacad3ce188df095c9445dd.png

序言

TCP/IP的心脏是网络层。网络层的主要作用是“实现终端节点之间的通信”。这种终端节点之间的通信也叫“点对点(end-to-end)通信”。

网络层的下一层数据链路层的主要作用是在互连同一种数据链路的节点之间进行包传递。而一旦跨越多种数据链路,就需要借助网络层。网络层可以跨越不同的数据链路,即使是在不同的数据链路上也能实现两端节点之间的数据包传输。数据链路层提供直连两个设备之间的通信功能。与之相比,作为网络层的IP则负责在没有直连的两个网络之间进行通信传输。

IP大致分为三大作用模块,它们是IP寻址、路由控制以及IP分包与组包。以下就这三个要点逐一介绍。

IP地址

前面介绍过数据链路的MAC地址。MAC地址正是用来标识同一个链路中不同计算机的一种识别码。

表弟:漫话TCP/IP:数据链路层-MAC地址(3)​zhuanlan.zhihu.com

在网络层通信时,用IP地址识别主机和路由器。为了保证正常通信,有必要为每个设备配置正确的IP地址。在互联网通信中,全世界都必须设定正确的IP地址。否则,根本无法实现正常的通信。因此,IP地址就像是TCP/IP通信的一块基石。

  • IP地址定义

IP地址(IPv4地址)由32位正整数来表示。TCP/IP通信要求将这样的IP地址分配给每一个参与通信的主机。IP地址在计算机内部以二进制方式被处理。

然而,由于人类社会并不习惯于采用二进制方式,需要采用一种特殊的标记方式。那就是将32位的IP地址以每8位为一组,分成4组,每组以“.”隔开,再将每组数转换为十进制数。下面举例说明这一方法。

37d82895a30fc95759fe9d7c24b72512.png

将表示成IP地址的数字整体计算,会得出如下数值。

2^32=4 294 967 296

从这个计算结果可知,最多可以允许43亿台计算机连接到网络。实际上,IP地址并非是根据主机台数来配置的,而是每一台主机上的每一块网卡(NIC)都得设置IP地址。通常一块网卡只设置一个IP地址,其实一块网卡也可以配置多个IP地址。此外,一台路由器通常都会配置两个以上的网卡,因此可以设置两个以上的IP地址。

  • IP地址结构

IP地址由“网络标识(网络地址)”和“主机标识(主机地址)”两部分组成。

IP地址 ::= {<网络地址>,<主机地址>}
  1. 网络地址:网络地址必须保证相互连接的每个段的地址不相重复。而相同段内相连的主机必须有相同的网络地址。

2. 主机地址:不允许在同一个网段内重复出现。由此,可以通过设置网络地址和主机地址,在相互连接的整个网络中保证每台主机的IP地址都不会相互重叠。即IP地址具有了唯一性

  • IP地址分类

IP地址分为五大类:A类、B类、C类、D类和E类,如下图所示:

8d4a8701bcb3e1b26837a0183fcf79b8.png
  1. A类地址

A类IP地址是首位以“0”开头的地址。从第1位到第8位是它的网络标识。用十进制表示的话,0.0.0.0~127.0.0.0是A类的网络地址。A类地址的后24位相当于主机标识。因此,一个网段内可容纳的主机地址上限为16,777,214个。

2. B类地址

B类IP地址是前两位为“10”的地址。从第1位到第16位是它的网络标识。用十进制表示的话,128.0.0.1~191.255.0.0是B类的网络地址。B类地址的后16位相当于主机标识。因此,一个网段内可容纳的主机地址上限为65,534个。

3. C类地址

C类IP地址是前三位为“110”的地址。从第1位到第24位是它的网络标识。用十进制表示的话,192.168.0.0~223.255.255.0是C类的网络地址。C类地址的后8位相当于主机标识。因此,一个网段内可容纳的主机地址上限为254个。

4. D类地址

D类IP地址是前四位为“1110”的地址。从第1位到第32位是它的网络标识。用十进制表示的话,224.0.0.0~239.255.255.255是D类的网络地址。D类地址没有主机标识,常被用于多播。

关于分配IP主机地址的注意事项:

在分配IP地址时关于主机标识有一点需要注意。即要用比特位表示主机地址时,不可以全部为0或全部为1。因为全部为0表示对应的网络地址或IP地址不可获知的情况下才使用。而全部为1的主机地址通常作为广播地址。因此,在分配过程中,应该去掉这两种情况。这也是为什么C类地址每个网段最多只能有254(28-2=254)个主机地址的原因。
  • 应用
  1. 广播

广播地址用于在同一个链路中相互连接的主机之间发送数据包。将IP地址中的主机地址部分全部设置为1,就成为了广播地址。例如把172.20.0.0/16用二进制表示如下:

10101100.00010100.00000000.00000000 (二进制)

将这个地址的主机部分全部改为1,则形成广播地址:

10101100.00010100.11111111.11111111 (二进制)

再将这个地址用十进制表示,则为172.20.255.255。

广播分为本地广播和直接广播两种。在本网络内的广播叫做本地广播;在不同网络之间的广播叫做直接广播。

acc9c91a3b6ecad4dc27e28b5e28c9e2.png

2. IP多播

多播用于将包发送给特定组内的所有主机。由于其直接使用IP协议,因此也不存在可靠传输。而随着多媒体应用的发展,对于向多台主机同时发送数据包,在效率上的要求也日益提高。

在电视会议系统中对于1对N、N对N通信的需求明显上升。而具体实现上往往采用复制1对1通信的数据,将其同时发送给多个主机的方式。在人们使用多播功能之前,一直采用广播的方式。那时广播将数据发给所有终端主机,再由这些主机IP之上的一层去判断是否有必要接收数据。是则接收,否则丢弃。

然而这种方式会给那些毫无关系的网络或主机带来影响,造成网络上很多不必要的流量。况且由于广播无法穿透路由,若想给其他网段发送同样的包,就不得不采取另一种机制。因此,多播这种既可以穿透路由器,又可以实现只给那些必要的组发送数据包的技术就成为必选之路了。

多播是基于UDP套接字传输数据的基础完成,向网络传递一个多播数据包时,路由器将复制该数据包并传递到多个主机,多播的传输需要借助路由器完成,正是由于这样的特性,大大节省了网络流量,减少了占用带宽,同时也减少了发送端的重复无用的工作,多播主要用于“多媒体数据的实时传输”。


要实现多播通信,要求介于多播源和接收者之间的路由器、集线器、交换机以及主机均需支持IP多播。目前,IP多播技术已得到硬件、软件厂商的广泛支持。

01a671778d431cce0221ae5ea705180c.png


子网掩码

  • 分类造成浪费?

网络标识相同的计算机必须同属于同一个链路。例如,架构B类IP网络时,理论上一个链路内允许6万5千多台计算机连接。然而,在实际网络架构当中,一般不会有在同一个链路上连接6万5千多台计算机的情况。因此,这种网络结构实际上是不存在的。

因此,直接使用A类或B类地址,确实有些浪费。随着互联网的覆盖范围逐渐增大,网络地址会越来越不足以应对需求,直接使用A类、B类、C类地址就更加显得浪费资源。那么现在是如何解决这种IP地址浪费的呢?

  • 如何解决浪费?

现在,一个IP地址的网络标识和主机标识已不再受限于该地址的类别,而是由一个叫做“子网掩码”的识别码通过子网网络地址细分出比A类、B类、C类更小粒度的网络。这种方式实际上就是将原来A类、B类C类等分类中的主机地址部分用作子网地址,可以将原网络分为多个物理网络的一种机制。

自从引入了子网以后,一个IP地址就有了两种识别码。一是IP地址本身,另一个是表示网络部的子网掩码。子网掩码用二进制方式表示的话,也是一个32位的数字。它对应IP地址网络标识部分的位全部为“1”,对应IP地址主机标识的部分则全部为“0”。由此,一个IP地址可以不再受限于自己的类别,而是可以用这样的子网掩码自由地定位自己的网络标识长度。当然,子网掩码必须是IP地址的首位开始连续的“1”。

对于子网掩码,目前有两种表示方式。以172.20.100.52的前26位是网络地址的情况为例,以下是其中一种表示方法,它将IP地址与子网掩码的地址分别用两行来表示。

517778c946e86ce2d644ddcfdd24a21c.png

另一种表示方式如下所示。它在每个IP地址后面追加网络地址的位数用“/”隔开。

275d93907f428d74596ce1cd533e1d26.png

039a34560cba5ec9ffb7fc92d0512032.png

全局地址与私有地址

起初,互联网中的任何一台主机或路由器必须配有一个唯一的IP地址。一旦出现IP地址冲突,就会使发送端无法判断究竟应该发给哪个地址。而接收端收到数据包以后发送回执时,由于地址重复,发送端也无从得知究竟是哪个主机返回的信息,影响通信的正常进行。

然而,随着互联网的迅速普及,IP地址不足的问题日趋显著。如果一直按照现行的方法采用唯一地址的话,会有IP地址耗尽的危险。

于是就出现了一种新技术。它不要求为每一台主机或路由器分配一个固定的IP地址,而是在必要的时候只为相应数量的设备分配唯一的IP地址。尤其对于那些没有连接互联网的独立网络中的主机,只要保证在这个网络内地址唯一,可以不用考虑互联网即可配置相应的IP地址。

不过,即使让每个独立的网络各自随意地设置IP地址,也可能会有问题。于是又出现了私有网络的IP地址。它的地址范围如下所示:

937b979e88e908d339e76b2fc988f2bb.png

接下来看下我们的手机IP地址:

# ifconfig

wlan0     Link encap:Ethernet  HWaddr 9a:7f:fe:40:f2:6b  Driver icnss
          inet addr:10.79.161.83  Bcast:10.79.167.255  Mask:255.255.248.0 
          inet6 addr: fe80::987f:feff:fe40:f26b/64 Scope: Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:67373 errors:0 dropped:0 overruns:0 frame:0 
          TX packets:69062 errors:0 dropped:0 overruns:0 carrier:0 
          collisions:0 txqueuelen:3000 
          RX bytes:30237746 TX bytes:10188758 

我们的手机IP地址正式私有网络的A类IP地址。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值