IPv4
IPv4分组
- 现在普遍使用的IP(版本4);
- IP定义数据传输的基本单元:IP分组以及确切的数据格式;
IPv4分组格式
注意 在IP数据报首部中有三个关于长度的标记,其对应单位分别是:首部长度4B,总长度1B,片偏移8B;
IP数据报分片
- IP分片例子
网络层转发分组的流程
- 路由器执行分组转发算法:
- 从数据报的首部提取目的主机的IP地址D,得出目的网络地址N;
- 若网络N与此路由器直接相连,则把数据报直接交付给目的主机D,这称为路由器的直接交付;
- 若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;
- 若路由表中有到达网络N的路由,则把数据报传送给路由表所指明的下一跳路由器;
- 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;
- 报告转发分组出错;
注意
- 得到下一跳路由器的IP地址后并不是直接将该地址填入待发送的数据报,而是将IP地址通过ARP转换成MAC地址,将其放到MAC帧的首部,然后根据这个MAC地址找到下一跳路由器;
- 在不同网络中传送时,MAC帧中的源地址和目的地址要发生变化,但是网桥再转发帧时,不改变帧的源地址;
IPv4地址与NAT
IPv4地址
网络类别 | 最大可用网络数 | 第一个可用的网络号 | 最后一个可用的网络号 | 每个网络中的最大主机数 |
---|
A | 27-1 | 1 | 126 | 224-2 | B | 214-1 | 128.1 | 191.255 | 216-2 | C | 221-1 | 192.0.1 | 223.255.255 | 28-2 |
- IP地址特点
- 由网络号和主机号两部分组成,是一种分等级的地址结构;
- 分等级好处:
- 在分配IP地址时只分配网络号,主机号由网络单位自行分配,方便了IP地址的管理;
- 路由器仅根据目的主机所连接网络号来转发分组,减小了路由表所占的存储空间;
- 是标志一台主机或路由器和一条链路的接口;
- 用转发器或网桥连接的若干LAN仍然是同一个网络,同一个广播域;
- 所有分配到网络号的网络都是平等的;
- 在同一个局域网上的主机或路由器的IP地址中的网络号必须是一样的,路由器总是具有两个或两个以上的IP地址,路由器的每个端口都有一个不同网络号的IP地址;
网络地址转换
- 通过将专用网络地址转换为公用地址,从而对外隐藏内部管理的IP地址;
- 使得整个专用网只需要一个全球IP地址就可以与因特网相连通,由于专用网本地IP地址可重用,所以NAT大大节省了IP地址的消耗;
- 私有IP地址网段:
- A类:1个A类网段,10.0.0.0 ~ 10.255.255.255
- B类:16个B类网段,172.16.0.0 ~ 172.31.255.255;
- C类:256个C类网段,192.168.0.0 ~ 192.168.255.255;
- 在因特网中的所有路由器,对目的地址是私有地址的数据报一律不进行转发,这种采用私有IP地址的互联网称为专用互联网或本地互联网,私有IP地址也称可重用地址;
注意 普通路由器在转发IP数据报时,不改变其源IP地址和目的IP地址,而NAT路由器在转发IP数据报时,一定要更换其IP地址,转换源地址或目的地址,普通路由器仅工作在网络层,而NAT路由器转发数据报时需要查看和转换传输层的端口号;
子网划分与子网掩码、CIDR
子网划分
- 两级IP地址的缺点:
- IP地址空间的利用率有时很低;
- 给每个目的网咯分配一个网络号会使路由表变得太大而使网络性能变坏;
- 两级的IP地址不够灵活;
- 子网划分的基本思路:
- 子网互粉纯属一个单位内部的事情,单位对外仍然表现为没有划分子网的网络;
- 从主机号借用若干比特作为子网号,当然主句号也就相应减少了相同的比特;
- 凡是从其他网络发送给本单位某台主机的IP数据报,仍然是根据IP数据报的目的网络号,先找到连接到本单位网络上的路由器,然后该路由器在收到IP数据报后,按目的网络号和子网号找到目的子网,最后把IP数据报直接交付给目的主机;
子网掩码
- 使用子网掩码来表达对原网络中的主机号的借位;
- 路由器在相互之间交换信息时,必须把自己所在网络或子网的子网掩码告诉对方,路由表中的每个条目,除要给出目的网络地址和下一跳地址外,还要同时给出该目的网络的子网掩码;
- 使用子网掩码时路由器的分组转发算法如下:
- 从收到的分组首部提取目的IP地址,记为D;
- 先判断是否为直接交付,对路由器直接相连的网络逐个进行检查:用各网络的子网掩码和D逐位相“与”,看结果是否和相应的网络地址匹配,若匹配则将分组直接交付;
- 若路由表中由目的地址为D的特定主机路由,则将分组传送给路由表中所指明的下一跳路由器;
- 对路由表的每一行中的子网掩码和D逐位相“与”,其结果为N,若N与该行的目的网络地址相配,则将该分组传送给该行指明的下一跳路由器;
- 若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;
- 报告转发分组出错;
无分类域间路由选择(CIDR)
- 主要特点:
- 消除了传统A、B、C类地址及划分子网的概念,因而可以更有效地分配IPv4的地址空间;
- 将网络前缀都相同的连续IP地址组成“CIDR地址块”;
- CIDR查找路由表的方法:为了更加有效地查找最长前缀匹配,通常将五分类编址地路由表存放在一种层次式数据结构中,然后自上而下地按层次进行查找,最常用地数据结构就是二叉线索;
ARP、DHCP和ICMP
IP地址与硬件地址
- IP地址式网络层使用的地址,是分层次等级的;
- 硬件地址是数据链路层使用的地址,他是平面式的;
注意
- 在IP层抽象的互联网上只能看到IP数据报;
- 虽然在IP数据报首部中有完整的源IP地址和目的IP地址,但路由器只根据目的IP地址的网络号进行路由选择;
- 在局域网的数据链路层,只能看见MAC帧,而通过路由器转发IP分组时,此IP分组在每个网络中都被路由器解封装和重新封装,因此IP数据报在被路由器转发时,其数据链路层封装所使用的MAC地址是不断变换的,这也决定了无法使用MAC地址跨网络通信;
- 尽管互联在一起的网络的硬件地址体系各不相同,但IP层抽象的互联网却屏蔽了下层这些复杂的细节,只要我们在网络层上讨论问题,就能够使用统一的、抽象的IP地址研究主机与主机或路由器之间的通信;
- 路由器由于互联多个网络,因此他不仅有多个IP地址,也有多个硬件地址;
地址解析协议(ARP)
- 完成IP地址到MAC地址的映射;
- ARP工作在网络层,其工作原理为:
- 首先,每台主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址的对应关系;
- 当源主机需要将一个数据包要发送到目的主机时,会首先检查自己ARP列表中是否存在该IP地址对应的MAC地址,如果有,就直接将数据包发送到这个MAC地址;如果没有,就向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址;
- 此ARP请求数据包里包括源主机的IP地址、硬件地址、以及目的主机的IP地址;
- 网络中所有的主机收到这个ARP请求后,会检查数据包中的目的IP是否和自己的IP地址一致;
- 如果不相同就忽略此数据包;
- 如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个ARP响应数据报,告诉对方自己是它需要查找的MAC地址;
- 源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。如果源主机一直没有收到ARP响应数据报,表示ARP查询失败;
- ARP的4种典型情况:
- 发送方是主机时,要把IP数据报发送到本网络上的另一台主机,这时用ARP找到目的主机的硬件地址;
- 发送方是主机时,要把IP数据报发送到另一个网络的一台主机,这时用ARP找到本网络上的一个路由器的硬件地址,剩下的工作由这个路由器完成;
- 发送方式路由器时,要把IP数据报转发到本网络上的一台主机,这时用ARP找到目的主机的硬件地址;
- 发送方式路由器时,要把IP数据报转发到另一个网络上的一台主机,这时用ARP找到本网络上的一个路由器的硬件地址,剩下的工作由找到的这个路由器完成;
动态主机配置协议(DHCP)
- DHCP是应用层协议,是基于UDP的;
- DHCP服务器聚合DHCP客户端的交换过程如下:
- DHCP客户机广播“DHCP发现”消息,试图找到网络中的DHCP服务器,以便从DHCP服务器获得一个IP地址;
- DHCP服务器找到“DHCP发现”消息后,像网络中广播“DHCP提供”消息,其中包括提供DHCP客户机的IP地址和相关配置信息;
- DHCP客户机收到“DHCP提供”消息,如果接收DHCP服务器所提供的相关参数,那么通过广播“DHCP请求”消息向DHCP服务器请求提供IP地址;
- DHCP服务器广播“DHCP确认”消息,将IP地址分配给DHCP客户机;
- 采用UDP而不采用TCP的原因:TCP需要建立连接,如果连对方的IP地址都不知道,那么更不可能通过双方的套接字建立连接;
网际控制报文协议(ICMP)
- ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去,ICMP是IP层协议;
- ICMP报文种类:ICMP差错报告报文和ICMP询问报文;
- 5种类型:
- 终点不可达:当路由器或主机不能交付数据报时;
- 源点抑制:当路由器或主机由于拥塞而丢弃数据报时;
- 时间超过:当路由器收到生存时间TTL为零的数据报时;
- 参数问题:当路由器或目的主机收到的数据报的首部中有的字段值不正确时;
- 改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器;
- 不应发送ICMP差错报文的几种情况:
- 对ICMP差错报告报文不在发送ICMP差错报告报文;
- 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文;
- 对具有组播地址的数据报都不发送ICMP差错报告报文;
- 对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文;
- ICMP询问报文:
- 回送请求和回答报文;
- 时间戳请求和回答报文;
- 掩码地址请求和回答报文;
- 路由器询问和通告报文;
|