【计算机网络】网络层——IPv4

文章目录

      • IPv4
        • IPv4分组
          • IPv4分组格式
          • IP数据报分片
          • 网络层转发分组的流程
        • IPv4地址与NAT
          • IPv4地址
          • 网络地址转换
        • 子网划分与子网掩码、CIDR
          • 子网划分
          • 子网掩码
          • 无分类域间路由选择(CIDR)
        • ARP、DHCP和ICMP
          • IP地址与硬件地址
          • 地址解析协议(ARP)
          • 动态主机配置协议(DHCP)
          • 网际控制报文协议(ICMP)

IPv4

IPv4分组
  • 现在普遍使用的IP(版本4);
  • IP定义数据传输的基本单元:IP分组以及确切的数据格式;
IPv4分组格式
  • 由首部和数据部分组成;

  • 首部长度固定,共20B,是所有IP分组必须有的;

  • 在首部固定部分后面有一些可选字段,长度可变,用来提供错误检测及安全等机制;

  • IP数据报格式
    【计算机网络】网络层——IPv4_第1张图片

  • IP首部重要部分字段含义:

    1. 版本:指IP的版本,目前广泛使用的版本号为4;
    2. 首部长度:占4位,可以表示的最大十进制数为15,以32位为单位,最大值位60B,最常用首部长度是20B,此时不使用任何选项;
    3. 总长度:占16位,指首部和数据之和的长度,单位为字节,因此数据报最大长度为216-1 = 65535B,以太帧的最大传送单元MTU为1500B,因此当一个IP数据报封装成帧时,数据报的总长度一定不能超过下面的数据链路层的MTU值;
    4. 标识:占16位,是一个计数器,每产生一个数据报就加1,并赋值给标识字段,但他不是序号(IP是无连接服务),当一个数据报的长度超过网络的MTU时,必须分片,此时每个数据报片都复制一次标识号,以便能正确重装成原来的数据报;
    5. 标志:占3位,最低位MF,MF = 1表示后面还有分片,MF = 0表示最后一个分片;中间位DF,只有当DF = 0 才允许分片;
    6. 片偏移:占13位,较长的分组在分片后,某片在原分组中的相对位置,片偏移以8个字节为偏移单位,即每个分片的长度一定是8B的整数倍;
    7. 生存时间TTL:占8位,数据报在网络中可通过的路由器数的最大值,标识分组在网络中的寿命,以确保分组不会永远在网络中循环,路由器在转发分组前,先把TTL减1,若TTL被减为0,则该分组必须丢弃;
    8. 协议:占8位,指出此分组携带的数据使用哪种协议,6为TCP,17为UDP;
    9. 首部校验和:占16位,IP数据报首部校验和之校验分组的首部,而不校验数据部分;
    10. 源地址字段:占4B,标识发送方的IP地址;
    11. 目的地址字段:占4B,标识接收方的IP地址;

注意
在IP数据报首部中有三个关于长度的标记,其对应单位分别是:首部长度4B,总长度1B,片偏移8B;

IP数据报分片
  • IP分片例子
    【计算机网络】网络层——IPv4_第2张图片
网络层转发分组的流程
  • 路由器执行分组转发算法:
    1. 从数据报的首部提取目的主机的IP地址D,得出目的网络地址N;
    2. 若网络N与此路由器直接相连,则把数据报直接交付给目的主机D,这称为路由器的直接交付;
    3. 若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;
    4. 若路由表中有到达网络N的路由,则把数据报传送给路由表所指明的下一跳路由器;
    5. 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;
    6. 报告转发分组出错;

注意

  • 得到下一跳路由器的IP地址后并不是直接将该地址填入待发送的数据报,而是将IP地址通过ARP转换成MAC地址,将其放到MAC帧的首部,然后根据这个MAC地址找到下一跳路由器;
  • 在不同网络中传送时,MAC帧中的源地址和目的地址要发生变化,但是网桥再转发帧时,不改变帧的源地址;
IPv4地址与NAT
IPv4地址
  • 连接到因特网上的每台主机或路由器都分配一个32比特的全球唯一标识符,即IP地址;

  • IP地址 := {<网络号> <主机号>};

  • 网络号标志主机或路由器所连接到的网络,一个网络号在整个因特网范围内必须是唯一的;

  • 主机号标志该主机或路由器;

  • 分类的IP地址
    【计算机网络】网络层——IPv4_第3张图片

  • 不用做主机的IP地址

    • 主机号全为0表示本网络本身;
    • 主机号全为1表示本网络的广播地址,又称直接广播地址;
    • 127.0.0.0保留为环回自检地址,表示任意主机本身,目的地址为环回地址的IP数据报永远不会出现在任何网络上;
    • 32位全为0,即0.0.0.0表示本网络上的本主机;
    • 32位全为1,即255.255.255.255表示整个TCP/IP网络的广播地址,又称受限广播地址;
  • 常用的三种类别IP地址的使用范围

网络类别 最大可用网络数 第一个可用的网络号 最后一个可用的网络号 每个网络中的最大主机数
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地址特点
    1. 由网络号和主机号两部分组成,是一种分等级的地址结构;
      • 分等级好处:
        1. 在分配IP地址时只分配网络号,主机号由网络单位自行分配,方便了IP地址的管理;
        2. 路由器仅根据目的主机所连接网络号来转发分组,减小了路由表所占的存储空间;
    2. 是标志一台主机或路由器和一条链路的接口;
    3. 用转发器或网桥连接的若干LAN仍然是同一个网络,同一个广播域;
    4. 所有分配到网络号的网络都是平等的;
    5. 在同一个局域网上的主机或路由器的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地址的缺点:
    1. IP地址空间的利用率有时很低;
    2. 给每个目的网咯分配一个网络号会使路由表变得太大而使网络性能变坏;
    3. 两级的IP地址不够灵活;
  • 子网划分的基本思路:
    • 子网互粉纯属一个单位内部的事情,单位对外仍然表现为没有划分子网的网络;
    • 从主机号借用若干比特作为子网号,当然主句号也就相应减少了相同的比特;
    • 凡是从其他网络发送给本单位某台主机的IP数据报,仍然是根据IP数据报的目的网络号,先找到连接到本单位网络上的路由器,然后该路由器在收到IP数据报后,按目的网络号和子网号找到目的子网,最后把IP数据报直接交付给目的主机;
子网掩码
  • 使用子网掩码来表达对原网络中的主机号的借位;
  • 路由器在相互之间交换信息时,必须把自己所在网络或子网的子网掩码告诉对方,路由表中的每个条目,除要给出目的网络地址和下一跳地址外,还要同时给出该目的网络的子网掩码;
  • 使用子网掩码时路由器的分组转发算法如下:
    1. 从收到的分组首部提取目的IP地址,记为D;
    2. 先判断是否为直接交付,对路由器直接相连的网络逐个进行检查:用各网络的子网掩码和D逐位相“与”,看结果是否和相应的网络地址匹配,若匹配则将分组直接交付;
    3. 若路由表中由目的地址为D的特定主机路由,则将分组传送给路由表中所指明的下一跳路由器;
    4. 对路由表的每一行中的子网掩码和D逐位相“与”,其结果为N,若N与该行的目的网络地址相配,则将该分组传送给该行指明的下一跳路由器;
    5. 若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;
    6. 报告转发分组出错;
无分类域间路由选择(CIDR)
  • 主要特点:
    • 消除了传统A、B、C类地址及划分子网的概念,因而可以更有效地分配IPv4的地址空间;
    • 将网络前缀都相同的连续IP地址组成“CIDR地址块”;
  • CIDR查找路由表的方法:为了更加有效地查找最长前缀匹配,通常将五分类编址地路由表存放在一种层次式数据结构中,然后自上而下地按层次进行查找,最常用地数据结构就是二叉线索;
ARP、DHCP和ICMP
IP地址与硬件地址
  • IP地址式网络层使用的地址,是分层次等级的;
  • 硬件地址是数据链路层使用的地址,他是平面式的;

注意

  1. 在IP层抽象的互联网上只能看到IP数据报;
  2. 虽然在IP数据报首部中有完整的源IP地址和目的IP地址,但路由器只根据目的IP地址的网络号进行路由选择;
  3. 在局域网的数据链路层,只能看见MAC帧,而通过路由器转发IP分组时,此IP分组在每个网络中都被路由器解封装和重新封装,因此IP数据报在被路由器转发时,其数据链路层封装所使用的MAC地址是不断变换的,这也决定了无法使用MAC地址跨网络通信;
  4. 尽管互联在一起的网络的硬件地址体系各不相同,但IP层抽象的互联网却屏蔽了下层这些复杂的细节,只要我们在网络层上讨论问题,就能够使用统一的、抽象的IP地址研究主机与主机或路由器之间的通信;
  5. 路由器由于互联多个网络,因此他不仅有多个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种典型情况:
    1. 发送方是主机时,要把IP数据报发送到本网络上的另一台主机,这时用ARP找到目的主机的硬件地址;
    2. 发送方是主机时,要把IP数据报发送到另一个网络的一台主机,这时用ARP找到本网络上的一个路由器的硬件地址,剩下的工作由这个路由器完成;
    3. 发送方式路由器时,要把IP数据报转发到本网络上的一台主机,这时用ARP找到目的主机的硬件地址;
    4. 发送方式路由器时,要把IP数据报转发到另一个网络上的一台主机,这时用ARP找到本网络上的一个路由器的硬件地址,剩下的工作由找到的这个路由器完成;
动态主机配置协议(DHCP)
  • DHCP是应用层协议,是基于UDP的;
  • DHCP服务器聚合DHCP客户端的交换过程如下:
    1. DHCP客户机广播“DHCP发现”消息,试图找到网络中的DHCP服务器,以便从DHCP服务器获得一个IP地址;
    2. DHCP服务器找到“DHCP发现”消息后,像网络中广播“DHCP提供”消息,其中包括提供DHCP客户机的IP地址和相关配置信息;
    3. DHCP客户机收到“DHCP提供”消息,如果接收DHCP服务器所提供的相关参数,那么通过广播“DHCP请求”消息向DHCP服务器请求提供IP地址;
    4. DHCP服务器广播“DHCP确认”消息,将IP地址分配给DHCP客户机;
  • 采用UDP而不采用TCP的原因:TCP需要建立连接,如果连对方的IP地址都不知道,那么更不可能通过双方的套接字建立连接;
网际控制报文协议(ICMP)
  • ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去,ICMP是IP层协议;
  • ICMP报文种类:ICMP差错报告报文和ICMP询问报文;
  • 5种类型:
    1. 终点不可达:当路由器或主机不能交付数据报时;
    2. 源点抑制:当路由器或主机由于拥塞而丢弃数据报时;
    3. 时间超过:当路由器收到生存时间TTL为零的数据报时;
    4. 参数问题:当路由器或目的主机收到的数据报的首部中有的字段值不正确时;
    5. 改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器;
  • 不应发送ICMP差错报文的几种情况:
    1. 对ICMP差错报告报文不在发送ICMP差错报告报文;
    2. 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文;
    3. 对具有组播地址的数据报都不发送ICMP差错报告报文;
    4. 对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文;
  • ICMP询问报文:
    1. 回送请求和回答报文;
    2. 时间戳请求和回答报文;
    3. 掩码地址请求和回答报文;
    4. 路由器询问和通告报文;

你可能感兴趣的:(#,计算机网络,专业技能基础,网络,tcp/ip,计算机网络,IPv4,ICMP)