据我所知,当发生以下情况时LAN上的设备通过Internet将数据包/帧发送到另一个单独的LAN上的设备。
在发送端创建了一个带有目的地并发送IP的数据包
第一个问题:目标IP实际上是接收设备的LAN网关的IP地址吗?
然后它变成一个帧,该帧将到达LAN的网关-这发生在数据链路上层和帧上添加了MAC发送和目标地址
第一个问题:目标MAC地址-这是最终的
目标还是网关的目标?
然后将数据包/帧发送到Internet并路由(使用IP地址)到指向最终目标的下一跳
第二个问题:在每个跃点上,数据链路层是否将帧中的
目标MAC地址更改为下一
跃点的MAC地址?
包/ frame被路由到目标地址(这是网关)
第三个问题:一旦帧/数据包到达接收LAN的网关,则是目标MAC地址在
开关使用的框架中,以确保将其放置在正确的设备上?显然,这是
假定路由器没有修改目标MAC地址
,因为帧/数据包遍历了互联网-如果被修改,则
一旦接收网关接收到帧/数据包,它怎么知道
将其发送到哪里?
#1 楼
MAC地址是帧头中的第2层地址。第2层帧封装了第3层IP数据包。在第2/3层边界(例如路由器)剥离第2层帧。如果第3层数据包需要通过另一个第2层域转发,则使用新的第2层域中的MAC地址创建新的第2层帧,以封装第3层数据包。从概念上讲:
到路由器:
<L2 frame><L3 packet><L4 segment>PAYLOAD DATA</L4 segment></L3 packet></L2 frame>
在路由器中:
<L3 packet><L4 segment>PAYLOAD DATA</L4 segment></L3 packet>
从路由器:
<New L2 frame><L3 packet><L4 segment>PAYLOAD DATA</L4 segment></L3 packet></New L2 frame>
原始的第2层帧将包含发送方的源MAC地址和路由器接口中的目标MAC地址。该第二层域。
新的第二层帧将包含新第二层域中路由器接口的源MAC地址以及新第二层域中下一跳的目标MAC地址。第2层域。
第3层数据包将包含数据包始发者的第3层源IP地址以及最终的第3层目标的第3层目标地址。 br />
第2层MAC地址在沿要路由的第2层/ 3边界处被删除替换为新的源和目标的MAC地址,但第3层IP地址沿路径保持不变(某些例外,如NAT)。
#2 楼
第一个问题:目的地MAC地址-这是网关的最终目的地还是目的地?
MAC地址用于帧的第2层,并且第2层定义本地网络。因此,如果最终目标不在同一LAN上,则目标MAC地址就是网关的地址。
第二个问题:在每一跳上,数据链路层是否都会更改目标是帧中的MAC地址到下一跳的MAC地址吗?
是,如果最终目标的MAC地址在同一LAN上,则为该目标。
第三个问题:帧/数据包到达接收LAN的网关后,交换机使用该帧中的目标MAC地址以确保其到达正确的设备吗?显然,这是假定当帧/数据包遍历Internet时,路由器未修改目标MAC地址-如果对其进行了修改,则一旦接收网关接收到帧/数据包,它怎么知道将其发送到哪里? >
使用最终目标的IP地址及其路由(LAN地址和掩码),路由器可以推断出数据包的目标是否在同一LAN上。如果IP地址在LAN IP地址和掩码的范围内,则表明最终目标位于路由器所连接的LAN中。
#3 楼
只是想添加此动画来补充已接受的答案。(这个很棒的GIF来自这里。)