IPv4
网络层打包传输数据时,数据量小则称IP数据报,数据量大则分片,每一片称为IPv4分组
分组格式
固定部分长20B,可变部分用于提供错误检测和安全等机制
- 版本:指IP版本
- 首部长度:以4B为单位,最大值为60B,常用的20B表示不使用任何选项
- 总长度:首部和数据之和的长度
- 标识:计数器,每产生一个数据报就+1,每当数据包长度超过网络MTU时,必须分片,每个数据报片都复制一次标识号,用于重新组装
- 标志:最低位MF为1时才能分片,MF=0表明最后一个分片,中间位DF=0时才能分片
- 片偏移:某片在原分组中的相对位置,以8B为单位
- 首部校验和:检验分组的首部,不校验数据部分
- 生存时间TLL:数据报在网络中可通过路由器数最大值,标识分组在网络中的寿命,以确保分组不会永远在网络中循环,转发前-1,为0时丢弃
- 协议:指明数据部分采用哪个传输层协议
- 源地址/目的地址:发送方/接收方的IP地址
转发分组流程
- 1、从首部取出目的地址和源地址
- 2、检查是否目的地址是否与路由器直接相连,若是则直接交付给目的主机,否则是间接交付,执行步骤3
- 3、若路由表中有符合的目的地址的特定路由,有则传送给指定的路由,否则执行步骤4
- 4、若路由器中有到到达目的地址的路由,则将数据报传送给指定路由器,否则执行步骤5
- 5、若路由表有默认路由,则传送给默认路由,没有则报告出错
在拿到下一跳路由器的IP地址时,不是直接将其填入数据报,而是将IP地址转换为MAC地址,放在MAC帧首部,根据MAC地址找到下一跳路由器,不同网络中传送时,MAC的源地址和目的地址会改变,但网桥转发时不改变
IPv4地址
组成与分类
连接到因特网上的每台组局都分配一个32bit的全球唯一标识符,分为A-E五类
网络号标志主机所连接到的网络,主机号标志主机,都是唯一
特点
- IP地址分成网络化和主机号两部分,使得主机号作为第二级由单位自行分配,转发分组时只需考虑网络号,方便
- IP地址是标志一台主机和一条链路的接口,当一台主机连接到了两个网络,主机就得有两个IP地址
- 用网桥等连接的LAN,网络号仍然相同
- 所有网络平等
- 同一局域网内所有联网设备网络号一样
NAT
网络地址转换NAT通过将专用网络地址转换为公用地址,从而对外隐藏内部管理的IP地址,它使得整个专用网只需一个IP地址就可联网,且内部IP地址可重用,隐藏了内部结构
私有IP地址
私有IP地址,依赖NAT转换为合法IP地址,无法直接联网,在因特网中的所有路由器,对目的地址是私有地址的数据报一律不进行转发。这种采用私有IP地址的互联网络称为专用互联网或本地互联网。私有IP地址也称可重用地址
子网
两级IP地址对IP地址空间的利用率有时很低,给每个物理网络分配一个网络号会使得路由表太大而使得网络性能变坏,而且也不够灵活
因此提出子网号字段,形成三级IP地址,这么做叫子网划分
转发时依旧根据网络号转发,到本单位网络后,根据子网号查找目的主机
子网掩码
外部网络想获取单位子网网络时,需要通过将目的主机的IP地址与子网掩码进行逻辑与,默认子网掩码都是网络号和子网号都为1,主机号区域都为0
当需要分组转发时,路由表内每个条目都需要给出目的网络地址和下一跳地址、目的网络的子网掩码
同属一个子网的所有主机和路由器的端口,都需要设置一样的子网掩码
跟前面的分组转发步骤差不多,都是先检查直接交替是否可以,不可以则按特定路由,可路由表可得路由、默认路由的顺序进行路由
无分类域间路由选择CIDR
消除了ABC类和子网的概念
提出了超网/路由聚合的概念,缩短了路由表
地址解析地址ARP
IP地址是网络层使用的地址,它是分层次等级的。
硬件地址是数据链路层使用的地址(如MAC地址),它是平面式的。
在网络层及网络层之.上使用IP地址,IP地址放在IP数据报的首部,
而MAC地址放在MAC帧的首部。
通过数据封装,把IP数据报分组封装为MAC帧后,数据链路层看不见数据报分组中的IP地址。
无论网络层使用什么协议,在实际的链路上传送时,都需要使用硬件地址,因此需要一种方法来完成IP地址到MAC地址的映射,这就是地址解析地址协议
每个主机都有一个ARP高速缓存,存放ARP表,使用ARP来动态维护此ARP表
动态主机配置协议-DHCP
给主机动态分配IP地址,允许主机加入新网络后获取IP地址,无需手动参与
DHCP实质上是应用层协议,基于UDP
工作原理
使用C/S方式
需要IP地址的主机会在启动时向DHCP服务器广播发送发现报文,此时主机成为DHCP客户,本地网络所有主机都能收到,但只有DHCP服务器才能应答,发出提供报文
DHCP服务器先在数据库中查找对应主机的配置信息,找到则返回,找不到则从IP地址池取一个地址分配给该主机
网际控制报文协议-ICMP
ICMP协议支持主机或路由器通过发送特点ICMP报文进行差错报告和网络探询来提高转发IP数据包和交付成功的机会
ICMP报文包含ICMP差错报文、ICMP询问报文
ICMP差错报告报文
- 终点不可达:路由器或主机不能交付数据报时就向源点发送终点不可达报文
- 源点抑制:当路由器或主机由于堵塞而丢弃数据报时,就向源点发送源点抑制报文,使源点把传输数据速率放慢
- 时间超过:当路由器收到生存时间TLL=0的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文,当终点在预定时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都求其,并向源点发送时间超过报文
- 参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不对时,就丢弃数据报,并向源点发送参数问题报文
- 改变路由/重定向:路由器把改变路由报文发送给主机,让主机下次选择发送给另外的路由器
ICMP询问报文
回送请求和回答报文:主机/路由器向特定主机发出询问,收到此报文的主机必须给源主机/路由器发送ICMP回送回答报文,测试目的是否可达及其相关状态
时间戳请求和回答报文:请求某个主机/路由器回答当前的日期和实际,进行时钟同步和测量时间
ICMP应用
ICMP两个常见应用是分组网间探测PING和Traceroute/Tracert,分别用于测试两台主机间连通性和跟踪分组经过的路由
其中PING使用了回送请求和回答报文,工作在应用层
Tracert则是使用了时间超过报文,工作在网络层