IP路由__IP路由选择过程
1.主机A上的某个用户ping主机B的IP地址
1.主机A的因特网控制报文协议(ICMP)将创建一个回应请求数据包(在它的数据域中只包含有字母)。
2. ICMP将把这个有效负荷交给因特网协议(IP),然后IP协议会创建一个数据包。这时,这个数据包将包含源IP地址、目的IP地址和值为01h的协议字段(Cisco习惯在十六进制字符前添加0x,这样便有了0x01的表示)。
在本例中,当数据包到达目的地时,所有这些内容会告诉接收方主机,它应该将这个有效负荷交给ICMP处理。
3. 一旦数据包被创建,IP协议将判断目的IP地址是处在本地网络中,还是处在一个远程网络上。
4. 本例中,由于IP协议断定这是一个远程请求,这个数据包需要被发送到默认网关,这样,这个数据包才会被路由到远程网络。Windows注册表将被使用,以查找配置的默认网关。
5. 主机172.16.10.2(主机A)的默认网关被配置为172.16.10.1。要能够发送这个数据包到默认网关,必须要知道路由器的Ethernet0接口(其IP地址被配置为172.16.10.1)的硬件地址。
为什么?因为只有这样,数据包才可以被下传给数据链路层并成帧,然后发送给与172.16.10.0网络连接的路由器接口。在本地局域网上,主机只可以通过硬件地址来进行通信。主机A要与主机B通信,它必须将数据包发送到本地网络中默认网关的MAC地址处。
说明:MAC地址永远都应用于LAN本地,而决不会穿过或通过路由器。
6. 接着,检查ARP缓存,查看一个默认网关的IP地址是否已经解析为硬件地址。
如果已经被解析,数据包将被释放、传送到数据链路层并成帧(目的方的硬件地址也将同数据包一起下传至数据链路层)。要查看你的主机上的ARP缓存,可以使用下列命令:
C:\>arp -a
Interface: 172.16.10.2 --- 0x3
如果这个硬件地址在主机的ARP缓存中尚未被解析,将在此本地网络中发送ARP广播,以搜索172.16.10.1的硬件地址。路由器会响应这个请求并提供Ethernet0的硬件地址,接着,这一主机将缓存这个地址。
7. 一旦这个数据包和目的方的硬件地址被交付给数据链路层,局域网驱动器将提供媒体访问,以通过所用类型的局域网(在本例中,即以太网)。将产生一个数据帧,使用控制信息来封装此数据包。
在这个帧中包含有目的方和源方的硬件地址,及以太网类型字段(这个字段里描述的是交付此数据包到数据链路层的网络层协议),在本例中,这个协议为IP协议。在这个帧的结尾处是被称为帧校验序列(FCS)的字段,
它是装载循环冗余校验(CRC)计算值的区域。此时数据帧还需要查找一些信息,即源MAC地址(主机A的MAC地址),以及目的MAC地址(主机A的默认网关即E0的MAC地址)。注意,这里并不包含远端主机的MAC地址!
当ping主机B时主机A发给Lab_A路由器的数据帧
8. 一旦完成帧的封装,这个帧将被交付到物理层,以一次一位的方式发往物理媒体(在本示例中,是双绞线对)。
9. 此冲突域中的每台设备都将接收这些位并重建成帧。它们都将运行CRC并核对保存在FCS字段中的内容。如果这两个值不相匹配,此帧将被丢弃。
如果这个CRC值相吻合(在这个示例中,指的是路由器的Ethernet0接口),那么就核查目的方的硬件地址,检查它们是否也匹配。
如果它是匹配的,那么路由器将查看以太网类型字段,以了解在网络层上使用的协议。
10. 数据包从帧中抽出,然后这个帧剩下的部分被丢弃。再把数据包传送给在以太网类型字段中列出的上层协议,在这里是传递给IP协议。
11. IP会接收这个数据包,并检查其IP目的地址。由于数据包的目的地址与接收路由器所配置的任一地址不相匹配,路由器将会在路由表中查看目的IP网络的地址。
12. 此路由表中必须包含有网络172.16.20.0的表项,否则此数据包将被立即丢弃,然后发送回一个携带有“destination network unavailable”信息的ICMP包给源方设备。
13. 如果路由器的确在它的路由表中查找到了目的方的网络,数据包将被交换到输出接口,在本示例中,为Ethernet l接口。下面的输出给出了Lab_A路由器的路由表。C表示“直接连接”。
由于在这个网络中所有的网络(总共是两个网络)都是直接连接的,因此没有必要使用主动路由协议。
Lab_A>sh ip route ……
14. 路由器将交换此数据包到Ethernet 1的缓冲区内。
15. Ethernet1的缓冲区需要了解目的方主机的硬件地址,它首先检查ARP缓存。
如果主机B的硬件地址已经被解析并被保存在路由器的ARP缓冲中,则这个数据包和这个硬件地址将被传递到数据链路层以便组成帧。下面是使用show ip arp命令得到的在路由器Lab_A上的ARP缓冲:
Lab_A#sh ip arp
Protocol Address Age(min) Hardware Addr Type Interface
Internet 172.16.20.1 - 00d0.58ad.05f4 ARPA Ethernet0
Internet 172.16.20.2 3 0030.9492.a5dd ARPA Ethernet0
Internet 172.16.10.1 - 00d0.58ad.06aa ARPA Ethernet0
Internet 172.16.10.2 12 0030.9492.a4ac ARPA Ethernet0
连接线(-)表示它是路由器上的物理接口。从上述的输出可以看出,路由器了解此172.16.10.2(主机 A)和172.16.20.2(主机B)的硬件地址。Cisco路由器会将ARP表中的表项保留4小时。
如果硬件地址没有被解析,路由器将从E1发送一个ARP请求,查找172.16.20.2的硬件地址。主机 B会使用它的硬件地址来进行响应,然后这个包和硬件地址都会被发送到数据链路层以组成帧。
16. 数据链路层将使用这个目的MAC(主机B的MAC)和源的MAC(E1的MAC),及以太网的类型字段和处于帧尾部的FCS字段来创建一个帧。这个帧将被传送到物理层,并以一次一位的方式发送到物理媒体上。
17. 主机B会接收到此帧并立即运行CRC。如果运算结果与FCS字段中的内容相匹配,再检查这个目的方的硬件地址。如果主机发现是匹配的,随后将检查以太网类型字段中的值,以判断应该将数据包上传给网络层的什么位置(在本示例中,为IP协议)。
18. 在网络层,IP会接收这个数据包,并检查其目的方的IP地址。由于终归它们是匹配的,检查数据包的协议字段,以了解此有效负荷应该交付给谁。
19. 此有效负荷会交付给ICMP,它将知道这是一个回应请求。ICMP会应答这个请求,通过即刻丢弃这个数据包并随后产生一个新的有效负荷来作为回应应答。
20. 随后创建的数据包中将包含有源方和目的方的地址、协议字段和有效负荷。现在,目的方设备为主机A。
21. 然后,IP将检查了解这个目的方的IP地址是否属于本地局域网上的设备,或者是位于远程网络上的设备。由于这个目的方的设备位于远程网络,此数据包将需要发送到默认网关上。
22. 在此Windows设备的注册表上,可以找到默认网关的IP地址,之后将查看 ARP缓存,以了解是否已经完成了从IP地址到硬件地址的解析。
23. 一旦默认网关的硬件地址找到,此数据包和目的方的硬件地址都将被送往数据链路层,以完成帧的封装。
24. 数据链路层会封装数据包的内容,并在帧报头中包含以下内容:
目的方和源方的硬件地址
在以太网类型字段中填入0x0800(IP)
将CRC结果填入FCS字段
25. 这时,帧将被下传给物理层,并以一次一位的方式发送到网络媒体上。
26. 路由器的Etherne 1接口会接收到这些位并重建为一个帧。运行CRC校验,校验帧的FCS字段,以确认两个结果是相符的。
27. 一旦CRC校验通过,将检查硬件目的地址。由于路由器的接口同这个地址是相匹配的,数据包将被从这个帧中取出,然后检查以太网类型字段,以了解此数据包应该投递给网络层上的哪一个协议。
28. 由于协议被判断为IP,于是IP将得到这个数据包。首先IP将对IP报头运行 CRC校验,然后检查目的方的IP地址。
注:IP并没有像数据链路层那样使用完整的CRC校验,它只校验报头的错误。
由于IP目的地址与路由器的各个接口的IP地址并不相匹配,路由器将会查看路由表,以了解是否存在一个通往172.16.10.0的路由。如果不存在一个路由可以到达目的网络,该数据包将立即丢弃(这是一个令许多管理员困惑的点,当一次ping失败时,
许多人会认为这个数据包决没有到达目的主机。但是,正如我们在这里所看到的,事情并不总是这样的。上面所有造成这一现象的原因,仅仅是由于远端路由器缺乏返回源方主机网络的路由并将数据包丢弃!
数据包被丢弃在返回源方的旅途中,并不是丢弃在它前往目的主机的过程中)。
说明:当数据包在返回源主机的途中被丢弃时,由于这是一个未知的错误,通常将会看到“request timed out”的信息。 如果出现的错误是一个已知的错误,如假设在去往目的设备的路途中路由表内没有可用的路由,
你将会得到“destination unreachable”的信息。根据这些信息,你可以判断问题是发生在去往目的的路上,还是在返回的途中。
29. 在这种情况下,路由器确实知道到达网络172.16.10.0的方式,这一输出的接口是Ethernet 0,于是数据包将被交换到接口Ethernet 0上。
30. 路由器检查ARP缓存,确定172.16.10.2的硬件地址是否已经被解析。
31. 由于在将数据包传送到主机B的过程中,172.16.10.2的硬件地址已经被缓存起来了,因此,这一硬件地址和数据包将被传递到数据链路层。
32. 数据链路层会使用这个目的方的硬件地址和源方的硬件地址,然后,将 IP放入以太网类型字段中,并对这个帧进行CRC运算,将此运算结果放入FCS字段中。
33. 这个帧然后被传送到物理层,以一次一位的方式发送到本地网络。
34. 目的方的主机将接收这个帧,运行CRC算法,检验目的方的硬件地址,并查看以太网类型字段中的内容,以断定谁来处理这个帧。
35. 由于IP是被指定的接收者,随后这个数据包被传递给网络层的IP协议,它将检查包的协议字段,以确定进一步的操作。IP发现要将此有效负荷交给 ICMP的指示,接着ICMP将确定此数据包是一个ICMP的应答回复包。
36. ICMP通过发送一个惊叹号(!)到用户接口来表明它已经接收到一个回复。这之后,ICMP会尝试继续发送4个应答请求到目的方的主机。
注:当主机A发送数据包到主机B时,所使用的目的方硬件地址是默认网关的以太网接口。因为数据帧是不可以被直接发往远程网络的,它只有首先发送到本地网络上,而且去往远程网络的数据包必须要通过默认网关转发。
举例:
1. 来自主机A的帧中的目的地址将是路由器A F0/0接口的MAC地址。
2. 数据包中的目的地址将是HTTP服务器上的网络接口卡(NIC)的IP地址。
3. 在数据段头中的目的端口号是80。
4. TCP的端口号将用于指引数据到达正确的应用程序窗口。
5. HTTP服务器B接收到的帧的源地址是Router B的F0/0的MAC地址。
注:如果有多台主机同时使用HTTP与这台服务器进行通信,那么它们必须全部使用各不相同的源端口号。这就是该台服务器如何在其传输层上保持数据分离的方式。
2.1)数据帧会在每一跳处被改变,而数据包将不会以任何方式改变或假造,直到它到达目的设备。
2)MAC(硬件)地址将只能用在本地LAN上。它决不能由路由器的接口所传递。
3)数据帧只能将数据包运载到两个地方:在LAN上数据帧使用MAC地址发送数据包。数据帧既可以将数据包发给LAN的任一台主机,也可以当数据包定向到远端网络时将数据包发给路由器的接口。
4)If you have a DCE serial interface, what command must you enter for that interface to work:Router(config-if)#clock rate speed
5) R 10.0.0.0/8 [120/15] via 192.168.40.1, 00:00:07, Serial0
The network 10.0.0.0 cannot be placed in the next router‘s routing table because it already is at 15 hops. One more hop would make the route 16 hops, and that is not valid in RIP networking.
IP路由__IP路由选择过程的更多相关文章
- 【计算机网络】一步一步学习IP路由流程
TCP/IP协议簇是目前互联网应用最广的协议栈,谈到TCP/IP协议栈就不能不讲一讲IP路由的问题,因为在我们使用的网络通信中几乎每时每刻都在发生着IP路由的事件…….当你在网络世界中还是一位新手的时 ...
- TCP/IP协议栈 --- IP路由
IP路由:当一个IP包在主机发送出去或者在网络当中时,是怎么选择路径到达目的主机的呢? 一般情况下, 如果说源主机和目的主机在同一个网络中的话,那个数据报可以直接到达目的主机而不经过路由器,下面可以试 ...
- Linux基础命令---IP路由操作
ip ip指令可以显示或操作路由.网路设备,设置路由策略和通道. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.Fedora. 1.语法 ...
- 彻底理解Cisco/Linux/Windows的IP路由
-1.只要理解实质,名称并不重要! 很多使用Linux的网络高手在面对Cisco管理员的诸如管理距离,路由度量等词汇时,还没有PK就自觉败下阵来了.我觉得这实在太可惜了,大家本是一家,为何这么为难对方 ...
- IP路由及静态路由配置
IP路由及静态路由配置 qianghaohao(CodingNutter) 链接来源:http://www.cnblogs.com/codingnutter/p/5654271.html 一.IP路由 ...
- 用寄快递模拟数据在网络中的传送过程,发送一个ip数据报到接受这个ip数据报经历的过程
发送一个ip数据报到接受这个ip数据报经历的过程 好比寄一个快递的过程 这个包裹一共有三层, 这个包裹的最里面是数据,数据 第二层写着目的ip地址和源ip地址,即收件人和发件人的姓名 第三层也就是最外 ...
- IP路由原理
IP路由原理 一.什么是路由 路由是指导IP报文发送的路径信息. 二.路由表的构成 路由表是路由器转发报文的判断依据 三.路由器单跳操作 四.路由表查找规则 1.选择度量值小的进行转发 2.永远将下一 ...
- Linux IP 路由实现
以下代码取自 kernel . [数据结构] 该结构被基于路由表的classifier使用,用于跟踪与一个标签(tag)相关联的路由流量的统计信息,该统计信息中包含字节数和报文数两类信息. 这个结构包 ...
- IP路由__距离矢量路由选择协议
矢量路由选择协议 1.距离矢量路由选择算法发送完整的路由选择表到相邻的路由器,然后,相邻的路由器会将接收到的路由表项与自己原有的路由表进行组合,以完善路由器的路由表. 由于路由器接收到的更新只是来自相 ...
随机推荐
- eclipse-切换分支-用途描述
操作细节参考文章 https://www.cnblogs.com/sunrunzhi/p/6509448.html 分析切换分支的用途: 背景: 1. 项目开发使用分支1.分支2: 2. 分支1代码是 ...
- mysql锁类型
mysql锁类型 问题 都有哪些锁 锁与隔离级别的关系 sql语句中涉及都涉及哪些锁 事务中,锁何时释放 死锁检测机制 概要
- ssh问题之复盘
一.问题发生.排查以及解决 某天H博士在登录B服务器时发现一个严重的问题,问题是H博士在执行脚本出现一个异常,这个异常是过去我执行脚本只需输入一次密码,现在要输入五六次,只有输入五六次后才能正确执行完 ...
- SQL注入-流程
一般注入分类: 时间,布尔,报错,堆,联合 有关函数介绍: current_user() 当前用户名 session_user() 链接数据库的用户名 @@basedir mysql安装路径 @@da ...
- 惠普电脑(HP PHILIPS系列)安装ubuntu后无法连接WIFI解决方案(手动安装8821CE驱动)
一步一步来, 先说环境: 我的电脑是HP PHILIPS系列,ubuntu版本是16.04 背景: win10安装ubuntu后发现无法连接wifi(但win10系统可以连接WIFI),在ubuntu ...
- ctfhub技能树—信息泄露—git泄露—Stash
打开靶机环境 查看页面内容 使用dirsearch进行扫描 使用Githack工具处理git泄露情况 进入.git/refs目录 发现stash文件,使用notepad++打开文件 使用git dif ...
- CentOS 7 下安装 mysql ,以及用到的命令
VMware虚拟机装好后,再装个CentOS7系统,以上环境自行百度... 一.Linux下查看mysql是否安装 1.指令ps -ef|grep mysql [root@localhost 桌面]# ...
- 1.2V转3.3V芯片电路图,超简电路
镍氢可充电电池1.2V转成3.3V的电路和电子产品很多,在实际适用中,即使是两节镍氢电池串联供电也是会有供电电压下降和不稳定的影响,这是因为电池电量减少,而导致电池的电压也是会随着降低. 一般情况下, ...
- 2.4V升5V芯片,8uA功耗,低功耗升压电路图
2.4V升5V,可用于USB拔插充电,也可以用于把两节镍氢电池2.4V升压到5V,的固定输出稳压电压值,同时输出电流可达1A,0.5A等 首先是先说下0.5A的这款的话,是比较低功耗的,8uA左右的输 ...
- java 日期与时间操作
我们先来了解一下基本的概念 日期 2020-11-21 2020-11-22 时间 15:36:43 2020-11-21 15:36:43 时区 北京时间 2020-11-21 15:36:43 东 ...