网络层概述
实现全球寻址以及高效的数据路由
如果仅靠数据链路层组织起全球联网设备是不可能的,这被以下两点限制:
1.广播灾难:这是由于初次接触陌生节点时,必须广播全网络。
2.MAC地址表规模:苹果华为的MAC地址差别很大因此没有办法对地址表进行合并。合并要求地址是连续的,可形成地址段的转发策略。
网络层为解决以上问题而生,主要职责在于:实现全球寻址以及数据路由每台参与网络通讯的计算机分配一个唯一的地址,即网络层地址。网络层地址按网络拓扑分配,保证组织内部的地址是连续的。例如,给某个公司分配地址 123.58.173.x ,只有最后一个数字是不同的。这样,一条转发配置便可为几百个地址服务。相应地,地址表规模也可下降若干数量级。网络层路由存有路由表,规定了目的地址与与下一跳的对应关系。路由表看起来与数据链路层MAC地址表颇为类似,但更加高级:
1.支持地址段:一条记录配置某个区间地址的下一跳,有效降低路由表规模。
2.支持高级学习算法:例如选择一条跳数最少的路径。
TCP/IP协议族中的网络层协议
IP协议
ipv4地址与划分
路由
ARP协议
首次通信不知道对方mac地址无法封装数据链路层帧,所以需要一个协议通过ip地址“解析”对方mac地址
ICMP协议
Internet Control Message Protocol即互联网控制消息协议。它用于TCP/IP网络中发送控制消息,提供可能发生在通信环境中的各种问题反馈,通过这些信息,使网络管理者可以对所发生的问题作出诊断,然后采取适当的措施解决问题。虽然ICMP是网络层协议,但是它不像IP协议和ARP协议一样直接传递给数据链路层,而是先封装成IP数据包然后再传递给数据链路层。所以在 IP数据包中如果协议类型字段的值是1的话,就表示IP数据是ICMP报文。
Linux路由实验
https://network.fasionchan.com/zh_CN/latest/protocols/experiment-linux-routing.html