xiaohanliang
Network
Network
  • hi
  • LOWER
    • 0. arp决定下一跳
    • 1. dns决定终点
    • 2. [WIP]dns是不是真的有这些层级
  • MIDDLE
    • 0. 如何理解tcp握手的设计
    • 1. 诡异的tcp拆包现象
    • 2. tcp是一种高效的协议吗
    • 3. 为什么说没有人可以裸用tcp
    • 4. 尝试理解tcp的设计
    • 5. 连接建立@tcp调优
    • 6. 连接断开@tcp调优
    • 7. [WIP]拥塞控制@tcp调优
    • 8. 不需要这些花里胡哨的东西
    • 9. 怎么又是socket又是tcp
  • UPPER
    • 0. 为什么大家都用http
    • 1. [WIP]为什么http也keep-alive
    • 2. 如何保证pipeline的顺序到达
    • 3. 如何保证http的安全性
    • 4. 只不过https基于tls连接
    • 5. 怎么理解get/post
    • 6. http2为什么更快
    • 7. [WIP]内置加速的http3
    • 8. 怎样制造出实时效果-ws
    • 9. kcp是如何榨干你的带宽的
  • DEVICES
    • [302] 跳转到Linux网络设备
  • KUBERNETES NETWORK
    • [302] 跳转到容器网络
Powered by GitBook
On this page

Was this helpful?

  1. LOWER

0. arp决定下一跳

PrevioushiNext1. dns决定终点

Last updated 4 years ago

Was this helpful?

我们知道如果主机A想要通过TCP/IP与主机B通信, 他至少需要知道对方的mac地址消息之后才会去发消息, 那么这个mac地址从哪儿来呢? 可以来自自己的arp缓存, 如果自己的缓存没有, 他就会到处去问:

发送一个ARP请求(一个广播帧), 如果网内有人知道答案, 就会响应这个请求, 如上图所示, 有人就回复他说他知道103的mac地址是多少,

这个人是谁? 由上面可见, 这个人不是别人正是103他自己, 他自报家门的说了自己的mac. 看来局域网是真好, 你不知道对方地址的情况下, 吼一嗓子(ARP广播), 对方就能告诉你的自己的位置.

但如果对方跟自己不在同一个局域网呢? 如果你给外面人发消息, 那么这条消息会交由路由器帮你转发, 你这条消息的下一跳就是路由器, 因此这个时候ARP请求得到的是网关的地址