下面是ip的PDU报头的说明:
**版本: **占4 位,指 IP 协议的版本目前的IP 协议版本号为4
首部长度: 占4 位, 可表示的最大数值是15 个单位,一个单位为4 字节
因此IP 的首部长度的最大 值是60 字节
区分服务: 占8 位, 用来获得更好的服务, 在旧标准中叫做服务类型,但
实际上一直未被使用过. 后改名为区分服务. 只有在使用区分服务时, 这
个字段才起作用. 一般的情况下都不使用
总长度: 占16 位, 指首部和数据之和的长度, 单位为字节, 因此数据报的
为 最大长度为 65535 字节.元 总长度必须不超过最大传送单元 MTU
标识: 占16 位, 它是一个计数器, 通常,每发送一个报文,改值会加1
也用于数据包分片,在同一个包的若干分片中,该值是相同的
标志(flag): 占3 位, 目前只有后两位有意义
DF: : Don‘t Fragment当 ,中间的一位,只有当 DF=0 时才允许分片
MF: : More Fragment ,最高位,MF=1 表示后面还有分片。MF=0
表示最后一个分片
片偏移: 占12 位, 指较长的分组在分片后,该分片在原分组中
的相对位置. 片偏移以8 个字节为偏移单位
生存时间: 占8 位, 记为TTL (Time To Live) 数据报在网络中
可通过的路由器数的最大值,TTL 字段是由发送端初始设置一
个 8 bit 字段. 推荐的初始值由分配数字 RFC 指定, 当前值为
64,发送 ICMP 把回显应答时经常把 TTL 值 设为最大值 255
协议: 占8 位, 指出此数据报携带的数据使用何种协议以便目的
主机的IP 层将数据部分上交给哪个处理过程, 1为 表示为 ICMP
协议, 2为 表示为 IGMP 协议, 6表示为 TCP 协议, 17 表示为UDP 协议
首部检验和: 占16 位, 只检验数据报的首部不检验数据部分.这
用里不采用 CRC 检验码而采用简单的计算方法
源地址和目的地址: 都各占4 字节, 分别记录源地址和目的地址
为了更好的了解IP的PDU报头我就在这里很认真的贴张图:
1.png
IP地址和MAC地址一样都可以可以唯一表示网络中的每台设备,但是ip
地址的突出优点并不在于它的唯一性,而是在于它的可管理性,是人为可以指定的
IP地址有两部分组成:
- 网络ID:
- 告诉我们设备处在哪个网络之中(标识网络)
- 每个网段分配一个网络ID
主机ID:
唯一标示网络中的该设备(标识单个主机)
由组织分配给各设备
注意:网络id和主机id到底有什么区别又有什么联系?我在这里可以打个比方,就拿我们国家来说每个城市都有它的区号,比如说北京的区号是“010,”上海的区号是“021”,而区号分好以后每个城市都有自己的管理,城市里的每个地方都有自己的地址,比如你要找到你的朋友,那么你就要知道它的具体的地址(网络通信主机之间的链接实际上不是按ip地址去找的,ip地址只是帮你寻找到了你所要连接的地址是在那一段,而具体的还得需要用MAC地址去寻找,实际上ip地址就是做了一个地址标记,基于ip地址的通信实际上到最后都会转化为基于MAC地址的通信这里面有地址解析,在这里我们不做深究)才能找到它
IP地址格式:
IP地址是一个32位二进制数,可以将此32位二进制数分为四组,每组8位,每组二进制数均可以转化为十进制数使之可读,因此IP地址可以用点分十进制记录法记录
IP地址分类:
IP地址按照网络ID和主机ID各自所占用的位数不同可以分为5类
- A类:
| 0xxxxxxx | 主机 ID | 主机 ID | 主机 ID |
| :——– | ——–:| :——: |:——–:|:———-:|
A类地址:网络ID占据前8位,首位为0标识是A类地址,后面24位都是主机ID
由于A类网络ID总共8位,首位0又被占据,因此可变为只有7位,所以A类网络
ID最多只有2^7=128个,又因为划分类别只看前8位,首位又被占据,因此A类
最小地址为为:0 0000000 (也就是0),最大地址:0 1111111(也就是127)
A类地址的网络ID为:1-126
注意 A类地址的最小网络ID(未知ID)和最大网络ID(回环ID,每个电脑都有)是
有特殊含义的,因此A类地址供我们使用的最小网络ID也就变成了:0 0000000
(也就是1),最大网络ID:0 1111110(也就是126)每个网络中的主机数:2^24-2=1677万
减去的两个IP一个是最小的:表示在某个网段的网络,
例如:10.0.0.0 :表示10所在的网络最大的IP表示广播
例如:10.255.255.255 :表示10这个网络的广播默认子网掩码:255.0.0.0
私网地址:10.0.0.0
B类:
| 0xxxxxxx | xxxxxxxx| 主机 ID | 主机 ID |
| :——– | ——–:| :——: |
B类地址:网络ID占据前16位,首位为10标识是A类地址,后面16位都是主机ID
由于B类网络ID总共16位,前两位被10占据,因此可变为只有14位,所以B类网络
ID最多只有2^14=16384个,又因为划分类别只看前8位,因此B类地址最小为 :
10 000000 (也就是128),最大地址为:10 111111(也就是191)
- 网络数:2^14
- 每个网络中的主机数:2^16-2=65534
- 默认子网掩码:255.255.0.0
- 私网地址:172.16.0.0—-172.31.0.0
- C类:
| 0xxxxxxx | xxxxxxxx| xxxxxxxx | 主机 ID |
| :——– | ——–:| :——: |
B类地址:网络ID占据前24位,前3位为110标识是C类地址,后面21位都是主机ID
由于C类网络ID总共24位,前三位被110占据,因此可变为只有21位,所以C类网络
ID最多只有2^21个,因为划分类别只看前8位,因此B类地址最小为 :
110 00000 (也就是192),最大地址为:110 111111(也就是223)
网络数:2^24
每个网络中的主机数:2^8-2=254
默认子网掩码:255.255.255.0
私网地址:192.168.0.0—-192.168.255.0
- D类:多播(224–239),不讨论。
- E类:保留(240—254),不讨论。
公共IP地址:
类 | 公共IP地址范围 |
---|---|
A | 1.0.0.0—9.255.255.255 ; 11.0.0.0—126.255.255.255 |
B | 128.0.0.0—172.15.255.255; 172.32.0.0—191.255.255.255 |
C | 192.0.0.0—192.167.255.255; 192.169.0.0—223.255.255.255 |
私有地址(不唯一):
类 | 私有IP地址范围 |
---|---|
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 |
特殊地址:
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 服务器获取地址,系统
会为主机分配这样地址。
保留地址:
- 网络地址:
2.png
- 广播地址:
3.png
上面划分IP地址的方式(有类地址)存在很多缺点:
例如,一个企业里面只有2000台计算机,而我们如果去用A类地址的话,因为A类地址的每个网段都可以供1700多万台计算机使用,这样就会造成很多的浪费,同样B类地址也会造成很多的浪费,而如果去用C类地址,由于C类地址每个网段最多支持254,因此有10个网段才能够用,这样又会不方便管理。因此我们可以采用无类地址,就是把地址不在分为A、B、C类了,我们可以自由的规定网络ID和主机ID,这样我们需要多少就可以规定多少,就不会造成浪费了
无类地址:
由于无类地址的网络ID和主机ID是不确定的(我们自己规定的),将来通讯的时候还是必须要清楚哪些是网络ID,哪些是主机ID,那么我们靠什么来区分网络ID呢,这就是我们要说的子网掩码
子网掩码:
- 子网掩码的解释:
子网掩码不能单独存在,它必须结合IP地址一起使用。
子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。
使与之相用的IP地址的网络ID全为 1 ,主机ID全为 0 ,这样就唯一表示了IP所在的网段
子网划分是借助于取走主机位,把这个取走的部分作为子网位。因此这个意味划分越多的子网,主机将越少。
下面是子网掩码其中的8位:
4.png
CIDR:
- 表示:
IP / 网络ID位数
CIDR叫做无类域间路由,ISP 常用这样的方法给客户分配地址,类似这样:192.168.10.32/28,这排数字告诉你你的子网掩码是多少,/28 代表多少位为1,最大/32.但是你必须知道的一点是:不管是A类还是B类还是其他类地址,最大可用的只能为/30,即保留2 位给主机位。
下面我们结合实例用CIDR’算法来划分IP :
公式1:计算网络数=2^可变的网络ID位
公式2:单个网络里可用的IP数=2^可变的主机ID位(32-网络ID位)-2
公式3:网络ID=IP与子网掩码
公式4:划分子网络的数=2^网络ID位向主机ID位借的位数
公式5:划分子网后损耗的IP=(子网数-1)*2
1、202.110.200.100 / 26
①写出子网掩码;
答:分析:网络ID总共26个1,主机位是6位
所以这个主机的子网掩码用二进制表示为:
11111111 11111111 11111111 11000000
因此子网掩码为:255.255.255.192
②这个主机所在网络最多有多少个IP?
答:分析:子网已经确定,因此求这个主机有多少个IP知道主机有
多少位就行
因此这个主机所在的网段最多有的Ip为:2^6-2=64个
③写出该机所在的网络ID
分析:网络ID=IP&子网掩码
答:由于子网掩码前3段都是255,因此与原来的IP相与还是保持原值,我们只需要
把100化成二进制和192化为二进制相遇就行了:
100化为二进制:01100100
&
192化为二进制:11000000
= 01000000 =64
因此该机的网络ID为:255.255.255.64
2、现在有两个主机: A :192.168.1.1 / 16 ; B : 192.168.2.1 /24 问
这两台主机是否在一个网段里。
分析:有两种情况分别是:A访问B和B访问A
A--->B(A访问B):
判断A主机是否和B主机在一个网段里的方法是:
第一步: 用A的子网掩码与本身(A)的IP相与求出A的网络ID;
第二部: 用A的子网掩码与B的IP相与得出一个结果;
第三部: 判断第一步和第二步的结果是否相同
答:A的网络ID为:255.255.0.0
用A的子网掩码与B的IP相与的结果为:255.255.0.0
因此A、B在一个网络里
B--->A(B访问A):
判断B主机是否和A主机在一个网段里的方法是:
第一步: 用B的子网掩码与本身(B)的IP相与求出A的网络ID;
第二部: 用B的子网掩码与A的IP相与得出一个结果;
第三部: 判断第一步和第二步的结果是否相同
答:B的子网掩码为:192.168.2.0
用A的子网掩码与B的IP相与的结果为:255.255.1.0
因此B、A、在一个网络里
3、主机为:188.200.123.100/8,所在网络划分为8个子网
①子网掩码
答:子网掩码:255.248.0.0
②网络ID
答:188.200.0.0
③网络有多少个IP
答:2^19-2
④网络中最小IP和最大IP
答:最小IP:188.200.0.1
最大IP:188.200.255.254
⑤损耗的IP个数:
(8-1)*2=14
划分子网:一个大网划分成多个小网,将原有网络ID位,向主机ID位借位,结果就是网络ID变多,主机ID变少。
子网是指一个ip地址上生成的逻辑网络,它可以让一个网络地址跨越多个物理网络,即一个网络地址代表多个网络(很明显这样做可以节省ip地址)。呵呵,听起来是不是很蹊跷?一个网络就这样被莫名其妙的划分成了许多子网?那么这样做有什么用呢?
我举个例子来跟你说吧:比如你是某个学校的网管,你的学校有四个处于不同物理位置的网络教室,每个网络教室25台机器,你的任务是给这些机器配置ip地址和子网掩码。你可能会觉得这再简单不过了,申请4个C类地址,每个教室一个,然后在一一配置不就搞定了。嗯,这样做理论上没错,但你有没有想到这样做很浪费,你一共浪费了(254-25)4=916个ip地址,如果所有的网管都像你这样做,那么internet上的ip地址将会在极短的时间内枯竭,显然,你是不能这样做,你应该做子网划分。*
子网划分说白了是这样一个事情:因为在划分了子网后,ip地址的网络号是不变的,因此在局域网外部看来,这里仍然只存在一个网络,即网络号所代表的那个网络;但在网络内部却是另外一个景象,因为我们每个子网的子网号是不同的,当用化分子网后的ip地址与子网掩码(注意,这里指的子网掩码已经不是缺省子网掩码了,而是自定义子网掩码,是管理员在经过计算后得出的)做’与’运算时,每个子网将得到不同的子网地址,从而实现了对网络的划分(得到了不同的地址,当然就能区别出各个子网了)。
4、主机:100.200.123.200/8 所在网络划分出 8个子网
① 每个子网子网掩码
255.224.0.0
② 每个子网网络有多少个IP
2^21-2
③ 最小的子网中最小IP和最大IP
100.0.0.1
100.31.255.254
④ 最大的子网中最小IP和最大IP
100.224.0.1
100.255.255.254
5、主机:133.222.210.200/19 所在网络划分出16个子网
①原有网络网络ID
133.222.192.0
② 每个子网子网掩码
255.255.244.0
③ 每个子网网络有多少个IP
2^9-2
④ 最大的子网中最小IP和最大IP
133.222.223.1
133.222.223.254
⑤损耗的IP个数:
(16-1)*2=30