四、网络层
1. IP 协议
网络层引入了 IP 协议,制定了一套新地址,使得我们能够区分两台主机是否同属一个网络,这套地址就是网络地址,也就是所谓的 IP 地址。IP 协议将这个 32 位的地址分为两部分,前面部分代表网络地址,后面部分表示该主机在局域网中的地址。如果两个 IP 地址在同一个子网内,则网络地址一定相同。为了判断 IP 地址中的网络地址,IP 协议还引入了子网掩码,IP 地址和子网掩码通过按位与运算后就可以得到网络地址。
2. ARP 协议
即地址解析协议,是根据 IP 地址获取 MAC 地址的一个网络层协议。其工作原理如下:ARP 首先会发起一个请求数据包,数据包的首部包含了目标主机的IP 地址,然后这个数据包会在链路层进行再次包装,生成以太网数据包,最终由以太网广播给子网内的所有主机,每一台主机都会接收到这个数据包,并取出标头里的 IP 地址,然后和自己的 IP 地址进行比较,如果相同就返回自己的MAC 地址,如果不同就丢弃该数据包。ARP 接收返回消息,以此确定目标机的MAC 地址;与此同时,ARP 还会将返回的 MAC 地址与对应的 IP 地址存入本机ARP 缓存中并保留一定时间,下次请求时直接查询 ARP 缓存以节约资源。
3.路由协议
首先通过 IP 协议来判断两台主机是否在同一个子网中,如果在同一个子网,就通过 ARP 协议查询对应的 MAC 地址,然后以广播的形式向该子网内的主机发送数据包;如果不在同一个子网,以太网会将该数据包转发给本子网的网关进行路由。网关是互联网上子网与子网之间的桥梁,所以网关会进行多次转发,最终将该数据包转发到目标 IP 所在的子网中,然后再通过 ARP 获取目标机MAC,最终也是通过广播形式将数据包发送给接收方。而完成这个路由协议的物理设备就是路由器,路由器扮演着交通枢纽的角色,它会根据信道情况,选择并设定路由,以最佳路径来转发数据包。
所以,网络层的主要工作是定义网络地址、区分网段、子网内 MAC 寻址、对于不同子网的数据包进行路由。
4.ICMP 协议
IP 协议并不是一个可靠的协议,它不保证数据被送达,那么,自然的,保证数据送达的工作应该由其他的模块来完成。其中一个重要的模块就是
ICMP(网络控制报文)协议。ICMP 不是高层协议,而是 IP 层的协议。
当传送 IP 数据包发生错误。比如主机不可达,路由不可达等等,ICMP 协议将会把错误信息封包,然后传送回给主机。给主机一个处理错误的机会,这也就是为什么说建立在 IP 层以上的协议是可能做到安全的原因。
5.ping
ping 可以说是 ICMP 的最著名的应用,是 TCP/IP 协议的一部分。利用“ping”命令可以检查网络是否连通,可以很好地帮助我们分析和判定网络故障。
例如:当我们某一个网站上不去的时候。通常会 ping 一下这个网站。ping 会回显出一些有用的信息。一般的信息如下:
6.Traceroute
Traceroute 是用来侦测主机到目的主机之间所经路由情况的重要工具,也是最便利的工具。
Traceroute 的原理是非常非常的有意思,它收到到目的主机的 IP 后,首先给目的主机发送一个 TTL=1 的 UDP 数据包,而经过的第一个路由器收到这个数据包以后,就自动把 TTL 减 1,而 TTL 变为 0 以后,路由器就把这个包给抛弃了,并同时产生 一个主机不可达的 ICMP 数据报给主机。主机收到这个数据报以后再发一个 TTL=2 的 UDP 数据报给目的主机,然后刺激第二个路由器给主机发 ICMP 数据 报。如此往复直到到达目的主机。这样,traceroute 就拿到了所有的路由器 IP。效果如下: