前言
这篇博客主要对IP协议中一些基础知识点加以总结,并将书中一些晦涩难懂的部分去除了。IP地址协议是网络层中最重要的协议,IP地址协议能够对因特网上的全部设备进行唯一标识。也正由于有了IP协议,我们的计算机才干实现与全球随意一台设备进行通信。
同一时候这也是网络层存在的意义,我将对部分的内容分为两个部分加以总结:一、首先对IP协议部分的知识加以总结。二、对网络层其它的协议加以总结,包含ICMP、IGMP、ARP等协议。
IP协议基础篇
地址空间
这个概念非常好理解,假设一个协议用a位(a个bit)表示,那么其地址空间就是2^a。
我们要讲的IPv4地址协议(简称IP协议)使用32位表示一个地址,所以其地址空间是2^32(超过40亿)
记法
在IP协议中,有三种记法表示一个IP地址:
- 基2(二进制表示法)
- 基16(16进制表示法)
- 基256(10进制表示法)
点
分类编址
认识编址
分类编址是最早出现的编址体系。在分类编址中一共分为五类:A、B、C、D、E。每一类占用地址空间的一部分。当中A类地址有2^31个地址,占50%,B类有2^30个地址,占25%。C类有2^29个地址,占12.5%,D类和E类各有2^28个地址。各占6.25%。那么怎样辨别这5类地址呢?
假设是使用点分十进制记法,仅仅要看左边第一个数。假设小于128,那么就是A类,假设小于192,那么就是B类。假设小于224,那么就是C类,假设小于240,那么就是D类,假设不在上面的范围,那么就是E类。
举例说明
一个IP地址包含了网络号和主机号(网络号标识了设备处于哪个网络下,主机号标识了该网络下的哪台设备)。对于上述A、B、C类地址,分别用前一个字节、两个字节、三个字节表示网络号,后面的字节表示主机号。
地址数首地址末地址
假设给定了n,那么
1)地址数N=2^32-n
2)首地址:保持最左边n位不变,并将右边32-n位置为0
3)末地址:保持最左边n位不变,并将右边32-n位置为1
比如对于IP地址73.22.17.25。其地址数N=2^32-8=2^24。首地址为73.0.0.0,末地址为73.255.255.255
子网掩码
无分类编址
简单介绍
前缀长度后缀长度
斜线记法
两级编址
通过斜线记法表示的地址。我们能够得到该地址块表示的地址数、首地址和末地址。
这点和分类编址是一样的。能够发现。当n各自等于8、16和24的时候刚好就是分类编址的情况,所以分类编址是无分类编址的一个特例。在无分类编址中,计算上述三个信息有一点点出入。看计算方法:
1)地址数N=2^32-n
2)首地址= (随意地址) and (子网掩码)
3)末地址= (随意地址) OR (NOT (子网掩码))
比如对于17.63.110.114/24。子网掩码为255.255.255.0。
地址数N=2^32-24=16。
地址: 17.63.110.114
子网掩码:255.255.255.0
首地址: 17.63.110.0
地址: 17.63.110.114
NOT 子网掩码: 0.0.0.255
末地址: 17.63.110.255
子网划分
在无分类编址中,最常见的应用就是子网划分了。
子网划分就是把ISP分配的一个地址块进一步划分为若干子网,每一个子网还能够继续划分为子网的子网,没有不论什么限制。假设有一个地址块的地址数是N,前缀长度为n。要划分为s个子网,每一个子网的前缀长度是n2。每一个子网的可用地址数是N2。
那么有例如以下计算公式:
n2 = n + log2(N/N2)
比方某组织的可用地址块为130.34.12.64/26,须要划分为4个子网,每一个子网的地址数同样,则每一个子网的信息能够例如以下求得:
1) 可用的地址数N=2^32-26=64
2) 首地址=130.34.12.64/26,末地址=130.34.12.127/26
3) 每一个子网的地址数N2=64/4=16
4) n2 = 26 + log2(64/16) = 28
特殊地址
1)全0地址
即0.0.0.0/32,该地址被保留用于主机发送一个分组而又不知道自己地址的情况下
2)全1地址
即255.255.255.255/32。被设计为当前网络的受限广播地址,一个主机假设想把报文发给网络上的全部主机,就能够把这个地址作为目的地址
IP协议高级篇
IP协议在TCP/IP模型中的位置
在这部分的内容中。将对IP报文的格式做一个具体的了解,同一时候为学习TCP传输层做铺垫。
有一点非常重要,IP协议是不可靠的无连接数据报协议————一种尽最大努力交付的服务。就是说IP协议不保证数据的完整性和安全性,数据报有可能丢失、乱序、损坏或者延迟到达
IP数据报
网络层的分组称为数据报,。也能够简单理解为网络中传输的数据
下图是一个完整的IP数据报格式:
IP数据报由两部分组成:首部和数据。首部长度能够是20~60字节。以下对IP数据报中的各个字段加以说明:
版本号(VER)首部长度(HLEN)服务类型(TOS)总长度标识标志分片偏移生存时间(TTL)协议源地址目的地址
IP分片
MTU
IP分片要改动IP数据报中的标志、分片偏移和总长度的值,其它的不变。
注意:分片的仅仅是数据报中的数据,首部并不会被分片
以下我们来看看分片的时候。上述三个字段(总长度须要依据分片的数据长度确定,再加上首部长度)发生了什么变化:
标识
此字段尽管没有改变,每一个分片要复制这个字段的值。
这个字段与源主机的IP唯一确定一个数据报。当目的主机收到全部分片后,能够依据这个标识重装数据报,由于目的主机觉得标识号同样的是属于同一个数据报的。
标志
不分片
还有分片
分片偏移
还有分片
选项
选项字段主要用于网络測试与排错,前面提到IP数据报首部的长度是20字节~60字节。当中20字节是固定部分,剩余的字节数是选项部分多出来的。
选项部分的格式可分为:一个字节的类型字段、一个字节的长度字段以及可变长度的值的字段。
当中选项的类型能够分为六种:无操作、选项结束、记录路由、严格的源路由、不严格的源路由、时间戳。前两种是单字节的。后四种是多字节的
校验和
绝大多数TCP/IP协议採用差错控制的方法称为校验和。
校验和能够防止分组在传输期间出现损坏。以下说一下IP分组中的校验和:
首先把校验和字段置为0。然后把整个首部划分为16位的段,再将各段相加,把结果取反码插入到校验和字段中。要注意的是,IP分组中校验和仅仅覆盖首部,不包含数据。这个字段了解就可以