1、IP报文组成
IP报文由IP报头和Data部分组成,报头由6个数据块组成,其中前5个数据块每块大小是固定的4字节(32位),后一个数据块长度可变,但规定了IP报头最大不能超过60字节,所以IP报头的大小范围在20到60字节。
IP报头 | Data | |||||||
数据块1 | 数据块2 | 数据块3 | 数据块4 | 数据块5 | 数据块6 | |||
4字节 | 4字节 | 4字节 | 4字节 | 4字节 | 0-40字节 | |||
20-60字节 |
2、IP报头详解
Version | Header Length | Type of Service | Total Length | |
4位 | 4位 | 8位 | 16位 |
Version:IP协议的版本号,如ipv4、ipv6。
Hearder Length:IP报头长度,即是6个数据块的长度和,原因是数据块6的长度可变。
Type of Service:服务类型,这个字段可以设置IP报文的优先级,如发生拥堵时高优先级可先转发
Total Length:总长度,指整个IP报文的总长度。16位二进制对应的最大十进制数就是65535,而计算机是从0开始计数的,所以一个IP报文的总长度最大可以为65536个字节。上一章讲到一个网络帧的最大长度为1536个字节,所以一个报文在传输过程中需要分解为若干个帧,也就是报文的分段。
Identification | Flags | Fragment Offset | |
16位 | 3位 | 13位 |
Identification:标识符,作用是保证报文被分段后用于区别于其他报文的数据段,并用来将各数据段重新组合成完整的报文。
Flags:标志,该字段包含3个位,作用是配合报文的分段。第一位为预留位不使用;第二位为DF位,若DF=1则表明不能对该报文进行分段;第三位为MF位,若MF=1则表明设备接收到的该报文分段后还有其他的分段,若MF=0则表明这是最后一个分段了。
Fragment Offset:片偏移,该字段记录了着此分段数据相对于报头起始点的偏移位置,作用是设备分多次接收到多个报文段后可以根据此数值将各分段按原来的顺序重新组合起来形成一个完整的报文。
Time to Live | Protocol | Header Checksum |
8位 | 8位 | 16位 |
Time to Live:生存时间,指报文在网络中可以存活的时间。路由器每传递一个报文都需要耗费相应的时间,而网络的复杂性和故障可能导致某些报文在网络中被循环的传递,为了防止报文可能被无限制地传递从而影响路由器的效率,我们规定报文每通过一个路由器就将该值减一,如果数值被减为0则接收到的路由器可以将该报文丢弃不再传递。
Protocol:协议,在设备中不同的协议是交由不同的进程处理的,该字段能指出报文携带的数据是何种协议,便于IP层能知道该数据应上交到哪个进程(这里可以跟上一章中帧的协议类型字段联动一下)。
Header Checksum:首部校验,与帧校验类似首部校验是将IP报文的首部以某种规则进行运算并将结果存储在这个字段中方便接收设备对IP报文的首部进行校验。
数据库4 | 数据块5 | 数据块6 |
Source IP Address | Destination IP Address | Options |
32位 | 32位 | 0-40字节 |
Source IP Address:源IP地址,数据发送设备的IP地址。
Destination IP Address:目标IP地址,目标设备的IP地址。
Options:可选项,源设备或路由设备可以向其中加入信息,是一个可选字段长度可变,主要用于测试。
3、IP地址结构
一个IP地址由32个二进制数组成,共4字节,所以通常将IP地址分为4段,为便于使用通常将IP地址以十进制的方式显示。
二进制 | 11000000 | 10101000 | 00000000 | 00000001 |
十进制 | 192 | 168 | 0 | 1 |
IP地址在使用时一般将其从某位截断,将前半部分称为网络ID用来标识其所在网络也称为网段,后半部分称为主机ID用来标识网络内的不同计算机。例如我们随意地将32位IP地址从中间截断,将前12位用作网络ID,后20位用作主机ID。那么我们就获得了4096个网络ID,每个网络可以容纳1048576个主机。
前12位(网络ID) | 后20位(主机ID) | |
二进制值范围 |
000000000000 到 111111111111 |
00000000000000000000 到 11111111111111111111 |
十进制值范围 | 0到4095 | 0到1048575 |
很显然,在进行IP截断时,获取的网络ID越多则每个网络对应的主机ID越少,反之网络ID越少每个网络对应可获得的主机ID就越多。
4、IP地址的分类
在实际使用时用户在局域网中根据自己的需要从随意位置截断IP来划分网络ID和主机ID自然是可行的,但在接入互联网后这种行为就需要规范起来,于是大家约定只在第8位、16位和24位对IP进行截断,将IP地址分成了3大类:A类、B类和C类,同时使用掩码来告诉计算机其IP属于那一类。
类型 | 网络ID | 主机ID | 掩码 |
A类 | 11111111 | 11111111 11111111 11111111 | 255.0.0.0 |
B类 | 11111111 11111111 | 11111111 11111111 | 255.255.0.0 |
C类 | 11111111 11111111 11111111 | 11111111 | 255.255.255.0 |
计算机可以使用掩码对IP做与运算得到该IP的网络ID,用掩码的反码做与运算得到该IP的主机ID。
IP | 192.168.1.1 | 11000000.10101000.00000001.00000001 | |
掩码 | 255.255.255.0 | 11111111.11111111.11111111.00000000 | |
网络ID | 192.168.1.0 | 11000000.10101000.00000001.00000000 | |
主机ID | 0.0.0.1 | 00000000.00000000.00000000.00000001 |
这样对IP进行分类还存在一个问题,那就是如果同一个IP使用不同的掩码,将得到不同的网络ID和主机ID,也就是说即使IP地址同为192.168.0.1也有可能处于不同的网段。
IP | 192.168.1.1 | 192.168.1.1 |
掩码 | 255.255.255.0 | 255.255.0.0 |
网络ID | 192.168.1 | 192.168 |
主机ID | 0.0.0.1 | 0.0.1.1 |
为避免引起类似的混乱人们又根据IP地址前8位的值对各类IP进行再次划分,规定A类地址前8位的值为0到127,B类地址为128到191,C类地址为192到223,同时加入D类地址从224到239用于组播,加入E类作为保留地址从240到255留待以后使用。对于D类和E类由于是特殊IP所以不需要掩码。
类型 | IP范围 | 掩码 | 二进制 |
A类 |
0.0.0.0 127.255.255.255 |
255.0.0.0 |
00000000.00000000.00000000.00000000 01111111.11111111.11111111.11111111 |
B类 |
128.0.0.0 191.255.255.255 |
255.255.0.0 |
10000000.00000000.00000000.00000000 10111111.11111111.11111111.11111111 |
C类 |
192.0.0.0 223.255.255.255 |
255.255.255.0 | 11000000.00000000.00000000.00000000 11011111.11111111.11111111.11111111 |
D类 |
224.0.0.0 239.255.255.255 |
特殊 | 11100000.00000000.00000000.00000000 11101111.11111111.11111111.11111111 |
E类 |
240.0.0.0 255.255.255.255 |
特殊 | 11110000.00000000.00000000.00000000 11111111.11111111.11111111.11111111 |
上表中我们将IP的网络ID进行了标红,这样我们就能很简单的计算出各类IP的网络ID与主机ID的数量。
类型 | 网络ID | 主机ID | ||
A类 |
00000000 (0) 01111111 (127) 127-0=127 合计128个 |
00000000.00000000.00000000 (0) 11111111.11111111.11111111 (16777215) 16777215-0=16777215 合计16777215 |
||
B类 |
10000000.00000000 (32768) 10111111.11111111 (49151) 49151-32768=16383 合计16384个 |
00000000.00000000 (0) 11111111.11111111 (65535) 65535-0=65535 合计65536个 |
||
C类 |
11000000.00000000.00000000 (12582912) 11011111.11111111.11111111 (14680063) 14680063-12582912=2097151 合计2097152个 |
00000000 (0) 11111111 (255) 255-0=255 合计256个 |
5、公IP与私有IP
最开始IP地址仅应用于以太网也就是局域网,将各地的局域网连接在一起就是所谓的城域网和广域网,按不同的应用需求就有了所谓的教育网:教育科研系统互相连接的网络;军网:各部队互相连接的网络;铁通:以前铁路系统自用的网络;还有服务普通民众和企业的电信网、联通网。不同国家不同运营商大家各建各的当然没有问题,但各网之间想要连接起来互相通信首先就需要对IP地址进行统一规划。于是人们就规定将所有IP分成两部分,一部分用作局域网大家随便用称为私有IP,另一部分用作互联网,也就是连接到互联网的大家公用的称为公有IP。
IP范围 | 私有IP | |
A类 |
0.0.0.0-127.255.255.255 |
10.0.0.0-10.255.255.255 |
B类 |
128.0.0.0-191.255.255.255 |
172.16.0.0-172.31.255.255 |
C类 |
192.0.0.0-223.255.255.255 |
192.168.0.0-192.168.255.255 |
6、特殊IP
除了上面讲到的D类、E类IP比较特殊之外,人们还规定了一系列特殊IP用作特殊用途。下面对所有特殊IP进行简单介绍。
特征 | 用途 |
IP范围从224.0.0.0到239.255.255.255 | D类IP,用作组播,不能配给任何设备 |
IP范围从240.0.0.0到255.255.255.255 | E类IP,预留不使用,不能配给任何设备 |
主机位全为0(如192.168.0.0) | 代表一个网段,路由器用来寻址,不能配给任何设备。 |
主机位全为255(如192.168.0.255) | 广播地址,路由向192.168.0.0网段发送广播用的,不能配给任何设备。需要注意的是发送广播的设备不一定是位于该网段的。 |
IP范围从127.0.0.0到127.255.255.255 | 称为环回地址,用于诊断网络是否正常,不能配给任何设备 |
IP地址0.0.0.0 | 表示任意网络,常用在路由策略里,不能配给任何设备 |
IP地址255.255.255.255 | 也是广播地址,向设备所在网段的所有主机发送广播时使用的,不能配给任何设备。 |
【IP报文与帧的关系】IP报文长相与帧类似,都有个头都有个数据段,那这二者是什么关系呢。
实际上IP报文工作在OSI的第三层而帧工作在第二层,IP报文属于IP协议仅用作寻找目标设备,实际存放数据的还有个TCP报文或者UDP报文,所以我们常说TCP/IP协议。如果现在某设备的一个进程要向另一设备的某进程使用TCP的方式传输一段数据,设备首先要做的是先将数据打包成TCP报文,然后将目标设备IP和自身IP等信息组成一个IP报文,将TCP报文存入IP报文的Data字段。当设备将存有TCP报文的IP报文传输到网络上之前,先判断是否要对这个IP报文进行分段,如果要分段的话就分成若干个IP报文。而后根据下一个设备的MAC地址组成若干个帧,被分段的IP报文就存放在帧的Data字段中。所以它们的关系如下图所示。
可见帧其实就是个搬运工。
【报文】报文(message)是网络中交换与传输的数据单元,即站点一次性要发送的数据块。报文包含了将要发送的完整的数据信息,其长短很不一致,长度不限且可变。报文也是网络传输的单位,传输过程中会不断的封装成分组、包、帧来传输,封装的方式就是添加一些信息段,那些就是报文头以一定格式组织起来的数据。
【骨干网】骨干网(Backbone Network)是用来连接多个区域或地区的高速网络。每个骨干网中至少有一个和其他骨干网进行互联互通的连接点。不同的网络供应商都拥有自己的骨干网,用以连接其位于不同区域的网络。几台计算机连接起来,互相可以看到其他人的文件,这叫局域网,整个城市的计算机都连接起来,就是城域网,把城市之间连接起来的网就叫骨干网。这些骨干网是国家批准的可以直接和国外连接的互联网。目前我国拥有9大骨干网:
中国公用计算机互联网(CHINANET):邮电运营的民用网络。
中国金桥信息网(CHINAGBN):连接国务院、各部委、央企、各地重点企业等等的专用网。
中国联通计算机互联网(UNINET):联通运营的民用网。
中国网通公用互联网(CNCNET):网通运营的民用网。
中国移动互联网(CMNET):移动运营的民用网。
中国教育和科研计算机网(CERNET):教育部运营的,连接各地大学等教育机构的专用网。
中国科技网 (CSTNET):中国科学院运营的,连接各地研究所的专用网。
中国长城互联网(CGWNET):跟长城宽带可不一样,是部队的专用网。
中国国际经济贸易互联网(CIETNET):面向外贸系统企事业单位的专用网。
这些骨干网使用不同的方法和独立的线路,而后通过接口互相连接,也可以接入到国际互联网,他们在内部可以使用私有IP而互连的接口则必须使用分配给他们的公有IP。