认证培训,h3c认证体系,网络工程师
丰沃创新

IP协议,ARP协议解析,数据包的路由【网络工程师培训】

  • 发布时间: 2019-5-24 9:40:52

为什么把这两个协议放到一起学习?主要是因为这两个协议在OSI7层模型中,处于同一层。

其中ARP 协议用来找到目标主机的 Ethernet 网卡 Mac 地址;

IP 则承载要发 送的传输层消息。

数据链路层可以从 ARP 得到数据的传送信息,而从 IP 得到要传输的数据信息。

IP 协议

IP 协议是 TCP/IP 协议的核心,也是最基础的,所有的 TCP,UDP,IMCP,IGCP 等等这些协议的数据都以 IP 数据格式传输。特别要注意的是,IP 不是可靠的协议,也就是说,IP 协议没有提供一种数据未传达以后的处理机制,并不能保证数据能够到达对方。而这件事的重任被放在了上层协议--TCP 或 UDP 要做的事情。所以这也就出现了 我们常说的TCP 是一个可靠协议,而 UDP 就没有那么可靠的区别。(UDP和TCP的区别可以看我之前的文章)

要想了解IP协议首先我们先看下协议头:

在这里我就不挨个解释了,太枯燥了。我感兴趣的只是那八位的 TTL 字段,看过教科书的童鞋应该还记得这个字段是做什么的么?这个字段规定该数据包在经过 多少个路由之后才会被抛弃 (看懂了没,这句话的意思就是 IP 协议包并不可靠,不保证数据被送达,可能会被丢弃)。某个 ip 数据包每穿过一个路由器,该数 据包的 TTL 数值就会减少1,当该数据包的 TTL 成 为零,它就会被自动抛弃。

这个字段的最大值也就是255,也就是说一个协议包也就 在路由器里面穿行255次就会被抛弃了,根据系统的不同,这个数字也不一 样,一般是32或者是64,Tracerouter 这个工具就是用这个原理的,tranceroute 的-m 选项要求最大值是255,也就是因为这个 TTL 在 IP 协议里面只有8bit。大家不清楚可以去windows 的cmd下面操作下。

IP 路由选择

为什么我们会在这里谈到路由的呢?先留个悬念。我们接着往下看。

当一个 IP 数据包准备好了的时候,IP 数据包(或者说是路由器)是如何将数据包送到目的地的呢?它是怎么选择一个合适的路 径来"送货"的呢?

我们先来看个最特殊的情况:目的主机和主机直连。那么主机根本不用寻找路由,直接把数据传递过去就可以了。至于是怎么直接传递的,这就要靠依靠ARP 协议了,后面会讲到。

稍微一般一点的情况是:主机通过若干个路由器(router)和目的主机连接。那么路由器就要通过 ip 包的信息来为 ip 包寻找到一 个合适的目标来进行传递,比如合适的主机或者合适的路由。怎么去理解?其实数据真正走的是数据链路层,这也是为什么数据链路层名字的由来。怎么去找个合适目标传递其实是通过IP来的。

路由器处理IP数据包,我们分为以下几种情况:

1, 如果IP数据包的TTL(生命周期)以到,则该IP数据包就被抛弃。

2,搜索路由表,优先搜索匹配主机,如果能找到和IP地址完全一致的目标主机,则将该包发向目标主机

3,搜索路由表,如果匹配主机失败,则匹配同子网的路由器,这需要“子网掩码”的协助。如果找到路由器,则将该包发向路由器。

4,搜索路由表,如果匹配同子网路由器失败,则匹配同网号路由器,如果找到路由器,则将该包发向路由器。  搜索路由表,如果以上都失败了,就搜索默认路由,如果默认路由存在,则发包。

5,如果都失败了,就丢掉这个包。

如果大家有兴趣,可以去看我之前的TCP疑难杂症