免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3537 | 回复: 16

IP选路 [复制链接]

论坛徽章:
0
发表于 2009-12-05 04:44 |显示全部楼层
各位,请教一下,假设如下:

主机A : ip_a, mac_a
路由器: route_ip, route_mac(假设这里只涉及路由器的这些内容)
主机B : ip_b, mac_b

主机A和主机B是通过路由器连着的,现在要从主机A往主机B发送数据包,即:

主机A ——> 路由器 ——> 主机B

另,这里假设主机A、主机B、路由器这3个的路由表都已经设好,主机A是能发送数据包到主机B的,这里主要想看发送的过程。

1、测试1(从主机A发送一个UDP数据包给主机B)
步骤:
1)主机A检查路由表,看有没有到主机B的路由,有的话返回路由表中该条路由的 gateway。

2)主机A根据1)gateway信息(也就是路由器的IP,route_ip)构建一个“ARP请求FRAME”,并广播出去。

3)主机A收到路由器的 “ARP应答FRAME”,开始构建数据包的IP头和MAC头。根据 2)里面的得到的路由器 route_mac信息形成数据包的MAC头里面的目的MAC地址,根据主机B的IP地址构建数据包IP头里面的目的IP地址 ip_b。最后将该数据包发送出去。

4)路由器收到该数据包后,发现IP头里面的目的IP地址不是它,于是搜索其路由表并找到到达主机B的路由,最后将该路由的gateway(也就是主机B的IP地址,ip_b)返回。

5)路由器根据gateway信息构建一个“ARP请求FRAME”,并广播出去。

6)路由器收到主机B的“ARP应答FRAME”,开始“更新”数据包的MAC头。将数据包的MAC头中的目的MAC地址改成 5)里面得到的主机B的 mac_b(数据包的IP头中的目的IP地址不需要更改,即目的IP地址 ip_b 不用更改)。最后将该数据包发送出去。

7)主机B收到该数据包,检查发现该包IP头里的目的地址和它的IP地址一致,则接收该数据包。

问题:
1、整个过程是这样的吗?整个转发的过程只需要变动数据包MAC层的目的MAC地址,其他的不动?(TCP/IP上写的是这样,但由于本人目前的调试环境里没有路由器,没法验证)

2、在整个发送过程中,每次转发都要用到“ARP请求FRAME”或“ARP应答FRAME”,在FRAME的以太网首部(14字节)里的MAC目的地址是要更新的,但是在FRAME的数据部分同样也有“目的MAC”的部分,这部分填什么内容?(在主机A要发送数据包时,是不知道主机B的MAC地址的)

[ 本帖最后由 sherf 于 2009-12-5 04:54 编辑 ]

论坛徽章:
0
发表于 2009-12-05 04:55 |显示全部楼层

回复 #1 sherf 的帖子

顶一下

论坛徽章:
0
发表于 2009-12-05 10:21 |显示全部楼层

回复 #1 sherf 的帖子

有人知道吗?

论坛徽章:
0
发表于 2009-12-05 13:20 |显示全部楼层

回复 #3 sherf 的帖子

顶一下

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
发表于 2009-12-05 19:15 |显示全部楼层

回复 #1 sherf 的帖子

首先,你这个地方,主机A和主机B必须是不同网段的,才能让路由器发挥起作用;
其次,只要路由器维护好了这个转发表,而主机A和B的发送路由指向路由器,就可以实现互通了

论坛徽章:
0
发表于 2009-12-07 13:21 |显示全部楼层

rt

1,转发过程中,改变mac,还有IP首部的TTL和校验和会变;
2,
     在转发过程中会先查arp缓存的,如果没有才动用arp;
    arp的 FRAME的数据部分指的是arp首部;这个首部 的"目的mac"不是目的mac,
    而是返回的信息,应答时一般填充应答者自己的mac;,请求时它无意义,它告诉你
    ”这个IP地址是谁,请把你的MAC通告出来“(arp请求)
    "IP地址对应的mac是xx"(arp应答);
    主机A正因为不知道,才发arp的;

论坛徽章:
0
发表于 2009-12-07 15:59 |显示全部楼层
原帖由 奇门遁甲-lu 于 2009-12-7 13:21 发表
1,转发过程中,改变mac,还有IP首部的TTL和校验和会变;
2,
     在转发过程中会先查arp缓存的,如果没有才动用arp;
    arp的 FRAME的数据部分指的是arp首部;这个首部 的"目的mac"不是目的mac,
    而是 ...


这里有一个疑惑:
时间1:主机A的数据包到达路由器后,它将发一个“ARP请求FRAME”
时间2:当路由器收到主机B的”ARP应答FRAME”。

在时间2,路由器如何知道这个“ARP应答FRAME”对应的是时间1中收到的待处理“数据包”?即便在时间1你对“数据包”(路由器收到的从主机A发往主机B的数据包)进行了缓存,但如何将“ARP应答FRAME”得到的“下一跳”目的MAC与“该数据包”关联起来?

论坛徽章:
0
发表于 2009-12-07 16:35 |显示全部楼层

回复 #7 sherf 的帖子

有人知道吗?

论坛徽章:
0
发表于 2009-12-07 16:51 |显示全部楼层
原帖由 sherf 于 2009-12-7 15:59 发表


这里有一个疑惑:
时间1:主机A的数据包到达路由器后,它将发一个“ARP请求FRAME”
时间2:当路由器收到主机B的”ARP应答FRAME”。

在时间2,路由器如何知道这个“ARP应答FRAME”对应的是时间1中收到的 ...


??有人知道吗?

你们的路由表都是怎么建的?包括下一跳的 MAC地址 吗?

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
发表于 2009-12-07 17:34 |显示全部楼层
原帖由 sherf 于 2009-12-7 16:51 发表


??有人知道吗?

你们的路由表都是怎么建的?包括下一跳的 MAC地址 吗?



你这里明显有一个错误的概念,arp怎么和路由表搞到一块了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP