IP数据报格式
TCP/IP协议栈
网络层的协议:ARP、IP、ICMP、IGMP协议
IP数据报格式
IPv4
IP编制的历史阶段
- 分类的IP地址
- 子网的划分
- 构成超网(无分类编址方法)
分类的ip地址
IP地址:全世界唯一的32位/4字节标识符,标识路由器主机的接口
IP地址::={<网络号>,<主机号>}
网络类别 | 最大网络可用数 | 第一个可用网络编号 | 最后一个可用网络编号 | 每个网络中的最大主机数 |
---|---|---|---|---|
A | 2 7 − 2 2^7-2 27−2 | 1 | 126 | 2 24 − 2 2^{24}-2 224−2 |
B | 2 14 2^{14} 214 | 128.0 | 128.255 | 2 16 − 2 2^{16}-2 216−2 |
C | 2 21 2^{21} 221 | 192.0.0 | 233.255.255 | 2 8 − 2 2^{8}-2 28−2 |
在这里关于最大网络可用数存在疑惑:B类和C类究竟需不需要考虑全为0的情况,上述的情况是根据当前的实际情况所写,如果是按照考纲要求B类和C类的最大可用网络数应该在上述的基础上减去全为0的情况,第一个可用网络编号应该从1开始
特殊的IP地址
NetID网络号 | HostID主机号 | 作为IP分组源地址 | 作为IP分组目的地址 | 用途 |
---|---|---|---|---|
全0 | 全0 | 可以 | 不可以 | 本网范围内表示主机,路由表中用于表示默认路由 |
全0 | 特定值 | 不可以 | 可以 | 表示本网中某个特定主机 |
全1 | 全1 | 不可以 | 可以 | 本网广播地址(路由器不转发) |
特定值 | 全0 | 不可以 | 不可以 | 网络地址,表示一个网络 |
特定值 | 全1 | 不可以 | 可以 | 直接广播地址,对特定网络上的所有主机进行广播 |
127 | 任何数(非全0/1) | 可以 | 可以 | 用于本地网络换回测试,称为环回地址 |
私有IP地址
地址类别 | 地址范围 | 网段个数 |
---|---|---|
A类 | 10.0.0.0~10.255.255.255 | 1 |
B类 | 172.15.255.255~172.31.255.255 | 16 |
C类 | 192.168.0.0~192.162.255.255 | 256 |
缺点
- IP地址空间的利用率有的时候很低
- 两级IP地址不够灵活
网络地址转换
路由器对于目的地址是私有IP地址的数据报一律不进行转发
网络地址转换NAT:在专用网连接到因特网的路由器上安装NAT软件,安装了NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址
NAT路由器实际上就是进行了端口映射的操作
NAT技术
- 作用:主要用于实现内部的网络主机访问外部网络的功能
- 过程:当局域网需要访问外部网络的时候,通过NAT技术可以将其私网地址转换为公网地址,并且多个私网用户可以共用一个公网技术
- 优点:既可以保证网络互通,同时又节省了公网地址
NAT的应用场景
- 企业或者家庭所使用的网络为私有网络,使用的是私有地址;运营商维护的网络为公共网络,使用的共有地址。私有地址不能在公网中路由
- NAT一般部署在连接内网和外网的网关设备上
静态NAT
静态NAT实现了私有地址和公有地址的一一映射
一个公网IP只会分配给唯一且固定的内网主机
动态NAT
动态NAT是基于地址池来实现私有地址和公有地址的转换
在地址池里面存放着公网IP
内网中有多少个主机可以上网取决于存放在地址池中的公网IP数目
动态NAT是动态的实现的,不需要管理员进行操作
动态NAT和静态NAT只是对源地址进行转换
NAPT
网络地址端口转换NAPT允许多个内部地址映射到同一个公有地址的不同端口
NAPT是对源地址和源端口进行转换,不同的主机转换之后的地址相同,但是所对应的端口是不一样的,通过不同端口来区分部分的条目和会话
Easy IP
Easy IP允许将多个内部地址映射到网关出接口地址上的不同端口
静态NAT、动态NAT、NAPT、Easy IP都是为了实现内部向外部进行访问
NAT服务器
通过配置NAT服务器,可以使得外网用户访问内网服务器
子网划分
子网划分实际上就是将主机号中一部分较高的位数拿出来作为子网号,剩下的部分作为主机号
子网号能否为全0或者全1我们要根据实际情况做判断
主机号不能够全为1或者全为0
当单位划分子网后,对外仍然表现为一个网络,即本单位外的网络看不见本单位内子网的划分
子网掩码
**作用:**用于识别IP地址中的网络号和主机号的位数
对于网络号来说全为1,对于主机号来说全为0,如果说我们在进行了子网划分之后,子网掩码对于网络号和子网号来说都是1,对于主机号来说都为0
子网掩码与IP地址逐位相与,就能够得到子网网络地址
不同的子网可以使用不同的子网掩码
使用子网时的分组转发
路由表中的内容
- 目的网络地址
- 目的网络子网掩码
- 下一跳地址
路由转发分组算法
-
提取目的IP地址
-
是否直接交付
判断方法:目的地址和存在于路由器下的子网掩码逐位相与 -
查看特定主机路由:存在特定主机的IP地址
-
检测路由表中有无路径
用目的IP地址和路由表中的每一行的子网掩码都进行相与,如果发现某一行的子码掩码的结果和目的地址相与的结果刚刚好是目的网络,我们就可以按照那一行的情况进行转发 -
默认路由0.0.0.0,如果进行到这一步,说明在进行了以上操作之后还是无法转发,我们就将其转发给另外一个路由器,继续进行以上操作
-
丢弃,报告转发分组出错
无分类编址CIDR
无分类域间路由选择CIDR
感觉就是对地址进行不同层次的划分,选出一个最佳的划分方式
特点:
-
消除了传统的ABC类地址以及子网划分的概念
CIDR记法:IP地址后加上"/",然后写上网络前缀(可以是任何长度)的位数
-
融合了子网地址和子网掩码
CIDR将网络前缀都相同的连续的IP地址组成一个CIDR地址块
写法:地址块中的最小地址和网络前缀的位数组合在一起
构成超网
将多个子网聚合成一个较大的子网,叫做构成超网,或者路由聚合
构成超网的方法:将网络前缀缩短
最长前缀匹配
使用CIDR的时候,查找路由表可能得到几个匹配的结果,应该选择具有最长网络前缀的路由。前缀越长,地址块越小,路由越具体
ARP协议
使用ARP协议的原因
实际网络在链路上传输数据的时候,一定需要使用MAC地址
局域网通信使用的是MAC地址
ARP协议解决的问题
完成主机或者路由器IP地址到MAC地址的映射,即ARP协议用于解析目标主机的MAC地址,且ARP协议只能够在同一个广播域内生效
ARP协议的使用过程
检查ARP高速缓存,有对应表项则写入MAC帧,没有则用目的MAC地址FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求分组,同一局域网中的主机都能够收到该请求。目的主机收到请求后就会向源主机单播一个ARP响应分组,源主机收到后将此映射写入ARP缓存
ARP协议的四种典型情况
- 主机A发送给本网络上的主机B:用ARP找到主机B的硬件地址
- 主机A发给另一网络上的主机B:用ARP找到本网络上的默认网关的硬件地址
- 路由器发给本网络上的主机A:用ARP找到主机A的硬件地址
- 路由器发给另一网络上的主机B:用ARP找到本网络上的一个路由器的硬件地址
DHCP协议
主机获取IP地址的方法:
-
静态配置
配置的内容
- IP地址
- 默认网关:局域网内的主机和外界进行交流的关口
- 子网掩码
-
动态配置
定义
DHCP协议(动态主机配置协议):是应用层的协议,使用C/S方式,客户端和服务端通过广播的方式进行交互,是基于UDP的
DHCP协议提供即插即用的联网机制,主机可以从服务器动态获取IP地址、子网掩码、默认官网、DNS服务器名称与IP地址,允许地址重用,支持移动用户加入网络,支持在用户地址续租
DHCP分配的IP地址是具有时间限制的,当超过时间限制之后,我们可以通过向DHCP服务器重新申请IP地址
工作流程
-
主机广播DHCP发现报文
试图找到网络中的服务器,从服务器获得一个IP地址
-
DHCP服务器广播DHCP提供报文
服务器拟分配给主机一个IP地址和相关的配置文件,先到先得
-
主机广播DHCP请求报文
主机向服务器请求提供的IP地址
-
DHCP服务器广播DHCP确认报文
正式将IP地址分配给主机
ICMP协议
支持路由器或者主机实现差错报告、网络探询,其功能主要体现在发送特定的ICMP报文
类型
ICMP差错报文
类型
- 终点不可达:当路由器或者主机不能够交付数据报的时候就向源点发送终点不可达报文
- 源点抑制:当路由器或者主机由于拥塞而丢弃数据报的时候,就向源点发送源点抑制报文,使得源点知道应当把数据报发送速率方慢
- 时间超过:当路由器收到生存时间TTL=0的数据报的时候,除了丢弃该数据报之外,还需要向源点发送时间超过报文。当终点在预先规定的时间内不能够收到一个数据报的全部数据片的时候,就将已经收到的数据报片全部丢弃掉,并向源点发送时间超过报文
- 参数问题:当路由器或者目的主机收到的数据报的首部中有的字段的值不正确的时候,就丢弃掉该数据报,并向源点发送参数问题报文
- 改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应该将数据报发送给其他的路由器
ICMP差错报告报文数据字段
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-602fAhL7-1629040860655)(…/…/picture/image-20210813223434091.png)]
不应该返回ICMP差错报告报文的情况
- 对ICMP差错报告报文不再发送ICMP差错报告报文
- 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
- 对具有组播地址的数据报都不发送ICMP差错报告报文
- .对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文。
ICMP询问报文
- 回送请求和回答报文(ping)
主机或者路由器向特定主机发出的询问,收到此报文的主机必须给源主机或者路由器发送ICMP回送回答报文
测试目的站是否可达以及是否了解其相关状态 - 时间戳请求和回答报文
请某个主机或者路由器回答当前的日期和时间
进行时间的同步和时间的测量 - 掩码地址请求和回答报文
- 路由器询问和通告报文
ICMP的应用
- PING:测试两个主机之间的连通性,使用了ICMP回送请求和回答报文
- Traceroute:跟踪一个分组从源点到终点的路径,使用了ICMP时间超过差错报告报文
IPv6
IPv6产生的原因:32位的IPv4地址空间已经分配完了,使用IPv6可以从根本上解决地址耗尽的问题
IPv6相比于IPv4
- 改进了首部的格式
- 支持快速处理/转发数据报
- 支持QoS
IPv6数据报
IPv6的地址表示形式
- 一般形式:冒号16进制记法,每4位用一个16进制数来表示
- 压缩形式:只要存在0,每4位我们就将其写为一个0,如果某一位最前面的数据0,我们可以只写每一位最后的数字
0压缩:一连串的连续的0可以被一对冒号取代,双冒号表示法在一个地址中仅仅可以出现一次
IPv6基本地址类型
单播
一对一通信,既可以做源地址,又可以做目的地址
多播
一对多通信,只可以做目的地址
任播
一对多中的一个通信,只可以做目的地址
IPv6向IPc4过渡的策略
双栈协议
是指在一台设备上同时启用IPv4协议栈和IPv6协议栈。这样的话,这台设备既能够和IPv4网络通信,又能够和IPv6网络通信。如果这台设备是一个路由器,那么这台路由器的不同接口上,分别配置了IPv4和IPv6地址,并且很可能分别连接了IPv4网络和IPv6网络。如果这台设备是一个计算机,那么它将同时拥有IPv4和IPv6地址,并且具有同时处理这两个协议地址的功能
隧道技术
通过使用互联网络的基础设施在网络之间传递数据的方式。使用隧道传递的数据(或负载)可以是不同协议的数据帧或包。隧道协议将其它协议的数据帧或包重新封装然后通过隧道发送
对比IPv4和IPv6
- IPv6将地址从32位扩大到128位,拥有更大的地址空间
- IPv6将IPv4的校验和字段彻底移除,减少了每跳处理的时间
- IPv6将IPv4的可选字段移出了首部,变成了扩展首部,成为更加灵活的首部格式,路由器通常不对扩展首部进行检查,大大提高了路由器的处理效率
- IPv6支持即插即用,不需要DHCP协议
- IPv6首部的长度必须是8B的整数倍,IPv4是4B的整数倍
- IPv6只能够在主机处分片,IPv4可以在主机和路由器处分片
- ICMPv6:附加报文类型"分组太大"
- IPv6支持资源的预分配,支持实时视像等要求,保证一定的带宽和时延的应用
- IPv6取消了协议字段,改成下一个首部字段
- IPv6取消了总长度字段,改用有效载荷长度字段
址从32位扩大到128位,拥有更大的地址空间 - IPv6将IPv4的校验和字段彻底移除,减少了每跳处理的时间
- IPv6将IPv4的可选字段移出了首部,变成了扩展首部,成为更加灵活的首部格式,路由器通常不对扩展首部进行检查,大大提高了路由器的处理效率
- IPv6支持即插即用,不需要DHCP协议
- IPv6首部的长度必须是8B的整数倍,IPv4是4B的整数倍
- IPv6只能够在主机处分片,IPv4可以在主机和路由器处分片
- ICMPv6:附加报文类型"分组太大"
- IPv6支持资源的预分配,支持实时视像等要求,保证一定的带宽和时延的应用
- IPv6取消了协议字段,改成下一个首部字段
- IPv6取消了总长度字段,改用有效载荷长度字段
- IPv6取消了服务类型字段