图片说明
(上一篇文章链接请点这里

网络层

  • 网络层向上简单灵活的、无连接的、尽最大努力交付的数据报服务。
  • 网络层的功能如下:
    • 异构网络互联,通过逻辑互联网络将原来性能各异的网络统一,使其在网络层是一个统一的整体;
    • 路由与转发,路由器的两个功能,路由选择与分组转发;
    • 拥塞控制(是的网络层也有拥塞控制),开环控制与闭环控制。

1. IPv4

  • IPv4是现在普遍使用的版本,IP定义数据传送的基本单元——及其确切的数据格式。

1.1 IP分组

  • IPv4分组格式

    • 一个分组由首部和数据部分组成。首部前一部分的长度固定,共20B,是所有分组必须具有的。在首部固定部分的后面是一些可选字段,其长度可变,用来提供错误检测及安全等机制。IP数据报的格式如下图所示:
      应该看不到的吧
  • IP首部的部分重要字段含义如下:

    • 4位版本:目前的协议版本号是4.
    • 4位首部长度:首部占32bit字的数目,包括任何选项,由于它是一个4比特字段,因此首部最长为60个字节。
    • 8位服务类型(TOS):包括一个3bit的优先权子字段,4bit的TOS子字段,1bit未用位但必须置0。4bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用,4bit中同时只能置其中1bit为1,。如果所有4bit均为0,那就意味着是一般服务。
    • 16位总长度:指整个IP数据报的长度,以字节为单位。利用首部长度字段和总长度字段,就可以知道IP数据报中数据内容的起始位置和长度。由于该字段长16比特,所以IP数据包最长可达65535字节,当数据报被分片时,该字段的值也随着变化。
    • 16位标识:唯一标识主机发送的每一份数据报,通常每发送一份报文它的值就会加1。
    • 3位标志
    • 13位片偏移
    • 8位生存时间:TTL设置了数据报可以经过的最多路由器数,它指定了数据报的生存时间。TTL的初始值由源主机设置(通常为32或64),一旦经过一个处理它的路由器,它的值就减去1.当该字段的值为0时,数据报就被丢弃,并发送ICMP报文通知源主机。
    • 8位协议:识别是哪个协议向IP传送数据。
    • 16位首部检验和:根据IP首部的计算的检验和码。不对首部后面的数据进行计算,ICMP、IGMP、UDP和TCP在它们各自的首部中均含有同时覆盖首部和数据检验和码。如果检验和错误,IP就丢弃收到的数据报,但不生成差错报文,由上层去发现丢弃的数据报并进行重传。
    • 32位源IP地址
    • 32位目的IP地址
    • 选项:可变长的可选信息,选项字段都是以32bit作为界限,在必要的时候插入值位0的填充字节。这样就保证IP首部始终是32bit的整数倍(这是首部长度字段所要求的)。
    • 数据
  • TIPS:首部长度、总长度以及片偏移的基本单位分别为4B、1B、8B

  • IP数据报分片

    • 一个数据链路层数据报能承载的最大数据量称为最大传送单元(MTU)。由于IP是封装于数据链路层的数据报中,所以IP报文段的大小也收到MTU的约束。
    • 以太网的MTU为1500B,广域网的MTU一般不超过576B,当IP的数据长度超过MTU时,就需要对其进行分片。
    • 使用IP首部中的标识、标志以及片偏移在目的地的网络层进行组装。标识号用于为片进行分组,判断哪些数据片属于同一个数据报文;标志位有3bit,后两比特分别为MF和DF,MF为1标识相应的原始数据报之后还有数据片,否则,则表示当前片为原始数据报的最后一片。DF为0表示当前数据包可以分片;基于片偏移来确定每个数据片的顺序。
    • 分组计算:M(B)表示MTU,L(B)表示待发送的数据的长度,TCP首部为20B。
      1.每个分组的最大可封装数据d为
      2.分组总数h为图片说明
      3.第i片的片偏移字段取值为:
      4.第i(i<n,n为最后一片)片的总长度字段为:,
      5.除最后一片外,其MF标志位均为1。

1.2 IPv4地址与NAT

  • IPv4地址
    • 无论哪一类IP地址,其均是由网络号(标志主机或路由器所连接到的网络)和主机号(标志该主机或者路由器)两部分组成,
    • 分类的IP地址如下图所示:图片说明
    • 在各类IP地址中,有些IP地址具有特殊用途,不做主机IP地址:

      1.主机号全为0表示本网络本身;
      2.主机号全为1表示本网络的广播地址,又称直接广播地址;
      3.127开头的地址可以说是A类的保留地址,用作本地软件环回测试(loopback test)本主机的进程之间的通信之用;
      4.32位全为0的表示本网络上的本主机;
      5.32位全为1,表示整个TCP/IP网络的广播地址,又称受限广播地址。

  • 常用的三种类别的IP地址的使用范围:
    网络里类别 最大可用网络 第一个可用的网络号 最后一个可用的网络号 每个网络中的最大主机数
    A 27 - 2 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地址网段如下:
    • A类:10.0.0.0 ~ 10.255.255.255;
    • B类:172.16.0.0 ~ 172.31.255.255;
    • C类:192.168.0.0 ~ 192.168.255.255。
      不同局域网中私有IP地址可以重复使用
  • 网络地址转换(NAT)
    • 网络地址转换是指将专用网络地址转换为公用地址,对外隐藏内部管理的IP地址。
    • 使用NAT时,需要在连接专用网和因特网的路由器上安装NAT软件,NAT路由器至少有一个有效的外部全球地址。NAT路由器依据NAT转换表对IP地址进行转换,NAT转换表中存放着{本地IP地址:端口}到{quanqiuIP地址,端口}的映射。这样便可以将多个私有IP地址映射到同一个全球IP地址。
    • 普通路由器在转发IP分组时,不改变其源IP地址和目的IP地址,而NAT路由器则会更换其IP地址,需要查看和转换传输层的端口号。

子网划分、子网掩码、CIDR

  • 对于两级IP地址,需要给每个物理网络分配一个网络号,使得路由表变得太大以至于网络性能变差,且两级IP地址不够灵活。

  • 在两级IP地址中又加了一个子网号字段,使两级IP地址变成了三级IP地址,这就是子网划分,基本思路如下:

    • 子网划分属于一个单位内部的事;
    • 从主机号借用若干比特作为子网号,三级IP地址结构如下:
  • 子网掩码是一个与IP地址相对应的、长32bit的二进制串,它由一串1和跟随的一串0组成,其中1对应IP地址中的网络号和子网号,而0对应主机号,计算机只需将IP地址和其对应的子网掩码逐位与操作,即可得出相应子网的网络地址。

  • 举个栗子:

    某主机的IP地址为192.168.5.56,其子网掩码为255.255.255.0,则其所在子网的网络号为192.168.5.0。

  • 无分类域间路由选择(CIDR)是在变长子网掩码的基础上提出的一种消除传统A、B、C类网络的划分,并且可以在软件的支持下实现超网构造的一种IP地址划分方法。

  • CIDR的主要特点如下:

    • CIDR使用“网络前缀”的概念代替自网络的概念,因此IP地址的无分类两级编址为;
    • 记为IP地址/网络前缀所占比特数,如:128.14.32.5/20,其掩码是20个连续的1,其后是12个连续的0,通过逐位与操作可以得到该地址的网络前缀:128.14.32.0;
    • CIDR的地址块中的地址数一定是2的整数次幂;
    • 将网络前缀都相同的连续IP地质组成“CIDR地址块”。这种地址的聚合称为路由聚合,或称为构成超网,有利于减少路由器之间路由选择信息的交换,从而提高网络性能。

2.ARP

  • 无论网络层使用什么协议,在实际网络的链路上传送数据帧时,最终必须使用硬件地址。所以需要一种方法来完成IP地址到MAC地址的映射,即ARP(地址解析协议)。每一台主机都有一个ARP高速缓存,存放局域网上各主机和路由器的IP地址到MAC地址的映射表。

3.DHCP

  • DHCP(动态主机配置协议)常用于给主机动态地分配IP地址,它提供了即插即用的联网机制。应用层协议,基于UDP。

4.ICMP

  • ICMP(网际控制报文协议)用于传递差错和异常情况,网络层协议。

  • ICMP报文中种类有两种,即ICMP差错报文和ICMP询问报文。

  • 差错报告报文有以下五中类型:

    • 终点不可达:当路由器或主机不能交付数据报时,就向源点发送终点不可达报文;
    • 源点抑制:拥塞丢弃数据报时,向源点发送源点抑制报文;
    • 时间超过:TTL为0的报文,丢弃,向源点发送时间超过报文。
    • 参数问题:数据报的首部中有的字段值不正确时,丢弃,向源点发送参数问题报文。
    • 改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器。
  • 不应发送差错报告报文的情况:

    • 对ICMP差错报告报文不再发送ICMP差错报告报文;
    • 对第一个分片的数据报片的所有后续数据报片doubufasongICMP的差错报告报文;
    • 对具有组播地址的数据报都不发送ICMP差错报告报文;
    • 对具有特殊地址的数据报文不发送ICMP差错报告报文。
  • ICMP询问报文有四种类型:回送请求和回答报文、时间戳请求和回答报文。

5. 路由协议

  • 自治系统

    自治系统(AS):单一技术下管理的一组路由器,这些路由器使用一种AS内部的路由选择协议和共同的度量来确定分组在该AS内的路由,同时还使用一种AS之间的路由选择协议来确定分组在AS之间的路由。

  • 本块准备另外再写一篇,暂时不写。

关于数据链路层的协议请点这里