IP地址,IPV4与IPV6

目录

1.IP地址

2.IPV4

2.1.IPv4数据报格式

2.2.网络号和主机号

2.3.IP地址的分类

2.4.子网划分与子网掩码

2.4.1.子网划分

2.4.2子网掩码

2.5.网络地址转换

3.IPV6

4.从IPv4到IPv6的迁移


1.IP地址

       如果只有一台电脑,所有的数据都会存储在硬盘上,不会和其他的电脑产生任何关系。两台电脑可以使用U盘之类的移动存储介质来拷贝数据或者通过线缆(网线)来传输数据。但是随着加入的设备越来越多,需要的接口数量和线材数量也会越来越多,故出现了交换机。交换机中电脑不再是点对点的连接,而是全部都接入交换机上,为了使到达交换机的数据能够发送到目标主机上,我们就给所有的电脑都设置一个数字的虚拟地址,这个虚拟地址就是IP地址。简单来说,IP地址就是和我们寄快递需要填写的地址一样,只不过它是用来在互联网上传输数据包所使用的。

2.IPV4

       IPV4地址由32位二进制数构成,理论_上可以提供2^32约42.28亿个地址,为了方便记忆和输入,将每8个二进制数为分为一组转换为10进制,变成常用的4个0-255数字的样子,如下图所示:

2.1.IPv4数据报格式

 

 IPv4首部各字段意义

  • 版本:占4位。指IP协议是IPv4还是IPv6,通信双方的版本必须一致。
  • 首部长度:占4位。以4B为单位,最大值为60B。默认情况下首部长度看成20B,此时不使用任何选项(即可选字段)。
  • 总长度:占16位。指首部和数据之和的长度,以1B为单位,因此数据报最大长度为22^{16}-1=65536B,以太网的最大传送单元(MTU)为1500B,因此当一个IP数据包封装成帧时,数据包总长度一定不能超过数据链路层的MTU值。
  • 标识:占16位。它是一个计数器,每产生一个数据报就加1,并赋值给标识字段。但它并不是“序号”(IP是无连接服务)。当一个数据报长度超过网络的MTU时,必须分片,此时每个数据报片都复制一次标识号,以便能重装成原来的数据报。重装数据报是在目的端主机完成的。
  • 标志:占3位。目前只有前两位有效,即MF和DF。MF=1表示后面还有分片;MF=0表示这是最后一个分片。DF=0允许分片;DF=1不允许分片。
  • 片偏移:占13位。指明了每个分片相对于原始报文开头的偏移量,以8B为单位,即每个分片的长度必须是8B的整数倍。
  • 生存时间(TTL):占8位。数据报在网络中可通过的路由器的最大值,标识分组在网络中的寿命,以确保报文不会永远在网络中循环。报文经过的每个路由器都将此字段减1,当此字段等于0时,丢弃该报文,
  • 协议:占8位。指出携带的数据应交给那个传输层协议,值为6表示TCP;值为17表示UDP。
  • 首部检验和:占16位。只检验数据报首部,不检验数据部分。
  • 源地址:占32位。表示发送方的IP地址。
  • 目的地址:占32位。表示接收方的IP地址

2.2.网络号和主机号

      IP地址由网络号+主机号组成,即IP地址::={<网络号>,<主机号>},其中网络号标志主机(或路由器)所连接的网络。一个网络号在整个因特网范围内必须是唯一的。主机号标志该主机(或路由器)。一台主机号在他前面的网络号所指明的网络范围内必须是唯一的。故一个IP地址在整个因特网范围内也是惟一的。

       举例来说,在下图如果把一个地看做是一个局域网,比如南瞻部洲,IP地址都是130.20.11.x,则130.20.11则是南瞻部洲的网络号,x则是这个局域网中 对应的主机号。如果花果山要向五指山发送数据,首先数据会先传到东胜神洲的路由器,路由器查看IP地址,通过网络号发现是南瞻部洲的,就向南瞻部洲的路由器发送数据,南瞻部洲的路由器收到数据,会通过网络号发现是自己洲的,再通过主机号将数据发送到对应的主机(五指山)。

2.3.IP地址的分类

 

在各类IP地址中,有些IP地址具有特殊用途,不用做主机的IP地址:
●主机号全为0表示本网络本身,如202.98.174.0。
●主机号全为1表示本网络的广播地址,又称直接广播地址,如202.98.174.255。
●127.0.0.0 保留为环回自检(Loopback Test)地址,此地址表示任意主机本身,目的地址为环回地址的IP数据报永远不会出现在任何网络上。
●32位全为0,即0.0.0.0表示本网络上的本主机。
●32位全为1,即255.255.255.255表示整个TCP/IP网络的广播地址,又称受限广播地址。
   实际使用时,由于路由器对广播域的隔离,255.255.255.255 等效为本网络的广播地址。

2.4.子网划分与子网掩码

2.4.1.子网划分

       IPv4地址如果只使用有类(A、B、C类)来划分,会造成大量的浪费或者不够用,为了解决这个问题,可以在有类网络的基础上,通过对IP地址的主机号进行再划分,把一部分划入网络号,就能划分各种类型大小的网络了。

       从1985年起,在IP地址中又增加了一个“子网号字段”,使两级IP地址变成了三级IP地址,这种做法称为子网划分。子网划分已成为因特网的正式标准协议。
子网划分的基本思路如下:
●子网划分纯属一个单位内部的事情。 单位对外仍然表现为没有划分子网的网络。
●从主机号借用若干比特作为子网号,当然主机号也就相应减少了相同的比特。三级IP地址的结构如下: IP地址二{<网络号>,<子网号>,<主机号>}。
●凡是从其他网络发送给本单位某台主机的IP数据报,仍然是根据IP数据报的目的网络号,先找到连接到本单位网络上的路由器。然后该路由器在收到IP数据报后,按目的网络号和子网号找到目的子网。最后把IP数据报直接交付给目的主机。
注意:
1)划分子网只是把IP地址的主机号这部分进行再划分,而不改变IP地址原来的网络号。
2) RFC 950规定,对分类的IPv4地址进行子网划分时,子网号不能为全1或全0.但随着CIDR的广泛使用,现在全1和全0的子网号也可使用,但一定要谨慎使用,要弄清你的路由器所用的路由选择软件是否支持全0或全1的子网号。
3)不论是分类的IPV4地址还是CIDR. 其子网中的主机号为全0或全1的地址都不能被指派,子网中主机号全0的地址为子网的网络号,主机号全1的地址为子网的广播地址。

2.4.2子网掩码

       为了告诉主机或路由器对一个A类、B类、C类网络进行了子网划分,使用子网掩码来表达对原网络中主机号的借位。

子网掩码的组成
       子网掩码是一个与IP地址相对应的、长32bit的二进制串,它由一串1和跟随的一串0组成。其中,1对应于IP地址中的网络号及子网号,而0对应于主机号。现在的因持网标准规定:所有的网络都必须使用子网掩码。如果一个网络未划分子网,那么久采用默认的子网掩码。A,B,C类地址的默认子网掩码分别为255.0.0.0, 255.255.0.0, 255.255.255.0。
子网掩码的表示方法

①、点分十进制表示法
二进制转换十进制,每8位用点号隔开
例如:子网掩码二进制11111111.11111111.11111111.00000000,表示为255.255.255.0

②、CIDR斜线记法
IP地址/n,n表示子网掩码中1的个数,即表示子网掩码中网络号的长度。
例:192.168.1.100/24,24表示IP地址前24位代表网络号,后8位代表主机号,其子网掩码表示为255.255.255.0,二进制表示为11111111.11111111.11111111.00000000。
子网掩码和IP地址的关系

       子网掩码是用来判断任意两台主机的IP地址是否属于同一网络的依据,就是拿双方主机的IP地址和自己主机的子网掩码做与运算,如结果为同一网络,就可以直接通信。

如何根据IP地址和子网掩码,计算网络地址:

①、将IP地址与子网掩码转换成二进制数。
②、将二进制形式的 IP 地址与子网掩码做“与”运算。
③、将得出的结果转化为十进制,便得到网络地址。
如下图:

 在使用子网掩码的情况下:
1)一台主机在设置 IP地址信息的同时, 必须设置子网掩码。
2)同属于一个子网的所有主机及路由器的相应端口,必须设置相同的子网掩码。
3)路由器的路由表中,所包含信息的主要内容必须有目的网络地址、子网掩码、下一跳地址。
使用子网掩码时路由器的分组转发算法如下:
1)从收到的分组的首部提取且的IP地址,记为D。
2)先判断是否为直接交付。对路由器直接相连的网络逐个进行检查:用各网络的子网掩码和D逐位相“与”,看结果是否和相应的网络地址匹配。若匹配,则将分组直接交付,否则间接交付,执行步骤3)。
3)若路由表中有目的地址为D的特定主机路由,则将分组传送给路由表中所指明的下一跳路由器;否则,执行4)。
4)对路由表中的每行(目的网络地址、子网掩码、下跳地址) 中的子网掩码和D逐位,相“与”,其结果为N。若N与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行步骤5)
5)若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行步骤6)。
6)报告转发分组出错。

2.5.网络地址转换

       网络地址转换(NAT)是指通过将专用网络地址(如Itranet) 转换为公用地址(如Itemet),从而对外隐藏内部管理的IP地址。它使得整个专用网只需要一个全球 IP地址就可以与因特网连通,由于专用网中的本地IP地址是可重用的,所以NAT大大节省了IP地址的消耗。同时,它隐藏了内部网络结构,从而降低了内部网络受到攻击的风险。
       同时,为了网络安全,划出了部分IP地址为私有IP地址。私有IP地址只用于局域网,不用于广域网连接(因此私有IP地址不能直接用于Internet,必须通过网关利用NAT把私有IP地址转换为Internet中合法的全球IP地址后才能用于Internet),并且允许私有IP地址被局域网重复使用。这有效地解决子中地址不足的问题。

       在因特网中的所有路由器,对目的地址是私有地址的数据报一律不进行转发。 这种采用私有IP地址的互联网络称为专用互联网或本地互联网。私有IP地址也称可重用地址。

       使用NAT时需要在专用网连接到因特网的路由器上安装NAT软件,NAT路由器至少有一个有效的外部全球地址。使用本地地址的主机和外界通信时,NAT路由器使用NAT转换表将本地地址转换成全球地址,或将全球地址转换成本地地址。NAT转换表中存放着{本地IP地址:端口}到{全球IP地址:端口}的映射。通过{IP地址:端口}这样的映射方式,可让多个私有IP地址映射到同一个全球IP地址。如下图所示:

       可以打个比方,我们将局域网看成是一个有若干住室的小区,这个小区对外面的世界来说有一个或者几个能被识别的地址。路由器就是该小区的收发室,也是小区与外界联络的唯一通道;而局域网和外网之间的数据就看成是各种各样的快递包裹,小区居民与外界的联络均是靠这些进出的包裹进行的。小区里每个住室都有小区内部地址(私有IP地址),但这个地址对外并不公开。外来的包裹只能送到收发室这个统一地址(路由器的公用地址),由收发室来决定哪个包裹送到哪个住室去;而小区内所有住室发出去的包裹只能先送到收发室,由收发室贴进行地址转化后再往外发送。所以对外界来说,收发到小区居民的包裹是统一收自或发送到小区收发室的,并不知道具体来自/发送给哪个小区住室。

3.IPV6

       为了彻底的解决掉IP地址不足的问题,IP协议就进行了 更新迭代 ,从旧版本的IPV4升级成了新版本的IPV6。

       IPv6地址共有共16个字节,也就是128比特。由于位数比较长,因此是用冒号分十六进制来表示的。128个比特分为了8段,每段16个比特,每段都用十六进制来表示,各段之间用冒号分开。例如:2001:0FCE:3F00:4C02:0000:0000:0001:0002,每段的最前面的0可以省略,可以缩写为:2001:FCE:3F:4C02:0:0:1:2,连续的段为0的时候,可以缩写为::,因此这个IPv6地址最简化的表示为2001:FCE:3F:4C02::1:2。双冒号在一个地址中只能出现一次。

IPv6数据报格式

   比较IPV4和IPV6就可以看出,IPV6 数据报的结构更简单,更高效。以下是IPV6中定义的字段。

  •  版本:该4比特字段用于标识IP版本号。毫不奇怪,IPv6将该字段值设为6。注意到将该字段值置为4并不能创建一个合法的IPv4数据报。
  • 通信量类也称为流量类型:与IPV4中的区分服务含义相似,指示期望获得哪种类型的服务。
  • 流标签:,该20比特的字段用于标识一条数据报的流,能够对一条流中的某些数据报给出优先权,或者它能够用来对来自某些应用(例如IP话音)的数据报给岀更高的优先权,以优于来自其他应用(例如SMTP电子邮件)的数据报。
  • 有效载荷长度:该16比特值作为一个无符号整数,给出了 IPv6数据报中跟在定长的40字节数据报首部后面的字节数量。
  • 下一个首部:该字段标识数据报中的内容(数据字段)需要交付给哪个协议(如TCP或UDP)。该字段使用与IPv4首部中协议字段相同的值。
  • 跳限制:转发数据报的每台路由器将对该字段的内容减1。如果跳限制计数达到0,则该数据报将被丢弃。
  • 数据:这是IPv6数据报的有效载荷部分。当数据报到达目的地时,该有效载荷就从IP数据报中移出,并交给在下一个首部字段中指定的协议处理。

4.从IPv4到IPv6的迁移

       虽然新型IPv6使能系统可做成向后兼容,即能发送、路由和接收IPv4数据报,但已部署的具有IPv4能力的系统却不能够处理IPv6数据报。在实践中已经得到广泛采用的IPv4到IPv6迁移的方法包括建隧道(tunneling)。

建隧道依据的基本思想如下:

       假设上图中B和E要使用IPV6数据报进行交互,但是中间C,D是IPV4路由器。我们可以把两台IPv6路由器之间的中间IPv4路由器的集合称为一个隧道(tunnel),如图所示:

       借助于隧道,在发送端的IPV6节点(B)可以将整个IPV6数据报放在一个IPV4数据报的数据(有效载荷)字段中。于是,该IPv4数据报的地址设为指向隧道接收端的IPv6节点(E),再发送给隧道中的第一个节点(C)。隧道中的中间IPv4路由器在它们之间为该数据报提供路由,就像对待其他数据报一样,完全不知道该IPv4数据报自身就含有一个完整的IPv6数据报。隧道接收端的IPv6节点(E)最终收到该IPv4数据报(它是该IPv4数据报的目的地),并确定该IPv4数据报含有一个IPv6数据报(通过观察在IPv4数据报中的协议号字段是41 [RFC 4213],指示该IPv4有效载荷是IPv6数据报),从中取出IPv6数据报,然后再为该IPv6数据报提供路由,就好像它是从一个直接相连的IPv6邻居那里接收到该IPv6数据报一样。

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值