- 论坛徽章:
- 0
|
各位,请教一下,假设如下:
主机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 编辑 ] |
|