计算机网络基础之IP地址详解
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.IP地址概述
1>.什么是IP地址
我们为什么要使用逻辑地址(IP地址)来标识网络设备,而不采用网卡设备本身就有的世界唯一标识物理地址(MAC地址)呢?IP地址的使用到底是基于什么考虑呢?
因此使用IP地址作为设备的唯一标识并不是它们的唯一理由,或者说这个理由并不充分,因为MAC地址已经可以标识设备唯一了,何必再来一个IP地址呢?(虽说ipv4写起来比较简单,但是ipv6,ipv9写起来可都不简单啊)
IP地址可唯一标识IP网络中的每台设备的所在位置,这才是它真正存在的意义,而MAC地址顶多能标识它是哪个厂家生产的,并不能标识它所处于网络架构的网络位置。
每台主机(计算机、网络设备、外围设备)必须具有唯一的地址
IP地址由两部分组成
网络ID:
标识网络
每个网段分配一个网络ID
主机 ID:
标识单个主机
由组织分配给各设备
2>.IPv4地址格式:点分十进制记法
3>.将IP地址转换成十进制并ping它
[root@node101.yinzhengjie.org.cn ~]# ping -w 3 192.168.30.1 #我们ping一个物理机的IP地址 PING 192.168.30.1 (192.168.30.1) 56(84) bytes of data. 64 bytes from 192.168.30.1: icmp_seq=1 ttl=127 time=0.800 ms 64 bytes from 192.168.30.1: icmp_seq=2 ttl=127 time=1.30 ms 64 bytes from 192.168.30.1: icmp_seq=3 ttl=127 time=0.572 ms --- 192.168.30.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2049ms rtt min/avg/max/mdev = 0.572/0.891/1.302/0.305 ms [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# echo "ibase=2;11000000" | bc #紧接着我们将以点分割的4个数字再转换成二进制。 192 [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# echo "ibase=2;10101000" | bc 168 [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# echo "ibase=2;00011110" | bc 30 [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# echo "ibase=2;00000001" | bc 1 [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# echo "ibase=2;11000000101010000001111000000001" | bc #将上面转换成功的二进制合并在一起换算成十进制 3232243201 [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]# ping -w 3 3232243201 #使用上面计算的数字去ping,发现照样ping的是"192.168.30.1"这个IP地址。 PING 3232243201 (192.168.30.1) 56(84) bytes of data. 64 bytes from 192.168.30.1: icmp_seq=1 ttl=127 time=0.631 ms 64 bytes from 192.168.30.1: icmp_seq=2 ttl=127 time=1.25 ms 64 bytes from 192.168.30.1: icmp_seq=3 ttl=127 time=1.38 ms --- 3232243201 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 0.631/1.090/1.382/0.328 ms [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]#
二.IP地址分类
1>.A类地址计算方式
第一个字节(最高字节)为网络位,最高位是"0"。第一个字节变化二进制表示为:"0000 0001"到"0111 1111",共127个地址减去回环地址,剩余126个。 地址范围"1.0.0.0"到"127.255.255.255",二进制表示为:"00000001 00000000 00000000 00000000"到"01111111 11111111 11111111 11111111"。 最后一个IP地址是广播地址。默认子网掩码(占32bits,对应于网络ID位为1,对应主机ID位为0)是"255.0.0.0"。 一个网络中主机最大数公式 = 2^主机ID位数(32-网络ID位数) - 2 = 2^(32-网络ID位数) - 2 A类地址每一个网络中主机个数等于 256^3 -2 = 1677716 -2 = 1677714.即2^24 -2 = 1677714 私网地址:10.0.0.0
2>.B类
前2个字节为网络位,最高位是"10",其变化为128.0~191.255,相当于"10000000 00000000"到"10111111 11111111",实际上就是最后14为变化,共2^14 = 16834个网络。 B类地址范围128.0.0.0~191.255.255.255。二进制表示为:"10000000 00000000 00000000 00000000"到"10111111 11111111 11111111 11111111"。 最后一个IP地址是广播地址,默认子网掩码是255.255.0.0 B类地址每一个网络中主机个数等于256^2 -2 = 65535 - 2 = 65534,即2^16 -2 = 65534 私网地址:172.16.0.0-172.31.0.0
3>.C类
前3个字节为网络位,最高位是"110",其变化位192.0.0~223.255.255,相当于"11000000 00000000 00000000"到"11011111 11111111 11111111",实际上就是后21位变化,共2^21 = 2097152个网络。 C类IP地址地址范围192.0.0.0到223.255.255.255。二进制表示为:"11000000 00000000 00000000 00000000"到"11011111 11111111 11111111 11111111"。 最后一个是广播地址,默认子网掩码是255.255.255.0 C类地址每个网络中主机个数等于256 - 2 = 254,即2^8 -2 = 254。 私网地址:192.168.0.0-192.168.255.0
4>.D类
多播地址,或组播地址。
多播地址最高4位必须是1110,那么地址范围就是:"224.0.0.0"到"239.255.255.255"。
224.0.0.1特质所有主机。
5>.E类
实验室使用地址,即保留未使用,那么地址范围就是:"240.0.0.0"到"255.255.255.255"
6>.无类别域间路由(Classless Inter-Domain Routing、CIDR)
网络id位数不确定,CIDR表示法:IP/网络ID位数。 子网掩码(netmask)由32bits构成,对应于网络ID位为"1",对应于主机位为"0"。 温馨提示:(无类域间路由和子网划分的区别) 子网划分可以增加网段数量并减少主机数量。 无类域间路由能够分配多个符合条件的IP地址,然后抽离出这些地址中公共的部分来表示聚合成一个网络号,这样能够减轻路由表的大小减少路由通告。 一个网络中主机最大数公式 = 2^主机ID位数(32-网络ID位数) - 2 = 2^(32-网络ID位数) - 2 网络ID计算公式 = IP地址与子网掩码做与("&")运算(和"0"做与运算都是0,和"1"做与运算就保留原状) 举例: "203.110.200.124/20"是用CIDR表示法。请分别说明主机数,子网掩码和网络ID。 主机数为 : 2(32-22)- 2 = 1022 子网掩码 : 255.255.252.0 网络ID为 : 203.110.200.0/22 "100.123.199.124/20"是用CIDR表示法。请分别说明主机数,子网掩码,网络ID,最小IP和最大IP地址。
主机数为 : 2^(32 - 20) - 2
子网掩码为 : 255.255.240.0
网络ID为 : 100.123.192.0/20
最小和最大IP : 100.123.192.1~100.123.207.254
遇到类似上面的题不要慌,先把十进制转换成二进制,答案就迎刃而解啦~
7>.公共IP地址
8>.私有IP地址
9>.特殊地址
0.0.0.0 0.0.0.0不是一个真正意义上的IP地址。它表示所有不清楚的主机和目的网络 255.255.255.255 限制广播地址。对本机来说,这个地址指本网段内(同一广播域)的所有主机 127.0.0.1~127.255.255.254 本机回环地址,主要用于测试。在传输介质上永远不应该出现目的地址为“127.0.0.1”的 数据包 224.0.0.0到239.255.255.255 组播地址,224.0.0.1特指所有主机,224.0.0.2特指所有路由器。224.0.0.5指OSPF 路由器,地址多用于一些特定的程序以及多媒体程序 169.254.x.x 如果Windows主机使用了DHCP自动分配IP地址,而又无法从DHCP服务器获取地址,系统会为主机分配这样地址
10>.保留地址(网络ID和广播地址)
三.子网划分
想要将一个大网划分成多个小网,网络ID位变多,主机ID位变少,即网络ID向主机ID借N位,分成2^N个小网。 举例: 将"172.0.0.0/8"分配给公司32个部门,请对其进行子网划分。 1>.算出子网的子网掩码 由于想要划分32个子网,根据公式2 ^ N >= 32,因此这个N为5,因此在网络位ID为8的基础上增加5位,此时网络位共计13位,最终算出子网掩码位:"255.248.0.0"。 2>.每个子网的最小,最大子网的网络ID 最小子网的id为:"172.0.0.0/13",最大的子网为:"172.248.0.0/13"。 3>.每个子网主机数 2^(32-8-5)- 2 = 2^19 - 2 4>.第20个子网分给"人事部门"使用,求出最小IP,最大IP范围。 我们很容易发现第20个子网的网络ID为"172.152.0.0/13",第21个子网为"172.160.0.0/13",因此第二十个子网的最小IP为"172.152.0.1/13",第二十个子网的最大IP为"172.159.255.254"。 将"192.152.0.0/13"为某公司使用,现在需要将其划分成15个业务线,划分各自子网。 1>.算出子网掩码 2^N >= 15 算出N为4,因此网络位需要向主机位借4个主机位,即实际网络位为17位,得子网掩码为"255.255.128.0"。 2>.最小子网,最大子网的网络ID 最小子网为:"192.152.0.0/17",最大子网为:"192.159.128.0/17" 3>.每个子网的主机数 2(32 - 17) - 2 = 2^15 - 2 4>.最大子网的最小IP,最大IP范围 最小IP,最大IP范围为:192.159.128.1~192.159.255.254。
四.合并超网
把多个小网合并成一个大网,主机位ID需要向网络ID借位。
方法就是写出需要合并超网的IP地址并转换成二进制,找到最大公约数就是新的网络位。 举例: 如下图所示,请将220.78.168.0/24,220.78.169.0/24,220.78.175.0/24合并成一个网段。 分析(取相同点作为网络ID,将不同点部分转换成二进制): 220.78.168.0 转换成二进制为 : 220.78.10101 000.0
220.78.169.0 转换成二进制为 : 220.78.10101 001.0
220.78.175.0 转换成二进制为 : 220.78.10101 111.0
挑完相同点,不难发现转换成二进制的三个数字前5位是相同的,因此取这前5位相同的作为网络位ID,算出最得为"220.78.168.0/21",因此下图的路由表写的8条记录太过繁琐,直接使用计算的"220.78.160.0/21"一条记录来来替代图中的8条记录即可。
五.跨网络通信
跨网络通信:
跨网络通信就需要使用路由,通过路由器将数据包从一个网络发往另一个网络。
路由器上维护者路由表,它知道如何将数据发往另外的网络。路由表由三部分组成:
目标网络ID :目标IP所在的网络ID。
接口 : 本设备要发送数据包到目标,从哪个接口发送出来,才能到达。
网关 : 到达目标网络,需要将数据交给下一个路口哪个接口的对应的IP。
路由器所有端口都有自己的IP地址,这些IP地址往往处在不同的网络,所以,路由器连接了不同网络。
路由表记录着路由设备所有端口对应的网络,分为静态,动态配置。
静态路由 : 由管理员手动配置的固定路由信息。
动态路由 : 网络中的路由器,根据实际网络拓扑变化,互相通信传递路由信息,利用这些路由信息通过路由选择协议动态计算,并更新路由表。常见的协议有RIP,OSPF等等。
路由分类:
主机路由
网络路由
默认路由
优先级:精度越高,优先级越高
[root@node101.yinzhengjie.org.cn ~]# route -n #在Linux操作系统查看路由表 Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 10.0.2.2 0.0.0.0 UG 100 0 0 enp0s3 0.0.0.0 172.30.1.254 0.0.0.0 UG 101 0 0 enp0s8 10.0.2.0 0.0.0.0 255.255.255.0 U 100 0 0 enp0s3 172.30.1.0 0.0.0.0 255.255.255.0 U 101 0 0 enp0s8 [root@node101.yinzhengjie.org.cn ~]# [root@node101.yinzhengjie.org.cn ~]#
C:Usersyinzhengjie>route print #在windows操作系统查看路由表 =========================================================================== 接口列表 7...04 92 26 0c c3 68 ......Realtek PCIe GbE Family Controller 15...0a 00 27 00 00 0f ......VirtualBox Host-Only Ethernet Adapter 20...48 a4 72 73 26 b7 ......Microsoft Wi-Fi Direct Virtual Adapter 9...4a a4 72 73 26 b6 ......Microsoft Wi-Fi Direct Virtual Adapter #2 2...00 50 56 c0 00 01 ......VMware Virtual Ethernet Adapter for VMnet1 16...00 50 56 c0 00 08 ......VMware Virtual Ethernet Adapter for VMnet8 21...48 a4 72 73 26 b6 ......Intel(R) Wireless-AC 9560 17...48 a4 72 73 26 ba ......Bluetooth Device (Personal Area Network) 1...........................Software Loopback Interface 1 =========================================================================== IPv4 路由表 =========================================================================== 活动路由: 网络目标 网络掩码 网关 接口 跃点数 0.0.0.0 0.0.0.0 192.168.124.1 192.168.124.14 50 127.0.0.0 255.0.0.0 在链路上 127.0.0.1 331 127.0.0.1 255.255.255.255 在链路上 127.0.0.1 331 127.255.255.255 255.255.255.255 在链路上 127.0.0.1 331 172.30.1.0 255.255.255.0 在链路上 172.30.1.254 281 172.30.1.0 255.255.255.0 在链路上 172.30.1.1 291 172.30.1.1 255.255.255.255 在链路上 172.30.1.1 291 172.30.1.254 255.255.255.255 在链路上 172.30.1.254 281 172.30.1.255 255.255.255.255 在链路上 172.30.1.254 281 172.30.1.255 255.255.255.255 在链路上 172.30.1.1 291 192.168.30.0 255.255.255.0 在链路上 192.168.30.1 291 192.168.30.1 255.255.255.255 在链路上 192.168.30.1 291 192.168.30.255 255.255.255.255 在链路上 192.168.30.1 291 192.168.124.0 255.255.255.0 在链路上 192.168.124.14 306 192.168.124.14 255.255.255.255 在链路上 192.168.124.14 306 192.168.124.255 255.255.255.255 在链路上 192.168.124.14 306 224.0.0.0 240.0.0.0 在链路上 127.0.0.1 331 224.0.0.0 240.0.0.0 在链路上 172.30.1.254 281 224.0.0.0 240.0.0.0 在链路上 192.168.124.14 306 224.0.0.0 240.0.0.0 在链路上 172.30.1.1 291 224.0.0.0 240.0.0.0 在链路上 192.168.30.1 291 255.255.255.255 255.255.255.255 在链路上 127.0.0.1 331 255.255.255.255 255.255.255.255 在链路上 172.30.1.254 281 255.255.255.255 255.255.255.255 在链路上 192.168.124.14 306 255.255.255.255 255.255.255.255 在链路上 172.30.1.1 291 255.255.255.255 255.255.255.255 在链路上 192.168.30.1 291 =========================================================================== 永久路由: 无 IPv6 路由表 =========================================================================== 活动路由: 接口跃点数网络目标 网关 1 331 ::1/128 在链路上 15 281 fe80::/64 在链路上 21 306 fe80::/64 在链路上 16 291 fe80::/64 在链路上 2 291 fe80::/64 在链路上 15 281 fe80::45c6:ef39:7a0f:8319/128 在链路上 16 291 fe80::544d:9ad6:37db:ed12/128 在链路上 21 306 fe80::78b3:2648:f756:276a/128 在链路上 2 291 fe80::a102:801f:4362:59f6/128 在链路上 1 331 ff00::/8 在链路上 15 281 ff00::/8 在链路上 21 306 ff00::/8 在链路上 16 291 ff00::/8 在链路上 2 291 ff00::/8 在链路上 =========================================================================== 永久路由: 无 C:Usersyinzhengjie>
六.动态主机配置协议DHCP
动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)是一个局域网的网络协议,基于UDP协议工作,端口默认是:67。
主要用途就是用于内部网或网络服务供应商自动给网络中的主机分配IP地址。