1. IP协议
1.1. Internet 协议特征
- 运行于 OSI 网络层
- 面向无连接的协议
- 独立处理数据包
- 分层编址
- 尽力而为传输
- 无数据恢复功能
1.2. IP PDU 报头

- 版本:占4位,指 IP 协议的版本目前的IP协议版本号为4
- 首部长度:占4位,可表示的最大数值是15个单位,一个单位为4字节,因此IP 的首部长度的最大值是60字节
- 区分服务:占8位,用来获得更好的服务,在旧标准中叫做服务类型,但实际上一直未被使用过.后改名为区分服务.只有在使用区分服务(DiffServ)时,这个字段才起作用.一般的情况下不使用
- 总长度:占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
/proc/sys/net/ipv4/ip_default_ttl
- 协议:占8位,指出此数据报携带的数据使用何种协议以便目的主机的IP层将数据部分上交给哪个处理过程, 1表示为 ICMP 协议, 2表示为 IGMP 协议, 6表示为 TCP 协议, 17表示为 UDP 协议
- 首部检验和:占16位,只检验数据报的首部不检验数据部分.这里不采用 CRC 检验码而采用简单的计算方法
- 源地址和目的地址:都各占4字节,分别记录源地址和目的地址
1.3. IP PDU 报头示例
- 片偏移以8个字节为偏移单位,假定MTU=1500
- 三个包标识 ID都相同,三个包DF都为0,前两个MF=1,最后一个MF=0

2. IP地址
它们可唯一标识 IP 网络中的每台设备
每台主机(计算机、网络设备、外围设备)必须具有唯一的地址
IP地址由两部分组成
- 网络ID:
- 标识网络
- 每个网段分配一个网络ID ,最后的主机IP为均为0(主机位全部为1代表广播信息,注意这个IP广播和ARP广播的区别)
- 主机 ID:
- 标识单个主机
- 由组织分配给各设备
- 早期分为A,B,C,D,E等类,用于判断大网核心网,现在的无类地址用子网掩码来判断IP的网段了。
2.1. 特殊的IP地址:
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.2. 注意点:
C私网地址:192.168.0.0-192.168.255.0
B私网地址:172.16.0.0-172.31.0.0
A私网地址: 10.0.0.0-10.255.255.255
主机ID为全为0代表此网段,全为1代表此网段广播,需要剔除网段中这两个IP
注意私有地址只在局域网中,在公网中显示的都是公有地址,会有一个转换过程。
2.3. 分类IP地址
2.3.1. A类:1-126
0 000 0000 - 0 111 1111: {1-127}
网络数:126, 127
每个网络中的主机数:2^24-2 = 16777214个
默认子网掩码:255.0.0.0
私网地址:10.0.0.0-10.255.255.255
按A类标准(子网掩码8)则私网网络数量为1个 ,每个网络内主机数同上为16777214个
2.3.2. B类:128-191
10 00 0000 - 10 11 1111:{128-191}
网络数:2^14
每个网络中的主机数:2^16-2 = 65534个
默认子网掩码:255.255.0.0
私网地址:172.16.0.0-172.31.255.255
按B类标准(子网掩码16)则私网网络数量为16个,每个网络内主机数同上为65534个
2.3.3. C类:192-223
110 0 0000 - 110 1 1111: {192-223}
网络数:2^21
每个网络中的主机数:2^8-2 = 254个
默认子网掩码:255.255.255.0
私网地址:192.168.0.0-192.168.255.255
按C类标准(子网掩码24)则私网网络数量为255个,每个网络内主机数同上为254个
2.3.4. D类:组播
1110 0000 - 1110 1111: {224-239}
2.3.4.1. E类:保留未使用
240-255
3. 子网掩码
子网掩码判断对方一个IP是否和自己在同一网段的时候
- 本机网段就是子网掩码位和自己的IP位相与即可
- 而判断对方的IP是否和自己在同一个网段,要拿自己的子网掩码来与对方的IP,看其得到的结果是否和自己的网段相同来判断。
子网掩码前面的位必须为1,中间不能有0然后再出现1这种情况
复习知识:路由协议高于ARP协议,ARP广播之前就需要先判断目标IP是否和自己在一个网段,在一个网段直接ARP广播找MAC,不在一个网段则去找路由网关MAC(这也就解释了为何路由表的网关设置为0.0.0.0之后,当寻找这一项前面对应写的目标网段内的IP地址时,ARP就直接发送广播来找想要连接的IP地址的MAC了。因为0.0.0.0就代表任何地址或者说未知地址,或者简单一点就把自己当做路由,如果网关是个特定的IP,肯定是要用ARP广播寻找这个特定IP的MAC的,发送广播的时候目标地址写的就是这个网关特定IP地址,但是因为写是0.0.0.0,未知,所以ARP发送广播的时候目标地址就直接写了最初想要连接的主机的IP了,如果说目标地址和本机地址不在一个网段,也会让它强行广播直接寻找,这样在交换机上物理连接的不同网段就能互通了。)
00000000 0
10000000 128
11000000 192
11100000 224
11110000 240
11111000 248
11111100 252
11111110 254
11111111 255
4. 划分子网和合并超网
- 划分子网:将一个大网(主机ID位多)划分成多个小网(主机ID位数少),原有网络ID位数不变,新的小网的网络ID变多,主机ID位变少,原有网络ID位向主机ID借位。
- 合并超网:刚好与上一过程相反。
5. 一些计算方法公式
- 网络中主机数=2^主机ID位-2=2^(32-网络ID位)-2
- 网络数=2^可变网络ID位
- 网络ID=IP与netmask
- 无类地址CIDR表示法:IP/网络ID位数,CIDR表示法,无类域间路由
- 划分子网数=2^网络ID向主机ID借位的位数(1分为两个子网,2分为4子网,以此类推,但别忘了修改子网掩码)
- 划分超网:合并多个小网成为一个大网,主机ID向网络ID借位
留言