计算机网络之ip协议

时间:2024-04-11 22:54:58

前言

最近在学习中国大学mooc的计算机网络课程,主讲老师是哈工大的李全龙、聂兰顺老师,觉得关于IP协议部分讲的非常详细非常好,所以这里整理了一篇学习笔记,仅供参考,以下是课程慕课网的链接:https://www.icourse163.org/course/HIT-154005.

一、IP协议简介

IP协议是实现计算机网络通信的核心协议,基于IP协议的TCP/IP协议和UDP/IP协议是大部分计算机完成网络通信的基础协议,IP协议规定了任何接入公共互联网的设备都只能拥有唯一的IP,相当于每个接口的唯一身份识别ID,这样两台需要通信的设备,只需要知道了彼此的IP地址,就能保证信息通过路由准确无误地到达。

二、IPv4协议

1、IP编址

  • IPv4地址是由一串32比特的二进制数所表示,为了记忆地方便,一般以8比特为一组写成点分十进制地形式,例如:二进制IP地址10000000 00000000 00000000 00000001写成点分十进制形式就是128.0.0.1
  • 为了方便划分子网,IP地址在内部又进行了划分,其中高位比特被称为网络号(NetID),用于划分出一块一块地网络,而低位比特被称为主机号(HostID),用于区分当前网络下地具体主机,例如对于IP地址10000000 00000000 00000000 00000001,如果前16比特是网络号,后16比特是主机号,我们可以说是处于128.0网络下的0.1号主机接口。

2、有类IP地址

有类IP地址的划分最初是为了解决IP地址的网络号和主机号的分配问题,具体来说,网络号占的比特位越多,能区分的网络数越多,但是相应的,能区分的主机数就会减少。因此为了解决不同网络规模下的IP地址分配问题,提出了有类IP地址分类。
具体分类方法采用二分法分类,分类形式如下:
计算机网络之ip协议
以下是文字版:

  • A类地址(50%):最高比特位是0,网络号占8比特,主机号占24比特
  • B类地址(25%):最高比特位是10,网络号占16比特,主机号占16比特
  • C类地址(12.5%):最高比特位是110,网络号占24比特,主机号占8比特
  • D类地址(6.25%):最高比特位是1110,不进行网络号和主机号的区分,特殊地址,用作多播和组播
  • E类地址(6.25%):最高比特位是1111,不进行网络号和主机号的区分,保留地址,用作研究

另外,在ABC三类IP地址中,还有一些特殊的IP地址,有特殊的用途,如下:
计算机网络之ip协议
除了以上的特殊地址,ABC三类地址中还保留了一些私有地址,这类IP地址只能用于内部网络通信,在公共互联网无效的,路由器也不会转发这类IP地址,这些地址对于公共互联网是不可见的,并且在不同局域网下这类地址可以复用。具体是:

  • A类:10.x.x.x
  • B类:172.16.x.x - 172.31.x.x
  • C类:192.168.0.x - 192.168.255.x

3、子网划分

  • 从以上IP地址分类可以看出,对于A类IP地址,其可以区分的网络数很少,但是区分的主机数却非常庞大,对于一个组织,如果分配了一个A类IP地址但是其主机数量有限,不能完全使用所有的主机号,那么势必造成IP地址的浪费,为了解决这一问题,就要求对子网作进一步的划分,子网掩码就是为了解决子网划分的问题

  • 具体做法就是在原来IP地址的主机号的里面,重新拿出一部分比特位用作子网的划分,一般是将原来IP地址主机号的高位拿出几位作为子网号(SubID)

  • 例如IP地址:10000000 00000000 00000000 00000001 属于B类地址,其前16位是网络号,为了进一步划分子网,我们可以在其剩余的16位主机号中指定几位,作为子网号,剩余位作为主机号。

  • 子网掩码是用作表示上述划分方式。在形式上于IP地址相同表示为一串32比特的二进制数,可以表示成点分十进制的形式。在子网掩码中原IP地址的对应网络号和子网号全部取1,主机号取0,就是对应的子网掩码。

  • 例如IP地址:10000000 00000000 00000000 00000001,如果我们用第17-24位进一步划分子网,那么其所对应的子网掩码就是:11111111 11111111 11111111 00000000 ,对应的点分十进制形式就是255.255.255.0

  • 因此还可以知道,对于ABC三类IP地址,其默认的子网掩码为:

    • A类:255.0.0.0
    • B类:255.255.0.0
    • C类:255.255.255.0
  • 因此,通过IP地址和子网掩码,我们就可以完全确定某一个IP地址对应的子网大小,确定这个网络的规模,通过IP地址与子网掩码确定某一个网络,可以将32位IP地址与子网掩码做按位与运算,就可以提取出这个这个子网的子网地址。

三、CIDR与路由聚集

  • CIDR全称是无类域间路由,是划分子网的一种新技术,打破了传统的A类、B类、C类地址的划分模式,CIDR将前面子网划分的网络号(NetID)和子网号(SubID)统称为一个网络前缀(Prefix),并且可以是任意长度,例如对于IP地址:10000000 00000000 00000000 00000001我们想用前15位划分子网,那么采用CIDR方法划分就可以写作128.0.0.1/15,上面就表示当前IP地址是使用IP地址前15位来划分的网络。

  • 值得一提的是,相对于传统的子网划分技术,CIDR技术能够大大提高IPv4地址空间的分配效率,以及这种层级的编址方式,使得路由寻址的效率大大提高

四、IPv6协议简介

  • IPv6协议可以认为是IPv4协议的升级,主要针对的是IPv4地址分配殆尽的问题。

  • IPv6协议是使用128比特的二进制数表示地址,大大扩展了IPv4的地址空间,被形象的称为“可以为星球的每一个沙砾分配一个地址空间”。

  • 为了表示IPv6地址,采用的是冒号分割的16进制的地址表示形式,具体来说是将128比特的数分成8组每一组包含16比特,用冒号分割,在每组中每4比特表示成一个16进制的数其中前导0可以省略。例如以下就是一个典型的IPv6地址的表示:F00F:0:0:FFFF:A90F:F3:A:1

  • IPv6地址还支持压缩形式的写法,可以将多个连续的0用::表示。例如:FFFF:0:0:0:0:0:0:1可以表示为FFFF::1

  • 同时,为了兼容IPv4地址IPv6特地将前80个比特全为0,后面16个比特全为1接下来32比特为IPv4地址这样的地址空间专门用于和IPv4地址兼容的表示,例如对于IPv4地址128.0.0.1表示成IPv6的兼容形式是:0:0:0:0:0:FFFF:128.0.0.1,压缩形式是 ::FFFF:128.0.0.1。

  • 在IPv6网络中不再使用网络掩码的概念来划分子网,取而代之的是全部使用CIDR的形式来划分子网。例如F:1::1/46表示的就是用前46为来唯一标识网络。

  • 在url表示中,为了防止产生一些歧义,常常使用的是方括号将IPv6地址括起来的表示形式,例如http://[FFFF:A1:D3AF::1]:80。

  • IPv6地址有三种基本类型:

    • 单播:一对一通信
    • 多播:一对多通信
    • 任意播:一对多(之一,最近的多播组成员)通信
  • IPv4向IPv6过渡:隧道技术,同时支持IPv4和IPv6双协议的路由器。

五、Tips

1、Windows查看IP地址的方法

按Win+R键,打开运行窗口,输入cmd,打开Windows控制台,输入ipconfig命令,就能查看当前ip地址。

2、Linux查看ip地址的方法

打开Linux控制台,输入ifconfig命令,就能查看IP地址。