网络层协议及IP首部 - 图1
    MAC地址与IP地址
    数据包的目标IP地址决定了数据包最终到达哪一个计算机,而目标MAC地址决定了该数据包下一跳由哪个设备接收,不一定是终点。
    计算机在和其他计算机通信前,首先判断目标IP是否与自己在同一个网段,这决定了数据链路层的目标MAC地址是目标计算机还是路由器的MAC地址

    地址解析协议ARP
    ARP协议的作业,将以太网中的计算机IP地址解析成MAC地址
    点到点链路使用PPP协议,不需要ARP协议
    网络层协议及IP首部 - 图2
    ARP协议工作过程
    每一个主机都设有一个ARP高速缓存(ARP cache),里面有所在的局域网上的各主机和路由器等待IP地址到硬件地址的映射表
    当主机A欲向本局域网中的某主机B发送IP数据报时,就现在其ARP高数缓存中查看有无目的主机B的IP地址
    若有,就可查出对应的硬件地址,再将此硬件地址写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址
    如果没有,主机A向本局域网上所有主机发出广播请求
    网络层协议及IP首部 - 图3
    ARP高速缓存
    为了减少网络上的通信量,主机A在发送其ARP请求分组时,就将自己的IP地址到硬件地址的映射写入ARP请求分组
    当主机B收到A的ARP请求分组时,就将主机A的这一地址映射写入主机B的ARP高速缓存中,这样主机B向主机A发送数据报时就无需请求了

    ARP应用范围
    ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题
    如果所要找的主机和源主机不在同一个局域网上,那么就要通过ARP找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送到这个路由器,让这个路由器把分组转发给下一个网络,剩下的工作交给下一个网络来做

    网络层协议及IP首部 - 图4
    ICMP协议
    ICMP控制报文协议(Internet Control Message Protocol)是TCP/IP协议栈中的网络层的一个协议,用于在IP主机、路由器之间传递控制信息。控制信息是指网络是否可通、主机是否可达、路由是否可用等网络状态信息。
    ICMP报文在IP数据报内部被传输,封装在IP数据报内
    ICMP报文通常被IP层或更高层协议(TCP或UDP)使用,一些ICMP报文把差错报文返回给用户进程
    ICMP报文类别:

    • ICMP差错报文
    • 终点不可达:网络不可达,主机不可达,协议不可达,端口不可达
    • 源点抑制:当路由器或主机由于拥塞而丢弃数据报时,就向源站发送源站抑制报文,使源站知道应当将数据报的发送速率放慢
    • 时间超过:当路由器收到生存时间为零的数据报时,除丢弃该数据报外,还要向源站发送时间超过报文。当目的站在预先规定的时间内不能收到一个数据报的全部数据报片时,就将已收到的数据报片都丢弃,并向源站发送时间超过报文
    • 参数问题:当路由器或目的主机收到的数据报的首部中的字段的值不正确时,就丢弃该数据报,并向源站发送参数问题报文
    • 改变路由(重定向):路由器将改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器
    • ICMP询问报文:ICMP询问报文有四种回送请求和回答,时间戳请求和回答,掩码地址请求和回答,以及路由器询问和通过

    网络层协议及IP首部 - 图5
    路由选择(网络层主要功能)
    路由选择就是解决IP分组转发问题,即找出下一跳地址
    路由器根据储存的路由表来做出决定将IP分组转发

    建立路由表
    静态路由:
    由管理员人工管理添加网段以及如何转发
    优点是网络安全保密性高、简单、高效、可靠,缺点是维护困难
    所有的路由中,静态路由优先级最高
    静态路由配置
    网络层协议及IP首部 - 图6
    网络层协议及IP首部 - 图7
    RIP协议
    RIP协议(Routiing Information Protocol)是路由信息协议,是一个距离矢量路由选择协议
    每隔30秒就会送出自己完整的路由表到所有激活的接口
    RIP协议选择的最佳路径标准是跳数,认为到达目标网络经过的路由器最少的路径就是最佳路径
    默认允许的最大条数是15跳,也就是说16跳的距离被认为是不可达的
    在小型网络中RIP会运转良好,但是对于使用慢速WAN连接的大型网络或者安装有大量路由器的网络来说效率很低
    要点:
    仅与相邻路由器交换信息
    交换的信息是自己的路由表
    按照固定的时间间隔交换,例如每隔30秒
    缺点:
    当网络出现故障时,要经过较长的时间才能将信息传送给所有的路由器
    RIP限制了网络的规模,它能使用的最大距离为15,并且RIP交换的信息是路由器的完整路由表,因此网络规模越大开销越大
    RIP协议最大的优点就是实现简单,开销较小
    网络层协议及IP首部 - 图8

    内部网关协议OSPF(Open Shortest Path First)

    • Router-ID:网络中运行OSPF协议的路由器都要有一个唯一的标识,这就是Router-ID,并且Router-ID在网络中唯一
    • COST(开销):OSPF协议选择最佳路径的标准是带宽,带宽越高计算出来的开销越低。到达目标网络的各个链路累计开销最低的就是最佳路径
    • 链路(Link):就是路由器上的接口,在这里,应该指运行在OSPF进程下的接口
    • 链路状态(Link-State):链路状态(LSA)就是OSPF接口上的描述信息,例如接口上的IP地址,子网掩码,网路类型,Cost值等等,OSPF路由器之间交换的并不是路由表,而是链路状态(LSA)
    • 邻居(Neighbor):OSPF只有邻接状态才会交换LSA
    • 链路状态数据库(link-state database):各路由器之间频繁交换链路状态信息,最终所有的路由器都能建立一个链路状态数据库,这个数据库实际上就是全网的拓扑结构图,在全网范围内一致
    • OSPF工作原理:运行OSPF协议的路由器有三张表,邻居表、链路状态表和路由表

    网络层协议及IP首部 - 图9

    • 向本自治系统所有路由器发送信息时,使用的是洪泛法
    • OSPF不使用UDP而是直接使用IP数据报传送

    外部网关协议BGP
    BGP是不同自治系统的路由器之间交换路由信息的协议,最新版本为BGP-4
    边界网关协议BGP只能力求寻找一条能够到达目的网络且较好的网络,并非寻找一条最佳路由
    BGP采用了路径向量的路由选择协议
    BGP协议交换路由信息的节点数量级是自治系统数的量级,这要比这些自治系统中的网络数少很多
    每个自治系统中BGP发言人的数目是很少的,这样就使自治系统之间的路由选择不至于过分复杂
    BGP-4共使用四种报文:
    打开(OPEN)报文,用于与相邻的另一个BGP发言人建立关系
    更新(UPDATE)报文,用于发送某一路由信息,以及列出要撤销的多条路由
    保活(KEEPALIVE)报文,用来确认打开报文和周期性证实邻站关系
    通知(NOTIFICATION)报文,用于发送检测到的差错

    计算机通信分为单播、组播(多播)和广播通信
    组播是指一对多的通信,“组”就是一组计算机绑定相同的地址。如果计算机同时接收多个组播信息,该计算机网卡需要同时绑定多个组播地址
    组播通信能够节省网络带宽资源

    组管理协议(IGMP)

    IP数据报首部格式
    一个IP数据报由首部和数据两部分组成
    首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的
    在首部的固定部分后面是一些可选字段,长度可变
    网络层协议及IP首部 - 图10
    网络层协议及IP首部 - 图11

    版本——占4位,指IP协议的版本目前的IP协议版本号为4(即IPv4)
    首部长度——占4位,可表示的最大数值是15个单位(一个单位为4字节)因此IP的首部长度最大值为60字节(最小20)
    总长度——占16位,指首部和数据之和的长度,单位为字节,因此数据报的最大程度为65535字节(总长度必须不超过最大传送单元MTU)
    网络层协议及IP首部 - 图12
    标识——占16位,它是一个计数器,用来产生数据报的标识。当数据包由于长度超过MTU而被分片时,同一个数据包被分成多个片,这些片的标识都一样,便于最后能重装成为原来的数据包
    标志——占3位,目前只有前两位有意义网络层协议及IP首部 - 图13
    片偏移——占13位,较长的分组在分片后,某片在原分组中的相对位置,片偏移以8给字节为偏移单位
    生存时间(TTL)——占8位,数据报在网络中可通过的路由器数的最大值
    协议——占8位,指出此数据报携带的数据使用何种协议,以便于目的主机的IP层将数据部分上交给哪个处理过程
    首部校验和——占16位,只检验数据报的首部而不检验数据部分
    源地址和目的地址都各占4字节