1、IP协议概念
IP(Internet Protocol , 互联网协议)主要用于互联网通信。IP协议用于将多个包交换网络连接起来,他在原地址和目的地址之间传输数据报,还提供对数据大小的重新组装功能,以适应不同网络的要求。
IP协议是TCP/IP协议族的核心协议,最常用的IP协议的版本号是4,即IPV4 ,它的下一个版本就是 IPV6。
2、IP协议报文格式
(1)版本 占4位,指IP协议的版本。通信双方使用的IP协议版本必须一致。目前广泛使用的IP协议版本号为4(即IPv4)。关于IPv6,目前还处于草案阶段。
(2)首部长度 占4位,可表示的最大十进制数值是15。请注意,这个字段所表示数的单位是32位字长(1个32位字长是4字节),因此,当IP的首部长度为1111时(即十进制的15),首部长度就达到60字节。当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。因此数据部分永远在4字节的整数倍开始,这样在实现IP协议时较为方便。首部长度限制为60字节的缺点是有时可能不够用。但这样做是希望用户尽量减少开销。最常用的首部长度就是20字节(即首部长度为0101),这时不使用任何选项。
(3)区分服务 占8位,用来获得更好的服务。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998年IETF把这个字段改名为区分服务DS(Differentiated Services)。只有在使用区分服务时,这个字段才起作用。
(4)总长度 总长度指首部和数据之和的长度,单位为字节。总长度字段为16位,因此数据报的最大长度为216-1=65535字节。
在IP层下面的每一种数据链路层都有自己的帧格式,其中包括帧格式中的数据字段的最大长度,这称为最大传送单元MTU(Maximum Transfer Unit)。当一个数据报封装成链路层的帧时,此数据报的总长度(即首部加上数据部分)一定不能超过下面的数据链路层的MTU值。
(5)标识(identification) 占16位。IP软件在存储器中维持一个计数器,每产生一个数据报,计数器就加1,并将此值赋给标识字段。但这个“标识”并不是序号,因为IP是无连接服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的MTU而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。
(6)标志(flag) 占3位,但目前只有2位有意义。
● 标志字段中的最低位记为MF(More Fragment)。MF=1即表示后面“还有分片”的数据报。MF=0表示这已是若干数据报片中的最后一个
● 标志字段中间的一位记为DF(Don’t Fragment),意思是“不能分片”。只有当DF=0时才允许分片。
(7)片偏移 占13位。片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对用户数据字段的起点,该片从何处开始。片偏移以8个字节为偏移单位。这就是说,每个分片的长度一定是8字节(64位)的整数倍。
(8)生存时间 占8位,生存时间字段常用的的英文缩写是TTL(Time To Live),表明是数据报在网络中的寿命。由发出数据报的源点设置这个字段。其目的是防止无法交付的数据报无限制地在因特网中兜圈子,因而白白消耗网络资源。最初的设计是以秒作为TTL的单位。每经过一个路由器时,就把TTL减去数据报在路由器消耗掉的一段时间。若数据报在路由器消耗的时间小于1秒,就把TTL值减1。当TTL值为0时,就丢弃这个数据报。
(9)协议 占8位,协议字段指出此数据报携带的数据是使用何种协议,以便使目的主机的IP层知道应将数据部分上交给哪个处理过程。
(10)首部检验和 占16位。当收到一份IP数据包后,同样对首部的每个16位进行反码求和。由于接收方在计算过程中包含了发送发在首部中的校验和,如果传输过程中没有差错,计算结果应全为1,不是全1,即检验和错误,那么就丢弃收到的数据报,但不生成差错报文,由上层发现丢失的数据报并进行重传。这个字段只检验数据报的首部,但不包括数据部分。这是因为数据报每经过一个路由器,路由器都要重新计算一下首部检验和(一些字段,如生存时间、标志、片偏移等都可能发生变化)。不检验数据部分可减少计算的工作量。
3、IP地址
IP地址标识着网络中一个系统的位置。每个IP地址都是由两部分组成:网络号和主机号。网络号标识一个物理的网络,同一个网络上所有的主机需要同一个网络号,该号在整个互联网是唯一的;主机号是网络中的一个工作端、服务器、路由器其他TCP/IP主机。对于一个网络号来说主机号是唯一的。每个TCP/IP主机由一个逻辑IP地址确定。
IP地址有两种表示方法:二进制表示、点分十进制表示。
每个IP地址为4个字节,由4个8位域组成,称之为8位体。
IP地址的编址方式共经过了三个历史阶段。这三个阶段是:
分类的IP地址。最基本的编址方式。
子网的划分。对最基本的编址方式的改进。
构造超网。比较新的无分类编址方法。
1>. A类地址( 0.0.0.0 - 127.255.255.255 )以”0”头,网络段长度为8位,其中可变部分的长度为7位;主机段长度为24位。7位的可变网络段可识别2^7=128 (0~127)个网络,其中0和127另有用途,故只有126个可用的A类网络地址。另外,主机位全”0”代表网络本身,全”1”代表网内广播,因此一个A类网络地址可识别的可分配地址有 2^24-2 个。
2>. B类地址( 128.0.0.0 - 191.255.255.255 )以”10”开头,网络段长度为16位,可变部分的长度为14位;主机段长度为16位。14位的可变网络段可以识别的网络数为 2^14 个。另外,主机位全”0”与全”1”功能同A类地址,因此一个B类网络可以分配地址有 2^16-2 个。
3>. C类地址( 192.0.0.0 - 223.255.255.255 )以”110”开头,网络段长度为24位,其中可变部分的长度为21位;主机段长度为8位。21位的可变网络段可以识别的网络数为 2^21 个。可分配的主机地址是 2^8-2 个。
4>. D类地址( 224.0.0.0 - 239.255.255.255 )为组播地址,使用”1110”开头,不分网络段和主机段,有 2^28 个组播地址。用于标识预先定义的一组主机。主机使用组播通信时,可以将组播数据报一次性发送给所有同组的主机。
5>. E类地址( 240.0.0.0 - 255.255.255.255 )是保留地址,用于研究使用。以”1111”开头,不区分网络段和主机段,其中32位全1代表本网络内广播,因此E类地址共有 2^28-1 个。
私有IP地址和特殊IP地址
根据用途和安全性级别的不同,IP地址还可以大致分为两类:公共地址和私有地址。公用地址在Internet中使用,可以在Internet中随意访问。
一个机构网络要连入Internet,必须申请公用IP地址。但是考虑到网络安全和内部实验等特殊情况,在IP地址中专门保留了三个区域作为私有地址,其地址范围如下:
A类:10.0.0.0/8(子网掩码表示) 10.0.0.0-10.255.255.255
B类:172.16.0.0/12 172.16.0.0-172.31.255.255
C类:192.168.0.0/16 192.168.0.0-192.168.255.255
使用保留地址的网络只能在内部进行通信,而不能与其他网络互连。因为本网络中的保留地址同样也可能被其它网络使用,如果进行网络互连,那么寻找路由时就会因为地址的不唯一而出现问题。但是这些使用保留地址的网络可以通过将本网络内的保留地址翻译转换(NAT)成公共地址的方式实现与外部网络的互连。这也是保证网络安全的重要方法之一。
注:127(即01111111)保留作用本地软件环回测试(loopback test)本主机的进程之间的通信之用。若主机发送一个目的地址为环回地址(例如:127.0.0.1)的IP数据报,则本主机中的协议软件就处理数据报中的数据,而不会把数据报发送给任何网络。目的地址为环回地址的IP数据报永远不会出现在任何网络上,因为网络号为127的地址根本不是一个网络地址。
网络号为0,如主机使用BOOTP协议确定本机IP地址时只能作为初始化过程中的源地址出现。
4、子网划分
1、子网划分的意义
组织不同物理媒体的使用、地址空间的保存、控制网络流量、安全性等因素。
2、子网掩码
RFC950 定义了子网掩码的使用。子网掩码是32位二进制数,其对应网络地址的位都是1,对应主机位置的都是0。
A类网络的默认子网掩码为255.0.0.0,B类网络的默认子网掩码为255.255.0.0,C类网络的默认子网掩码为255.255.255.0
子网掩码告诉路由器,地址哪一部分是网络地址,哪一部分是主机地址,是路由器正确判断任意IP地址是否是本网段的,从而进行正确的路由。
3、子网划分
知识点:
A类地址 0.0.0.0 ~127.255.255.255
B类地址 128.0.0.0 ~ 191.255.255.255
C类地址 192.0.0.0 ~ 223.255.255.255
A类私有地址 10.0.0.0 ~ 10.255.255.255
B类私有地址 172.16.0.0 ~ 172.31.255.255
C类私有地址 192.168.0.0 ~ 192.168.255.255
CIDR(无类别域间路由,Classless Inter-Domain Routing)。CIDR最大的特点是用斜杠(/)来表示子网掩码,指出了子网掩码中有多少位1。这种表示方法我们经常在运营商给我的IP地址中看到,我们经常需要根据这种表示方法算出我们的可用IP地址是哪些。
假如电信给了我们这段地址61.168.1.32/28,我们可用的IP地址是多少呢?这个问题我们先不回答,等后面详细讲解子网划分自后再回头来看。
A类网络默认子网掩码是255.0.0.0,用CIDR表示为/8
B类网络默认子网掩码为255.255.0.0.0,用CIDR表示为/16
C类网络默认子网掩码为255.255.255.0,用CIDR表示为/24
看到这里,大家知道了吧,/8表示占用8位1,即占用一个字节,/16表示占用16位1,即2字节,/24占用24位1,即占用3字节,大家记住这个默认规则,是后面学习子网划分以及以后心算子网划分的重要技巧。
举例,子网掩码255.255.255.128,用CIDR表示是多少呢?首先这是个C类网络地址,前面三个字节都是255,转换成二进制都为1,即11111111.11111111.11111111,即24位1。128转换成二进制位10000000,即1占用了一位。整个子网掩码占用了25位1,所以用CIDR表示为/25,即255.255.255.128(/25),假如IP段为192.168.1.0,用CIDR表示则为192.168.1.0/25。
再举例,192.168.1.0,255.255.255.192,用CIDR表示?首先判断出是C类网络,前面占用了3字节(24位)1,192换算成二进制位11000000,占用了2位1,总共是26位1.所以CIDR表示为192.168.1.0/26。
子网划分的要点:
1、需要划分成多少个网络(子网)?
假如要划分4个网络,则2X=4,X=2、要划分8个网络,则2X=8,X=3,现在知道为什么要先搞懂2的幂了吧,这里X就是=2的幂值。
那么X代表什么意思呢?X就是取值多少位1,如11000000,就是借2位,即X=2,反推知道一个字节(8位)如果为11000000,则表示可以划分4个网络(22=4);如果为11110000,则表示借4位,可以划分16个网络(24=16)。
2、每个网络需要多少个IP?
计算公式:2^y-2,y代表取值多少位0,如11111000,代表取值3位0,即y=3,得出2^3=8-2=6,即每个网络可用的IP数量是6个。
假如每个网络需要60台主机的IP,那么如何计算呢?即2^y≥60,根据2的幂算法得出,2^6=64-2=62,所有y的值为6。
3、有哪些子网网络(块大小)?
计算公式:256-子网掩码。假如子网掩码为255.255.255.192,则块大小为256-192=64,即块大小为64。从0开始以64为基数不断递增,直到达到子网掩码值,中间的结果即为子网,本例中子网即0、64、128、192。
再举例,加入子网掩码为255.255.255.128,则块大小为256-128=128,即块大小为128,子网0、128。
4、每个子网的子网号和广播地址是多少?
子网号很简单,即子网块值,如掩码为192,则子网块为256-192=64,得出子网为0、64、128、192,即子网号为0、64、128、192。再如掩码为128,则子网为128,则子网好0、128。
广播地址也很简单,总是下一个子网前面的数。如子网号为0、64、128、192、则广播地址为63、127、191。再如子网号为0、128,则广播地址为127.
看到这里大家知道为啥在计算每个网络可用的IP数时,公式里要-2吗?这是因为每个子网号(子网号也是一个IP地址)和广播地址是不能配给主机用的。
5、每个子网的可用(合法)的主机地址是哪些?
规则就是除去每个每个子网的子网号、广播地址,剩下的就是可用的主机地址,如子网号为0、64、128、192,则可用的主机地址为1-62、65-126、129-190,因为0是子网地址,63是广播地址,同样128、192是子网地址,127、191是广播地址。
6、C类网络子网划分
举例,192.168.10.0,255.255.255.224
1、可划分成多少个子网?
根据前面的知识,首先把224转换成二进制,得出为11100000,1占了3位,因此2^3=8,可用划分8个子网。
2、每个子网有多少个可用的IP?
这里看0占了5位,因此2^5-2=30,可用IP数为30.
3、有哪些子网网络?
256-224=32,即以32为基数不断递增,直到224,即0、32、64、96、128、160、192、224。即192.168.10.0、192.168.10.32、192.168.10.64、192.168.10.96、192.168.10.128、192.168.10.160、192.168.10.192、192.168.10.224。
4、每个子网网络的广播地址是多少?
每个子网网络的广播地址总是下一个子网前面的数,即31、63、95、127、159、191、223,即192.168.10.31、192.168.10.63、192.168.10.95、192.168.10.127、192.168.10.159、192.168.10.191、192.168.10.223。
5、每个子网的可用地址是哪些?
即减去每个子网的子网地址和广播地址,剩下的就是可用地址。本例中的可用地址为1-30、33-62、65-94、129-158、161-190、193-222。
再举例,192.168.10.0/30
1、可划分成多少个子网?
因为CIDR表示的子网掩码,首先得算出占用了多少位1,即30-24(因为是C类网络,前面三个字节都是255,即8位1,共24位1)=6,即6位1。所以2^6=64,即64个子网。
2、每个子网有多少个可用的IP?
因为1位占了6个,0位只有2个了,得出22-2=2,所以是2个可用IP地址。
3、有哪些子网网络?
因为1位占了6个,所以得出21+22+23+24+25+26=252,即256=252=4,得出块大小为4,子网网络为0、4、8、12、16、……、240、244、248、252,即192.168.10.0、192.168.10.4、192.168.10.8、……192.168.10.248、192.168.10.252.
4、每个子网网络的广播地址是多少?
下一个子网之前的数字,即192.168.10.3、192.168.10.7、192.168.10.11、……、192.168.10.247、192.168.10 .251,你算对了吗。
5、每个子网的可用地址是哪些?
除去子网地址和广播地址就是可用地址,本例中的可用地址为1,2、5,6、……、249,250。
无论是A类、B类、C类网络,在使用子网掩码/30时,每个子网只包含2个主机地址,这种子网掩码只适合用于点到点链路。
7、B类网络子网划分
通过前面的知识我们知道B类地址中,有16位可用的主机地址,这意味着我们可将其中的14位用于子网划分,因为至少要保留2位用于主机编址。
举例,172.17.0.0 255.255.128.0
1、可划分成多少个子网?
首先128转换成二进制位10000000,因为此例是属于B类网络,至少需要保留16位掩码位(16位1)所以此处x=1,得出21=2。答案是可以划分2个子网。
2、每个子网有多少个可用的IP?
这里0位总共占了15位,215-2=32766.
3、有哪些子网网络?
256-128=128,即0.0、128.0,得出172.17.0.0、172.17.128.0
4、每个子网网络的广播地址是多少?
下一个子网之前的数字,172.17.127.255、172.17.255.255.
5、每个子网的可用地址是哪些?
子网0.0第一个可用地址为172.17.0.1,最后一个可用地址为172.17.127.254;子网128.0第一个可用地址为172.17.128.1,最后一个可用地址为172.17.255.254.
再举例,172.17.0.0/20
1、可划分成多少个子网?
因为此例是属于B类网络,至少需要保留16位掩码位(16位1)所以此处x=4,得出24=16。答案是可以划分16个子网。
2、每个子网有多少个可用的IP?
这里1位占了4位,所以这里0位总共占了12位,212-2=4094.
3、有哪些子网网络?
因为1位占了4位,得出24+25+26+27=240。
256-240=16,即0.0、16.0、……、240.0,得出172.17.0.0、172.17.16.0、……、172.17.240.0。
4、每个子网网络的广播地址是多少?
下一个子网之前的数字,172.17.15.255、……、172.17.223.255.
5、每个子网的可用地址是哪些?
子网0.0第一个可用地址为172.17.0.1,最后一个可用地址为172.17.15.254;……。
请自己算出172.16.0.0/24可划分成多少个子网?每个子网可用地址数是多少?正确答案大家可搜索QQ认证网络工程师进群讨论。
A类子网划分与B类、C类子网划分类似。
如果上面还是看不懂没关系:还有大神更详细的例子: