Stanford CS 144 Note 8 - Address Resolution Protocol (ARP) 地址解析协议

ARP的意义:使network layer能够从一个network address中找到与之相连的link address

(即如果给定一个IP packet,它的下个hop的address已知,应该把它送到哪个link)

为什么要用到ARP:因为每个layer的address包含不同的信息

一个IP address中包含了host,一个同在network layer的destination

而一个link address中包含network card,以及传输的device信息

背景

对于gateway和destination的IP address来说

要使192.168.0.1和171.43.22.5在同一个网络里 需要的net mask是128.0.0.0

(因为128.0.0.0 & 192.168.0.1 -> 128.0.0.0,而128.0.0.0 & 171.43.22.5 -> 128.0.0.0)

但是这样的话 意味着source 的IP 192.168.0.5也在这个network里

因此我们往往看到的gateway有多个interface

 当source generate了一个IP packet,它的source address是192.168.0.5,destination address是171.43.22.5 

Node A会确认source和destination在不在同一个网络里(不在,net mask indicate that 不符合)

那么Node A需要把packet送到gateway,即192.168.0.1

通过把一个network layer destination是171.43.22.5,而link layer destination是0:18:e7:f3:ce:1a的packet

从A到gateway的packet

Network layer source:192.168.0.5      Link layer source:00:13:72:4c:d9:6a

Network layer destination:171.43.22.5    Link layer destination:0:18:e7:f3:ce:1a

因为有encapsulation

则可理解为 从A到B的IP packet,encapsulated在一个从A到gateway左接口的link layer frame中

同理从gateway到B时,gateway也会将这个IP packet放在一个从gateway右接口到B的link layer frame中

ARP的使用

也就是说 当我们要发送一个IP packet到gateway,需要知道它的接口的link-layer address(上面例子中的0:18:e7:f3:ce:1a)

而我们只知道它的network-layer address(IP address)

这里就需要 Address Resolution Protocol 来求出与它的network-layer address相对应的link-layer address

多个Node以cache的形式储存network-layer address到link-layer address的mapping

如果其中一个Node需要把packet发送到一个未知映射的address,会向其他Node给出request,而拥有那个address映射的Node会reply

(requester将要求发送到一个link-layer广播address,回复者再单独将address返回给前者)

*每个section内都是Big Endian(Network Order)

 

回到之前的例子

 

对于ARP request

Hardware:1(代表Ethernet)

Protocol:0x0800(代表IP)

Hardware length:6(48-bit Ethernet)

Protocol length:4(32-bit IP address)

Opcode:1(代表request)

Source hardware address:68:a8:6d:05:85:22(requester的Ethernet address)

Source protocol address:192.168.0.5(requester的IP address)

Destination hardware address: packet要想找的

Destination protocol address:192.168.0.1(client想找到的mapping)

Client将这个frame发送到Ethernet

对于ARP reply

Hardware:1(代表Ethernet)

Protocol:0x0800(代表IP)

Hardware length:6(48-bit Ethernet)

Protocol length:4(32-bit IP address)

Opcode:2(代表reply)

Source hardware address:0:18:e7:f3:ce:1a(目标gateway的Ethernet address)

Source protocol address:192.168.0.1(目标gateway的IP address)

Destination hardware address:68:a8:6d:05:85:22(requester的Ethernet address)

Destination protocol address:192.168.0.5(requester的IP address)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值