链路层和局域网

链路层特性

  • Framing,链路层发送的所有数据以帧的形式发送。
  • Link access,链路一端只有一个发送方,另一端只有一个接收方。
  • Reliable delivery,看协议的,有些协议通过确认和重传确保可靠,有些发现帧有问题就直接丢弃。
  • 差错检测和纠正:使用校验码来操作。

差错检测和纠正

  • 奇偶校验:能发现错,不能纠正(不保证一定能发现错)。二维偶校验能纠正。
  • 校验和,checksum。运行速度快,出错率比奇偶校验低。
  • CRC,出错率更低,也更复杂。

多路访问链路和协议

点对点链路:就是点对点

广播链路:一点对多,一个发送方,多个接收方。

在一个信道中,多个节点可能会同时传输帧,当发生这种情况,所有节点同时接到多个帧,也就是说多个帧在同一个接收方出发生碰撞。一旦碰撞了,接收方就等于啥都没有收到。所以链路层提供了多种信道划分协议。

ARP

帧结构

帧结构

  • Preamble:用于同步帧,不然网卡怎么知道什么时候开始了一个帧。
  • Dest address:目的地址,是 MAC 地址
  • Source address:源 MAC 地址
  • Data:数据,上层数据 payload。
  • CRC:校验码

每一个网卡拥有一个独一无二的 MAC 地址,厂商会从国际组织买到指定 MAC 地址的前缀,有点类似 IP 的 AS。

假设现在 A 机器发送 IP 包到 B 机器。A 和 B 两台机器通过交换机连接,属于同一内网。

  1. A 机器要构造帧,但是不知道 B 机器的 MAC 地址,怎么办?
  2. A 机器发送 ARP 请求,以此知道了 B 机器的 MAC 地址,然后构造成功 frame,发送过去。
  3. 交换机里面一有个 ARP 表,里面有哪个接口对应的哪个 MAC 地址。
ARP 表

如何实现ARP请求?

  1. 首先每台主机和路由器都有一个 ARP 表,相当于缓存,查询的时候先查缓存。
ARP 表

2. 先查主机本身的 ARP 表,没有的话构造一个 ARP 请求,发送到了路由器。ARP 请求的目标 MAC 地址为 FF-FF-FF-FF-FF-FF ,为广播 MAC 地址。所有网卡都会接收的意思。
3. 当网卡接收了此 ARP 请求,看看里面的 IP 是不是自己的 IP,如果是自己的 IP,则构造一个 ARP 回复,此时 ARP 回复里面的 source address 会携带上自己的 MAC 地址。这样对方就知道了这个 IP 对应的 MAC 地址是啥的。(同时交换机和主机会进行缓存的)

跨子网的 ARP 差不多,只不过要过一次网关而已。

交换机

交换机本身做了很多优化,假定 DD-DD-DD-DD-DD-DD 的 frame 从交换机 x 口到达,有三种可能:

  1. 表中没有对于DD-DD-DD-DD-DD-DD的表项。在这种情况下,交换机向除接口 x 外的所有接口转发该帧的副本。换言之,如果没有对于目的地址的表项,交换机广播该帧。
  2. 表中有一个表项将DD-DD-DD-DD-DD-DD与接口 x 联系起来(就是自己发自己)。无须将该帧转发到任何其他接口,交换机通过丢弃该帧执行过滤功能即可。
  3. 表中有一个表项将DD-DD-DD-DD-DD-DD与接口 y != x 联系起来。在这种情况下, 该帧需要被转发到与接口 y相连的局域网网段。交换机直接转发从 x 到 y。(这种好处避免 ARP 请求发送到整个内网里面,不会被别人嗅探,相当于点对点的发送,也可以叫流量隔离)。
交换机 VS 路由器,交换机处理更加简单,所以更快
对比
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇